Você precisa especificar a opção -S para fornecer o nome da instância para o qual o sqlcmd deve se conectar, e deve estar no formato "localhost \ sqlexpress" em vez de "localhost / sqlexpress".
Configurei a instância SQLEXPRESS por meio da instalação do SQL Server 2008 R2, adicionei um login de segurança com todas as funções do servidor, uma chamada 'sqluser'.
A autenticação do servidor é o modo de autenticação do SQL Server e do Windows. No entanto, quando eu especificar a propriedade -S, o login falha.
Não há firewall habilitado e o servidor SQL até aceita conexões de hosts remotos.
C:\Users\user>sqlcmd -U sqluser -P qwerty -Q "Select * FROM testdb.dbo.testtable"
Saída:
integer
-------
1
2
3
4
(4 rows affected)
No entanto, ao especificar 'localhost', a consulta falha ... A pergunta é por quê?
C:\Users\user>sqlcmd -S localhost/sqlexpress -U cpt -P 1234 -Q "Select * FROM cpt.dbo.testme"
Saída:
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.
Alterar 'localhost' com '% COMPUTERNAME' é o mesmo resultado se alguém estiver se perguntando. O servidor está sendo executado como uma instância do LocalSystem.
Tags sql-server tsql