我有一个非常奇怪的情况。我正在使用sqlcmd使用以下命令运行脚本:
sqlcmd -S %SName% -U %UName% -P %Pwd% -d %DbName% -I -i test.sql >> test_log.txt 2>&1
SName 是IP \ Instance,如10.10.10.100 \ MyInstance
test.sql的内容很简单:
select @@servername
select getdate()
当我运行时,它给出了以下错误:
Sqlcmd:错误:用于SQL Server的Microsoft ODBC驱动程序11:未找到数据源名称且未指定默认驱动程序。
***如果我将脚本复制并粘贴到另一台机器上并运行它可以正常工作。
为什么要尝试通过ODBC连接?
我认为这是一个环境问题,但我不知道从哪里开始寻找。
由于
答案 0 :(得分:1)
从命令行使用SQLCMD
时,它默认使用Microsoft ODBC驱动程序。
来自https://msdn.microsoft.com/en-us/library/ms162773.aspx:
SQL Server Management Studio使用Microsoft .NET Framework SqlClient在查询编辑器中以常规和SQLCMD模式执行。从命令行运行sqlcmd时,sqlcmd使用ODBC驱动程序。由于可能会应用不同的默认选项,因此在SQLCMD模式和sqlcmd实用程序中的SQL Server Management Studio中执行相同查询时,可能会看到不同的行为。
您需要在目标环境中配置ODBC才能使SQLCMD
正常工作。