我正在安排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身份验证。
答案 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”