首页 Sql Server跨服务器复制数据

Sql Server跨服务器复制数据

Sql Server跨服务器复制数据

本次把整个博客都新建项目重写一遍了,所以需要把旧用户数据插入到新的里面,因此设计跨服务器复制数据。

一般我们同库不同表之间复制数据会使用以下两种方式复制表数据

 select into table1 from table2 
 和
 insert into table select table2

而我这里的区别只是跨服务器,所以需呀远程连接其中一台数据库

通过以下代码建立服务器连接

EXEC sp_addlinkedserver@server='blog', -- 这是链接服务器的别名 可以任务取名
@srvproduct='',
@provider='SQLOLEDB',
@datasrc='192.168.1.183' --这是服务器所在连接的ip

再通过以下代码 建立登录映射

EXEC sp_addlinkedsrvlogin '上面建立连接使用的别名','false',NULL,'sql登录账号','sql登录密码'

再通过以下代码 测试是否连接成功 如果连接成功则可以查询数据

select * from blog.Blogs.dbo.Users -- 这里前一个blog是上面建立连接使用的别名 第二个Blogs是数据库名 Users是表名

再通过类似以下的select into代码即可复制数据

insert into table1(field1,field3,field5...) select field2, field4, field6... from blog.Blogs.dbo.Users

如果不再使用该连接 则删除其

Exec sp_droplinkedsrvlogin blog,Null --blog是上面建立连接使用的别名Exec sp_dropserver blog --blog是上面建立连接使用的别名

衍生点 : 因为我本次迁移数据是会涉及主键一次复制的所以会遇到 以下异常

仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'User'中的标识列指定显式值

所以需要通过以下代码开启主键插入

set IDENTITY_INSERT BlogUser on

关闭是off set IDENTITY_INSERT BlogUser off

除另有声明外,本文章Sql Server跨服务器复制数据采用 知识共享(Creative Commons) 署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议 进行许可。

评论
目录