我已经通过 SQL Server 2008 R2 安装设置了 SQLEXPRESS 实例,添加了一个具有所有服务器角色的安全登录名,一个名为“sqluser”。
服务器身份验证是SQL Server 和Windows 身份验证模式。但是,当我指定 -S 属性时,登录失败。
没有启用防火墙,SQL 服务器甚至接受来自远程主机的连接。
C:\Users\user>sqlcmd -U sqluser -P qwerty -Q "Select * FROM testdb.dbo.testtable"
输出:
integer
-------
1
2
3
4
(4 rows affected)
但是,当指定“localhost”时,查询失败......问题是为什么?
C:\Users\user>sqlcmd -S localhost/sqlexpress -U cpt -P 1234 -Q "Select * FROM cpt.dbo.testme"
输出:
HResult 0x43, Level 16, State 1
Named Pipes Provider: Could not open a connection to SQL Server [67].
Sqlcmd: Error: Microsoft SQL Server Native Client 10.0 : A network-related or in stance-specific error .....
Sqlcmd: Error: Microsoft SQL Server Native Client 10.0 : Login timeout expired.
如果有人想知道,用“%COMPUTERNAME”更改“localhost”是相同的结果。服务器作为 LocalSystem 实例运行。
您需要指定 -S 开关来为 sqlcmd 连接提供实例名称,它的格式应该是“localhost\sqlexpress”而不是“localhost/sqlexpress”。