Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Pourquoi ne puis-je pas me connecter à une instance partagée SQL Server 2012 LocalDB ?

UNE AUTRE MODIFICATION

Cory, si vous avez installé des versions précédentes de SQL Server (par exemple, 2008), il s'agit de la version de sqlcmd vous utilisez. Pour vous connecter à LocalDb, vous devez utiliser la version SQL Server 2012 de sqlcmd . Vos instructions à vos utilisateurs doivent donc garantir qu'ils utilisent la version SQL Server 2012 en exécutant :

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

Cela a fonctionné pour moi. Ce que je n'ai pas vérifié, c'est si ce chemin et la version de sqlcmd est disponible pour les utilisateurs qui ont uniquement installé le sqllocaldb.msi. Désolé mais je n'ai pas de machines nues sans SQL Server 2012 installé (ou avec seulement les versions précédentes installées) pour essayer cela à fond. Mais s'il vous plaît faites le moi savoir si vous appelez explicitement la version 110 de sqlcmd fait l'affaire.

Je pense que vous pourrez également demander aux utilisateurs de modifier leurs variables système afin que les versions 110 viennent en premier (ce qui, à mon humble avis, devrait être le cas automatiquement).

Le FileTimeToSystemTime a été confirmé comme étant un bogue par l'un des collègues de Krzysztof. Il n'y a donc toujours pas de solution que je connaisse pour que les non-propriétaires se connectent via sqllocaldb . Mais j'ai montré que SSMS et sqlcmd peut être fait pour fonctionner, alors j'espère que cela vous rapprochera de la course.

MODIFIER

Vous devez ajouter tous les utilisateurs non propriétaires à l'instance, par ex. CREATE LOGIN [MyDomain\OtherUser] FROM WINDOWS; ainsi que toutes les autorisations appropriées. Dans mon test, la connexion échouait et générait le mauvais message d'erreur (le message d'erreur "FileTimeToSystemTime" est un bogue). Vous devez également GRANT CONNECT . Une fois que vous aurez fait cela, vous serez pouvoir se connecter depuis le deuxième utilisateur à l'aide de Management Studio avec cette connexion (la seule que j'ai essayée) :

(localdb)\.\MySharedInstance

Mais depuis sqlcmd , j'obtiens toujours une erreur, peu importe comment j'essaie de me connecter :

sqlcmd -S "(localdb)\.\MySharedInstance"
sqlcmd -S ".\MySharedInstance"
sqlcmd -S "(localdb)\MySharedInstance"
sqlcmd -S "GREENHORNET\MySharedInstance"
sqlcmd -S ".\LOCALDB#SH04FF8A"
sqlcmd -S "GREENHORNET\LOCALDB#SH04FF8A"

Tous donnent :

Bien que j'ai vérifié que l'instance est configurée pour accepter les connexions à distance. Il y a donc un autre cerceau que sqlcmd doit passer.

Et concernant le sqllocaldb exe, comment cela suit-il une logique? Je peux voir que l'instance est là via info , je reçois un message d'erreur approprié lorsque j'essaie de l'arrêter, je reçois un message indiquant qu'il est [déjà] démarré lorsque j'essaie de le démarrer, mais je ne peux pas m'y connecter ?

Donc, à moins que vous n'ayez besoin sqlcmd accès, à court terme, je demanderais aux utilisateurs secondaires de faire leur travail avec SSMS (une fois que vous avez accordé les autorisations adéquates) et j'espère que Krzysztof aura plus d'informations sur les autres éléments.

Concernant la mise à jour 4.0.2, depuis http://connect.microsoft.com/SQLServer/feedback/details/723737/smo-cant-connect-to-localdb-instances :