1

我正在尝试从 windows文件运行多个SQLCMD语句(在 SQL Server 2008 中存档表并创建恢复脚本) 。.bat我的脚本的工作方式就像我首先执行 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>,并没有执行我的下一条语句。进入 Quit 后,我​​的下一条语句将被执行,但在输出文件中我看到身份验证无效错误。我不想对每个 sqlcmd 语句进行 sql 身份验证。

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

4

1 回答 1

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 环境变量SQLCMDUSERSQLCMDPASSWORD

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

只需设置SQLCMDUSER, SQLCMDPASSWORD(也许是SQLCMDSERVER),然后调用批处理。这样,批处理不需要包含任何硬编码密码。

于 2012-11-20T12:23:35.557 回答