Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Por que não consigo me conectar a uma instância compartilhada do SQL Server 2012 LocalDB?


OUTRA EDIÇÃO

Cory, se você tiver versões anteriores do SQL Server instaladas (por exemplo, 2008), essa é a versão do sqlcmd você está usando. Para se conectar ao LocalDb, você precisa usar a versão SQL Server 2012 do sqlcmd . Portanto, suas instruções para seus usuários devem garantir que eles usem a versão do SQL Server 2012 executando:

C:\Program Files\Microsoft SQL Server\110\Tools\Binn\sqlcmd -S "(localdb)\.\InstanceName"

Isso funcionou para mim. O que não verifiquei é se este caminho e versão de sqlcmd está disponível para usuários que têm somente instalei o sqllocaldb.msi. Desculpe, mas não tenho máquinas nuas sem o SQL Server 2012 instalado (ou apenas com versões anteriores instaladas) para testar isso completamente. Mas, por favor, deixe-me saber se chamar explicitamente a versão 110 do sqlcmd faz o truque.

Eu acho que você também pode instruir os usuários a alterar suas variáveis ​​de sistema para que as versões 110 venham primeiro (que IMHO deve ser o caso automaticamente).

O FileTimeToSystemTime foi confirmado como um bug por um dos colegas de trabalho de Krzysztof. Portanto, ainda não há correção que eu conheça para não proprietários se conectarem via sqllocaldb . Mas mostrei que tanto o SSMS quanto o sqlcmd pode ser feito para funcionar, então espero que isso o aproxime da corrida.

EDITAR

Você precisa adicionar usuários não proprietários à instância, por exemplo, CREATE LOGIN [MyDomain\OtherUser] FROM WINDOWS; e quaisquer permissões apropriadas também. No meu teste o login estava falhando e gerando a mensagem de erro errada (a mensagem de erro "FileTimeToSystemTime" é um bug). Você também precisa GRANT CONNECT . Depois de fazer isso, você vai poder se conectar a partir do segundo usuário usando o Management Studio com esta conexão (a única que tentei):
(localdb)\.\MySharedInstance

Mas de sqlcmd , ainda recebo um erro, não importa como eu tente conectar:
sqlcmd -S "(localdb)\.\MySharedInstance"
sqlcmd -S ".\MySharedInstance"
sqlcmd -S "(localdb)\MySharedInstance"
sqlcmd -S "GREENHORNET\MySharedInstance"
sqlcmd -S ".\LOCALDB#SH04FF8A"
sqlcmd -S "GREENHORNET\LOCALDB#SH04FF8A"

Todos os rendimentos:

Embora eu tenha verificado que a instância está configurada para aceitar conexões remotas. Portanto, há algum outro aro que sqlcmd deve estar passando.

E em relação ao sqllocaldb exe, como isso segue alguma lógica? Posso ver que a instância está lá por meio de info , recebo uma mensagem de erro adequada quando tento interrompê-lo, recebo uma mensagem de que [já] foi iniciado quando tento iniciá-lo, mas não consigo me conectar a ele?



Então, a menos que você precisa sqlcmd acesso, a curto prazo, eu faria com que os usuários secundários fizessem suas coisas com o SSMS (uma vez que você concedeu as permissões adequadas) e espero que Krzysztof tenha mais informações sobre os outros itens.

Em relação à atualização 4.0.2, de http://connect.microsoft.com/SQLServer/feedback/details/723737/smo-cant-connect-to-localdb-instances :