目前,我正在根据一些业务规则在一个数据库之间进行一些数据迁移。
我正在写这个巨大的脚本,我正在多次引用这两个数据库。问题是这个数据迁移目前正在开发中,在某些时候我想要在生产中使用两个不同的数据库。
而不是直接引用数据库名称
Insert Into Database2.dbo.Table1
Select * from Database1.dbo.Table1
我想以某种方式在脚本开头引用数据库。这样我就可以在更改数据库时更改一个变量。
这可能吗?
答案 0 :(得分:9)
:setvar dbfrom database1
:setvar dbto database2
Insert into [$(dbto)].dbo.Table1
select * from [$(dbfrom)].dbo.Table2;
此语法适用于sqlcmd.exe(来自脚本)以及Management Studio,请参阅Editing SQLCMD Scripts with Query Editor。脚本还允许您从命令行设置变量:
sqlcmd /E /S server /i script.sql /v dbfrom=database1 /v dbto=database2
我还有一个library that allows you to use sqlcmd variables and scripts from applications可用作Google代码的来源。