我需要在一臺服務器上創建一個觸發器,以便在某個表更改時觸發,之後我必須對數據進行一些計算,以便導入(不是隻是將其複製到另一臺服務器上的另一個表中)。當觸發器觸發時,將數據從不同的SQL Server導入到另一臺服務器
此外,我只想導入未通過早期觸發器導入的新數據。
我該怎麼辦?
我需要在一臺服務器上創建一個觸發器,以便在某個表更改時觸發,之後我必須對數據進行一些計算,以便導入(不是隻是將其複製到另一臺服務器上的另一個表中)。當觸發器觸發時,將數據從不同的SQL Server導入到另一臺服務器
此外,我只想導入未通過早期觸發器導入的新數據。
我該怎麼辦?
您可以在兩個SQL Server之間創建鏈接服務器,以便將數據從一個發送到另一個。
要創建一個鏈接服務器,您需要使用系統存儲過程sp_addlinkedserver,您也可以通過SQL Server Management Studio執行此操作。我相信。
下面是一個例子,你可以嘗試:
EXECUTE sp_addlinkedserver @server=N'serverip/hostname', @provider=N'SQLNCLI'
如果您可以查看鏈接的服務器已被查詢sys.servers
創建可以查詢語法如下鏈接的服務器數據庫:
SELECT x
FROM [linkedservername].[database].[schema].[table]
的更多信息:http://msdn.microsoft.com/en-us/library/ff772782.aspx
用於觸發器僅更新以前未處理的數據。有很多方法可以做到這一點。如果您的源表格包含「更新日期」類型列,則可以基於此列來完成。或者,如果你的表有一個標識列,並且你想增量複製數據,你可以在表中存儲每次都複製的'last id',然後在下次運行觸發器時,你可以告訴它從那個開始id + 1這種方式行只傳送一次。
您使用的是哪個版本的SQL Server? – gangreen 2012-03-03 19:22:12
數據是否需要實時注入到其他服務器?如果可能有延遲,你的容忍度是多少? 5秒?一分鐘? – 2012-03-03 20:03:40
SQL Server 2008R2。我們可以忍受10秒的延遲。 – synepis 2012-03-04 01:45:40