从运行服务器的系统,我可以使用以下命令登录:
sqlcmd -S "ComputerName\InstanceName" -d "DatabaseName" -i "sql.txt" -s"," -o "result.csv"
我想从另一台机器连接到这台服务器,所以我尝试了这个
sqlcmd -U "UserName" -S "ComputerName\InstanceName" -d "DatabaseName" -i "sql.txt" -s"," -o "result.csv"
上面的“UserName”是具有管理权限的服务器计算机的默认用户名。此用户帐户没有任何密码。
发出该命令后,它会要求输入密码。由于没有密码,我点击输入。但是我收到以下错误:
Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : Login failed for user 'UserName'..
答案 0 :(得分:2)
我遇到了这种情况:
sqlcmd -S "server" -d "db" -E -i test.sql
给出" Sqlcmd:错误:Microsoft SQL Server Native Client 11.0:用户' DOMAIN \ administrator'登录失败。' .."
但是当我切换到:
sqlcmd -S server -d db -E -i test.sql
它工作正常。所以请注意你的双引号。希望这可能有所帮助。
答案 1 :(得分:1)
-U UserName
指定SQL Server登录名,而不是Windows用户名。在我看来,你想要使用Windows用户。正确的方法是拥有一个域,以域用户身份运行,并将SQL中的适当权限授予您所属的域组。不管怎样,你可以使用runas /netonly /user:ComputerName\UserName sqlcmd -E
。
答案 2 :(得分:0)
该问题与 SQL 和 Windows 身份验证之间的差异有关。
在 Windows 身份验证的情况下,例如在具有多个不受信任域的域环境中,只能选择使用 runas.exe /netonly /user:YourTargetDomain\SQLUser
在适当的 SQL 用户下运行 SQLCMD 或 Ssms.exe(SQL 管理工作室)。
sqlcmd 和 ssms 都可以使用 Windows(也可以是域)身份验证,无需任何凭据 SQLCMD -E
(Studio 中的 UI 选项),但进程应作为本地或域用户运行,为 SQL 中的 NT 身份验证配置。或者提供 SQL 用户凭据(直接在 SQL 服务器上配置,例如 SA) - SQLCMD -U SQLUserName -P SQLUserPassword
(Studio 中的第二个 UI 选项)。
下面的命令可用于从单独的不受信任域中的机器(例如,从具有您的办公室域帐户的办公室笔记本电脑 - 未配置为访问 SQL 服务器)连接到配置了 Windows (NT) 身份验证(例如实验室域用户)的 SQL 服务器).
运行 SSMS(可以创建 Windows 桌面快捷方式,ssms 的路径可以不同,取决于使用的版本和安装首选项):
C:\Windows\System32\runas.exe /netonly /user:MyLabDomain\SqlUser "C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\ManagementStudio\Ssms.exe
使用 SQLCMD 运行查询(在示例中,它清理表,也可以用作快捷方式):
C:\Windows\System32\runas.exe /netonly /user:MyLabDomain\SqlUser "sqlcmd -S 123.123.12.34 -E -I -Q \"delete FROM TestDB..TestTableToEmpty\""
我想,这些例子可能对某些人有所帮助。