我打算在我的数据库上安排一份工作,而且基本上每天下午5:00运行。
数据库1:TestOne TableName:MyTable
数据库2:TestTwo TableName:MyTable
我的日程安排工作位于TestOne和插入MyTable,值已经存在 来自TestTwo.MyTable。
有没有可用的类似的例子?这是否像在TestTwo.MyTable上从TestOne.MyTable访问权限获取用户一样简单?
感谢您的投入。
答案 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;