我正在编写一个针对SQL Server 2008的SQL脚本,其中我在开头放置了一个USE语句来指定应该运行脚本的数据库:
use [my_database]
我有不同的环境,每个环境都有相同的数据库,例如开发(dev)、质量保证(qa)、生产(prod),是否有办法在脚本中指定脚本所属的环境,例如通过服务器名称或IP地址或其他机制。
我正在编写一个针对SQL Server 2008的SQL脚本,其中我在开头放置了一个USE语句来指定应该运行脚本的数据库:
use [my_database]
我有不同的环境,每个环境都有相同的数据库,例如开发(dev)、质量保证(qa)、生产(prod),是否有办法在脚本中指定脚本所属的环境,例如通过服务器名称或IP地址或其他机制。
:CONNECT myserver
语句指定服务器。你可以通过点击以下图片中的选项来切换到命令模式。
:CONNECT devserver
use [my_database]
SELECT * FROM my_table
您甚至可以在执行期间使查询窗口切换服务器
:CONNECT devserver
use [my_database]
SELECT * FROM my_table
GO
:CONNECT uatserver
use [my_database]
SELECT * FROM my_table
要连接特定的用户和密码,您可以按以下方式指定:
:CONNECT devserver -U myUser -P myPassword
use [my_database]
SELECT * FROM my_table
实际上,您可以指定许多选项,这些选项在msdn文档中得到了很好的记录。
:CONNECT devserver -U user -P password
命令。一旦我的更新停止出错,我将把它添加到答案中。 - Filip De Vos那是一个连接设置,而不是脚本内的参数。
如果需要,您可以通过批处理文件或PowerShell脚本在不同的环境下运行同一脚本,或者您可以设置链接服务器,但您不能仅仅说
USE SomeOtherServer
这也涉及到安全和网络问题。
EXEC MyDatabase.dbo.mysp_DoSomething --Dev Server; no server prefix needed since that's where we are
EXEC QA.MyDatabase.dbo.mysp_DoSomething --QA Server
EXEC Prod.MyDatabase.dbo.mysp_DoSomething --Prod server
等等。