An insert statement run on SQL2012 server to a linked server (SQL2000 destination) is slow. Test script is below.
-- Run on destination server (SQL2000)
CREATE TABLE RemoteTable(ID INT Identity(1,1), String CHAR(200))
DECLARE @i INT, @String Char(200);
SELECT @i = 1, @String = Replicate('a',200);
SET NOCOUNT ON
WHILE @i <= 10000
BEGIN
INSERT INTO dbo.RemoteTable(String) VALUES (@String);
SELECT @i = @i + 1;
END;
-- Run on source server (SQL2012)
INSERT INTO [DestinationServer\SQL2000].DestDB.dbo.RemoteTable(String)
SELECT 'b'
Results:
If RemoteTable has few records (< 100,000), execution of insert statement on SQL2012 is < 1 sec. If table has 1 mil records, insert takes 4 secs. If table has 8 mil records (like the production table I'm really testing this for), insert takes 25 secs.
If insert is executed on another SQL2000 server, exec time is < 1 sec regardless of destination table size.
The linked server 'DestinationServer\SQL2000' on SQL2012 is using provider 'Microsoft OLE DB Provider for ODBC Drivers'.
I don't understand why. Can anyone shed any light on this? Thanks very much.