在执行之前确保脚本中的sql server instance db是否正确?

时间:2012-11-01 19:36:30

标签: sql sql-server

如何在我的.sql脚本中指定它只对我的localhost sql server db实例执行而不是在另一个打开的连接上执行我的集成或测试环境呢?

dbsetupscript.sql

use myDB

--WHAT SAFE GAURD CAN i PUT HERE TO ENSURE THAT THIS SCRIPT CAN ONLY BE EXECUTED VIA MY   
-- LOCAL ENVIRONMENT BEFORE I START DELETING TABLES, ETC?

delete MotherTable
-- delete other tables and insert simulated production data 

3 个答案:

答案 0 :(得分:2)

您可以尝试使用 SQLCMD模式。您可以在 SSMS 中启用此功能,方法是转到查询菜单,然后选择 SQLCMD模式

SQLCMD模式允许您定义变量,连接到一个服务器运行一些代码,连接到第二个服务器运行一些代码等。您甚至可以弹出并运行DOS /命令行命令。

您可以在此处找到更多语法信息:http://msdn.microsoft.com/en-us/library/ms174187.aspx

以下是一个让您入门的示例:

-- which server do you want to connect to?
:setvar MyServer ServerName\InstanceName

-- connect to that server
:connect $(MyServer)

-- run your query
select @@servername, @@version
go

答案 1 :(得分:1)

尝试@@ServerName

代码应该是这样的

IF (@@ServerName =  'localhost') 
BEGIN
    delete MotherTable
    -- delete other tables and insert simulated production data 
END
ELSE 
    PRINT 'Wrong instance'

答案 2 :(得分:1)

if
(
Select CASE when HOST_NAME()='Bummi-Mobi' then 1 else 0 end + Case when DB_NAME()='test' then 1 else 0 end
)<>2
raiserror('Wrong Database', 20, -1) with log