zoukankan      html  css  js  c++  java
  • 用SQL语句将远程SQL Server数据库中表数据导入到本地数据库相应的表中

    一、方法一

    访问不同电脑上的数据库(远程访问,只好联好网就一样),如果经常访问或数据量较大,建议用链接服务器方法。

    1、创建链接服务器

    exec sp_addlinkedserver ‘srv_lnk’,”,’SQLOLEDB’,'远程服务器名或IP地址’
    exec sp_addlinkedsrvlogin ‘srv_lnk’,'false’,null,’用户名’,'密码’
    exec sp_serveroption ‘srv_lnk’,'rpc out’,'true’  –这个允许调用链接服务器上的存储过程
    go

    2、使用示例

    –查询示例
    select * from srv_lnk.数据库名.dbo.表名

    –导入示例
    select * into 表 from srv_lnk.数据库名.dbo.表名

    go

    3、若不再使用时,删除链接服务器

    exec sp_dropserver ‘srv_lnk’,'droplogins’

    二、方法二

    如果只是临时访问,可以直接使用openrowset和opendatasource。

    1、示例1

    –查询示例
    select * from openrowset(‘SQLOLEDB’
    ,’sql服务器名’;'用户名’;'密码’,数据库名.dbo.表名)

    –导入示例
    select * into 表 from openrowset(‘SQLOLEDB’
    ,’sql服务器名’;'用户名’;'密码’,数据库名.dbo.表名)

    2、示例2(此示例使用测试正常)

    insert 数据库名称.dbo.表
    select * from
    from  openrowset(‘MSDASQL’,
    ‘DRIVER={SQL Server};SERVER=远程服务器地址;UID=用户名;PWD=密码’,表) AS a

    三、相关问题

    问:当导入的数据量很大,而网络突然中断,会不会出现问题?

    答:中断的话,就等于什么也没做,也就是事务回滚,重新运行。

    四、随后的问题

    问:由于在表中,通常都定义了自增量列及主键,而自增量列还进行了关连。由于在倒表时,自增量列不随原表变化,就造成了关联关系的丢失,通常的做法是:

    SET IDENTITY_INSERT 表名 ON
    insert into 表名(字段,字段,字段) values (64,’han’,'guo’)
    SET IDENTITY_INSERT 表名OFF

    即使用“SET IDENTITY_INSERT 表名 ON”将自增量关闭,但是,需要注意的是,当该表中没有自增量字段时,使用该命令会产生一个错误。

    因此,在没有自增量字段的表中进行“插入”操作时,请不要使用“SET IDENTITY_INSERT 表名 ON”。

  • 相关阅读:
    【转】VS2013编译libjpeg库
    玩转百度地图(二)之画圆,高德地图、搜搜地图、搜狗地图等稍微修改即可
    JAVA自动生成正则表达式工具类
    S2SH商用后台权限系统第三讲
    自定义表单验证指令
    关于input/textarea提交内容空格回车转换问题,以及ng-model去除空格问题
    angular ui-router 缓存问题
    ionic 发送请求返回一直都是404
    ionic中获取坐标方法
    ionic的scroll的使用出现的问题
  • 原文地址:https://www.cnblogs.com/lgx5/p/9062509.html
Copyright © 2011-2022 走看看