首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将多个语句传递给sqlcmd?

如何将多个语句传递给sqlcmd?
EN

Database Administration用户
提问于 2015-04-22 07:02:26
回答 1查看 14.9K关注 0票数 8

为了实现某些任务的自动化,而不是为所有事情触发SSMS,我试图编写一个批处理文件来运行这些语句,当我将它们粘贴到sqlcmd提示符中时,这些语句就能很好地工作。他们只需检查镜像状态,挂起镜像,然后再检查状态。(为了最小化依赖关系并简化从一台服务器到另一台服务器的迁移,我希望将所有命令保存在一个文件中。)

代码语言:javascript
复制
select cast(DB_NAME(database_id) as char(30)),
        cast(mirroring_state_desc as char(15))
from sys.database_mirroring
where mirroring_state_desc is not null;
go;

ALTER DATABASE db1 SET PARTNER SUSPEND;
ALTER DATABASE db2 SET PARTNER SUSPEND;
go;

select cast(DB_NAME(database_id) as char(30)),
        cast(mirroring_state_desc as char(15))
from sys.database_mirroring
where mirroring_state_desc is not null;
go;

所以,我写了这个批处理文件:

代码语言:javascript
复制
SETLOCAL ENABLEDELAYEDEXPANSION
SET @SQLSTRING=select cast(DB_NAME(database_id) as char(30)), ^
        cast(mirroring_state_desc as char(15)) ^
from sys.database_mirroring ^
where mirroring_state_desc is not null; ^
go ^
^
ALTER DATABASE MSCRM_CONFIG SET PARTNER SUSPEND; ^
ALTER DATABASE XeroxGHSCRMTest_MSCRM SET PARTNER SUSPEND; ^
go ^
^
select cast(DB_NAME(database_id) as char(30)), ^
        cast(mirroring_state_desc as char(15)) ^
from sys.database_mirroring ^
where mirroring_state_desc is not null; ^
go
::
echo.
sqlcmd -S AGABQ0VMCRMDB01\PROD_CRM -E -Q "%@SQLSTRING%"

但是,如果在"go“命令中出现语法错误,则会失败。我试过“去”和“去”,没有运气。

任何提示或指导,以使这项工作将不胜感激。

EN

回答 1

Database Administration用户

发布于 2015-04-22 16:39:27

彻底摆脱。sqlcmd只在交互式提示符中或在使用-i开关读取文件时才能识别它。如果某些语句需要在单独的批处理中,请使用EXEC包装它们。示例:EXEC(“创建视图SomeView”)

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/98505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档