SQL Server - 计划作业将数据从一个数据库获取到另一个数据库

时间:2011-12-28 19:07:25

标签: sql-server sql-server-2008

我打算在我的数据库上安排一份工作,而且基本上每天下午5:00运行。

数据库1:TestOne TableName:MyTable

数据库2:TestTwo TableName:MyTable

我的日程安排工作位于TestOne和插入MyTable,值已经存在 来自TestTwo.MyTable。

有没有可用的类似的例子?这是否像在TestTwo.MyTable上从TestOne.MyTable访问权限获取用户一样简单?

感谢您的投入。

2 个答案:

答案 0 :(得分: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 - 如果您的表具有不同的架构,则需要在我的查询中更改它。

答案 1 :(得分: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;