【问题标题】:Connecting to a SQL Server in a network via Command Line and Windows Authentication通过命令行和 Windows 身份验证连接到网络中的 SQL Server
【发布时间】:2013-02-21 09:20:30
【问题描述】:

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

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 Reference

【问题讨论】:

    标签: sql-server sqlcmd


    【解决方案1】:

    我遇到了这种情况:

    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 
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我尝试运行runas /netonly /user:"NEW1-PC\new 1" sqlcmd -E 因为我的用户名中有一个空格,所以我用双引号括起来。但是执行此操作时,我得到了 RUN AS 使用 cmets。
      • 上述用法 cmets 是否显示正确的语法?阅读他们跟随他们。
      【解决方案3】:

      此问题与 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 Server 的计算机上。
      • 运行后,您应该输入 SQL 用户的密码。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多