如何在执行SQL身份验证后在Windows批处理文件中运行多个sqlcmd语句

时间:2012-11-20 11:33:41

标签: sql-server sqlcmd

我正在尝试从windows SQLCMD文件运行多个.bat语句(在SQL Server 2008中存档表并创建还原脚本)。我的脚本就像我首先执行SQL身份验证,然后输入SQL脚本来输出恢复文件

sqlcmd -S <Server name>\<instance> -U user
sqlcmd -i ArchiveTable1.sql -o RestoreTable1.sql
sqlcmd -i ArchiveTable2.sql -o RestoreTable2.sql
sqlcmd -i ArchiveTable3.sql -o RestoreTable3.sql

问题是在sqlcmd认证之后,出现提示1&gt;并且不执行我的下一个陈述。在进入Quit时,我的下一个语句被执行但在输出文件中我看到身份验证无效错误。 我不想对每个sqlcmd语句进行sql身份验证。

如果我的方法存在问题,有人可以指导我使用其他设计。

1 个答案:

答案 0 :(得分:1)

三个sqlcmd执行,三个身份验证:

sqlcmd -S <Server name>\<instance> -U user -i ArchiveTable1.sql -o RestoreTable1.sql
sqlcmd -S <Server name>\<instance> -U user -i ArchiveTable2.sql -o RestoreTable2.sql
sqlcmd -S <Server name>\<instance> -U user -i ArchiveTable3.sql -o RestoreTable3.sql
  

我不想对每个sqlcmd语句进行sql身份验证

你想要的东西很少。你必须做正确的事。如果您有理由满足您的不寻常要求,请清楚说明问题,不要提供解决方案并要求我们使其发挥作用。

如果您想避免批量重复用户信息和密码,更重要的是如果您想避免将这些密码分批放置,请使用sqlcmd环境变量SQLCMDUSER and SQLCMDPASSWORD

  

SQLCMDPASSWORD环境变量允许您为当前会话设置默认密码。因此,密码不必硬编码到批处理文件中。

只需设置SQLCMDUSERSQLCMDPASSWORD(可能还有SQLCMDSERVER),然后调用批处理。这样批处理不需要包含任何硬编码密码。