1

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

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"

上面的“用户名”是具有管理权限的服务器机器的默认用户名。此用户帐户没有任何密码。

发出该命令后,它会要求输入密码。由于没有密码,我按回车。但我收到以下错误:

Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : Login failed for user 'UserName'..

SQLCMD 参考

4

3 回答 3

3

我遇到了这种情况:

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 

它工作正常。所以请注意你的双引号。希望这可能会有所帮助。

于 2014-07-30T08:38:23.190 回答
2

-U UserName指定 SQL Server 登录名,而不是 Windows 用户名。在我看来,您想使用 Windows 用户。正确的方法是拥有一个域,以域用户身份运行,并在 SQL 中向您所属的域组授予适当的权限。光秃秃的,你可以使用runas /netonly /user:ComputerName\UserName sqlcmd -E.

于 2013-02-21T09:24:21.663 回答
0

该问题与 SQL 和 Windows 身份验证之间的差异有关。在 Windows 身份验证的情况下,例如在具有多个不受信任域的域环境中,只能选择runas.exe /netonly /user:YourTargetDomain\SQLUser在适当的 SQL 用户下运行 SQLCMD 或 Ssms.exe(SQL 管理工作室)。

sqlcmd 和 ssms 都可以在没有任何凭据SQLCMD -E(Studio 中的 UI 选项)的情况下使用 Windows(也是域)身份验证,但进程应该作为在 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 用户的密码。

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

于 2021-08-06T13:20:46.170 回答