通过命令行和Windows身份验证连接到网络中的SQL Server

时间:2013-02-21 09:20:30

标签: sql-server sqlcmd

从运行服务器的系统,我可以使用以下命令登录:

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'..

SQLCMD Reference

3 个答案:

答案 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\""
  • SSMS 或 SQLCMD 应该安装在您连接到 SQL 服务器的机器上。
  • 运行后,您应该输入 SQL 用户的密码。

我想,这些例子可能对某些人有所帮助。