Bu paylaşımda, büyük verilerde aktarım yapılırken yarıda kesilmesi durumlarında en son aktarım yapılan verinin nerede kaldığını bulmak için ara bir tablo oluşturup, sürekli kontrol ederek aktarımın yapılmasını sağlamaktır.
1 2 3 4 5 6 7 8 9 10 11 12 |
–Create Destination Table USE [master] CREATE TABLE [dbo].[TransferDataPursuit]( [Id] [int] NOT NULL, [VisitDate] [datetime] NULL ) ON [PRIMARY] GO |
1 2 3 4 5 6 7 8 9 10 |
–Create Pursuit Table (For LinkedServer Instance) CREATE TABLE [dbo].[TransferPursuit]( [FirstId] [int] NULL, [LastId] [int] NULL ) ON [PRIMARY] GO |
1 2 3 4 5 6 7 |
Insert Into [dbo].[TransferPursuit] values (0,0) USE [master] GO |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
declare @a int=(select FirstId from [dbo].[TransferPursuit]) declare @b int=(select LastId from [dbo].[TransferPursuit]) declare @c int=(select top 1 Id from [LinkedServer\InstanceName].[master].[dbo].[TransferData] with(nolock) order by Id desc) /*We take the LastId for finished at Source table*/ while @a < @c begin SET IDENTITY_INSERT [master].[dbo].[TransferDataPursuit] ON insert into [master].[dbo].[TransferDataPursuit] –Destinaton Table select * from [LinkedServer\InstanceName].[master].[dbo].[TransferData] where Id > @a and Id <= @b –Source Table SET IDENTITY_INSERT [master].[dbo].[TransferDataPursuit] OFF set @a = @b update [dbo].[TransferPursuit] set FirstId = @b set @b = @b + 1 –How Much Increase b? update [dbo].[TransferPursuit] set LastId = @b end |