我正在尝试从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身份验证。
如果我的方法存在问题,有人可以指导我使用其他设计。
答案 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
环境变量允许您为当前会话设置默认密码。因此,密码不必硬编码到批处理文件中。
只需设置SQLCMDUSER
,SQLCMDPASSWORD
(可能还有SQLCMDSERVER
),然后调用批处理。这样批处理不需要包含任何硬编码密码。