mssql借助链接服务器进行数据快速迁移

在工作中,遇到了一个任务,需要将A数据库的数据迁移到B数据库,两个数据库的数据结构是一样的。B数据库已经在相当数量的数据了,故而不能通过复制数据库的方式来实现。

 旧方法

    在对数据迁移的时候,一开始使用的是以下方法:

(1)使用SSMS的”生成和发布脚本”功能,将A数据库的数据导出成sql脚本。

 

脚本类似于:

INSERT [dbo].[region] ([id], [region_id], [region_name], [region_code]) VALUES (10649, 0, N'其他', N'0000000')

INSERT [dbo].[region] ([id], [region_id], [region_name], [region_code]) VALUES (1, 2, N'成都', N'1398098')

INSERT [dbo].[region] ([id], [region_id], [region_name], [region_code]) VALUES (2, 2, N'成都', N'1360804')

INSERT [dbo].[region] ([id], [region_id], [region_name], [region_code]) VALUES (3, 2, N'成都', N'1398198')

INSERT [dbo].[region] ([id], [region_id], [region_name], [region_code]) VALUES (4, 2, N'成都', N'1398195')

INSERT [dbo].[region] ([id], [region_id], [region_name], [region_code]) VALUES (5, 2, N'成都', N'1355114')

INSERT [dbo].[region] ([id], [region_id], [region_name], [region_code]) VALUES (6, 2, N'成都', N'1390807')

INSERT [dbo].[region] ([id], [region_id], [region_name], [region_code]) VALUES (7, 2, N'成都', N'1370804')

INSERT [dbo].[region] ([id], [region_id], [region_name], [region_code]) VALUES (8, 2, N'成都', N'1398071')

INSERT [dbo].[region] ([id], [region_id], [region_name], [region_code]) VALUES (9, 2, N'成都', N'1365808')

 (2)将生成sql脚本在B数据库上执行。

问题与困难

采用这种方式应对几千条数据还是没有问题的,但是当数据达到10万的时候,速度真是慢得令人发指。

新方法

通过探索,自创了一种新方法。

(1)使用链接服务器,在B数据库所在数据库服务器上建立一个链接服务器,指向A数据库。这样一来,在B数据库中就能直接操作A数据库了。

(2)使用insert into() select form 语句,直接将A数据库中查到的数据插入到B数据库中。

将上面的脚本改造成类似于:

 1 INSERT  INTO [dbo].[region]
 2         ( [id] ,
 3           [region_id] ,
 4           [region_name] ,
 5           [region_code]
 6         )
 7         SELECT  [id] ,
 8                 [Bundling] ,
 9                 [region_id] ,
10                 [region_name] ,
11                 [region_code]
12         FROM    [Xianjie].[A].[dbo].[region]

迁移的速度得到了百倍以上的提升。哈哈

原文地址:https://www.cnblogs.com/dehai/p/4889775.html