无法通过批处理文件使用SQLCMD连接到SQL Server

时间:2015-01-07 16:58:20

标签: sql-server batch-file sqlcmd

我正在安排Windows中的任务每晚连接到一个场外SQL Server以运行查询并将结果保存为.CSV文件。我可以使用SSMS连接到SQL Server而没有任何问题。我可以在命令提示符下使用SQLCMD手动连接到SQL Server,完全没有问题。我的问题是我不能在批处理文件中使用SQLCMD。我正在使用的语法是......

sqlcmd -S ServerName \ InstanceName -d DatabaseName -U UserName -P Password

如果我手动将其输入我的命令窗口,它就像一个冠军。

如果我尝试使用批处理文件进行连接,则会收到错误消息“Msg 18456,状态1,Server ServerName \ InstanceName,第1行登录失败,用户'UserName'。

我也尝试右键单击批处理文件并以管理员身份运行但没有成功。提前感谢您的帮助。

特拉维斯

更新

我刚刚发现,如果从批处理文件中取出-P Password参数,系统将提示您输入密码。输入密码后,我已成功登录。从批处理文件将密码传递给SQL服务器是否有限制?由于这是一个不在我们网络上的异地服务器,我无法使用Windows身份验证。

3 个答案:

答案 0 :(得分:7)

我有一个类似的问题,即sqlcmd在手动输入时在命令窗口中工作,但不在批处理文件中。

我解决的是我的密码包含%。在批处理文件中,这是一个特殊字符,它没有被回显到命令窗口。

解决方案是使用%%来逃避它。

答案 1 :(得分:1)

在记事本上试试这个

sqlcmd -S (IP OR SERVER)\SQL2008 -d database -U user -P pass -q "SELECT * FROM TABLE" 

并将其保存为.bat

和Windows身份验证

sqlcmd -S (IP OR SERVER)\SQL2008 -d database -E -q "select * from foliosiac"

答案 2 :(得分:0)

如果您尝试在记事本中使用.bat文件,如下所示:

尝试应用/ S,'/'字符而不是-S:

sqlcmd / S(IP或服务器)\ SQL2008 / d数据库/ U用户/ P通过/ q“SELECT * FROM TABLE”