我计划在我的一个数据库上安排一个作业,它基本上每天下午5点运行。
数据库1:teststone表名:MyTable
数据库2:TestTwo
我的调度作业驻留在TestOne中,并插入到MyTable中,值为TestTwo.MyTable.
有没有类似的例子?这是否与从TestOne获得用户一样简单?对TestTwo.MyTable的访问权限?
谢谢你的建议。
用户当然需要对两个数据库都有足够的权限(从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
-如果你的表有不同的模式,你需要在我的查询中改变它。
一些简单的场景(假设- i可以截断):
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;