2011-12-28 35 views
0

我計劃在一個數據庫上安排一項工作,並且基本上每天在下午5:00運行。SQL Server - 計劃作業從一個數據庫獲取數據到另一個數據庫

數據庫1:TestOne表名:MyTable的

數據庫2:TestTwo表名:MyTable的

我的日程工作駐留在TestOne和插入到MyTable的和值有 來自TestTwo.MyTable。

有什麼可用的例子可以做類似的事情嗎?這與從TestTwo.MyTable的TestOne.MyTable訪問權限中獲取用戶一樣簡單嗎?

我很欣賞你的意見。

+0

提供一點信息 - 主表的大小,如果您需要增量更新,是否可以刪除目標表(任何FKeys)中的所有數據? – 2011-12-28 19:12:59

+0

你在使用SSIS嗎?數據庫是在同一臺服務器上還是不同的服務器上? – thursdaysgeek 2011-12-28 19:21:24

+0

@Oleg Dok - 目前可以刪除和重新創建表格。我建議增量更新。 – kalls 2011-12-28 19:25:14

回答

0

一些簡單的情況下(假設 - 我可以做截斷):

truncate table TestOne.dbo.MyTable 
insert TestOne.dbo.MyTable(fieldslist) 
select fieldslist from TestTwo.dbo.MyTable 

或使用合併

(更像是漸進的,但需要一個獨特的鍵):

MERGE TestOne.dbo.MyTable T 
USING (SELECT fieldslist from TestTwo.dbo.MyTable) S 
ON T.UniqueKey = S.UniqueKey 
WHEN MATCHED THEN UPDATE SET 
    field1=S.field1, 
    ... 
WHEN NOT MATCHED THEN 
    insert (fieldslist) 
    VALUES(fieldslist) 
WHEN NOT MATCHED BY SOURCE DELETE; 
1

當然,用戶需要在兩個數據庫上擁有足夠的權限(從TestTwo.MyTable讀取/寫入TestOne.MyTable)。

您需要的唯一其他事情是從另一個數據庫訪問一個數據庫的正確語法。
如果作業駐留在TestOne,查詢有看起來像這樣(從我的頭,未經測試的):

use TestOne 

insert into MyTable (Column1, Column2, ...) 
select Column1, Column2, ... 
from TestTwo.dbo.MyTable 

重要的訪問其它數據庫時是順序:Database.Schema.Table
在我的例子( TestTwo.dbo.MyTable)我使用了默認架構dbo - 如果您的表具有不同的架構,則需要在我的查詢中更改該架構。

相關問題