一.使用情境:
1) 用Job定時同步兩個資料庫資料時,作為Job的執行指令碼;
2) 手工同步資料時的執行指令碼。
二.具體樣本:
USE LocalDatabaseName;
GO
--建立連結的伺服器
IF NOT EXISTS (select * from sys.servers where name = 'RemoteServer')
BEGIN
EXEC sp_addlinkedserver 'RemoteServer', '','SQLNCLI', 'xx.xx.xx.xx'
END
go
--登入連結的伺服器
EXEC sp_addlinkedsrvlogin 'RemoteServer', 'false', null, 'RemoteServer username', 'RemoteServer password'
go
--將本地表最新資料同步到連結的伺服器對應表
INSERT INTO OPENQUERY([RemoteServer], 'SELECT * FROM RemoteDatabaseName.dbo.RemoteTableName')
SELECT r.* FROM LocalTableName r
WHERE r.id > (
SELECT maxID FROM OPENQUERY([RemoteServer], 'SELECT MAX(id) maxID FROM RemoteDatabaseName.dbo.RemoteTableName')
)
go
--退出連結的伺服器
EXEC sp_droplinkedsrvlogin 'RemoteServer', null
go
--刪除連結的伺服器
EXEC sp_dropserver 'RemoteServer', 'droplogins'
Go
三.相關命令參考:
sp_addlinkedserver (Transact-SQL)
http://msdn.microsoft.com/zh-cn/library/ms190479.aspx
sp_addlinkedsrvlogin (Transact-SQL)
http://msdn.microsoft.com/zh-cn/library/ms189811.aspx
sp_droplinkedsrvlogin (Transact-SQL)
http://msdn.microsoft.com/zh-cn/library/75a4a040-72d5-4d29-8304-de0aa481ad4b
sp_dropserver (Transact-SQL)
http://msdn.microsoft.com/zh-cn/library/ms174310.aspx
OPENQUERY (Transact-SQL)
http://msdn.microsoft.com/zh-cn/library/ms188427.aspx