Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Warum kann ich keine Verbindung zu einer gemeinsam genutzten SQL Server 2012 LocalDB-Instanz herstellen?

WEITERE BEARBEITUNG

Cory, wenn Sie frühere Versionen von SQL Server installiert haben (z. B. 2008), ist das die Version von sqlcmd du benutzt. Um eine Verbindung zu LocalDb herzustellen, müssen Sie die SQL Server 2012-Version von sqlcmd verwenden . Daher müssen Ihre Anweisungen an Ihre Benutzer sicherstellen, dass sie die Version von SQL Server 2012 verwenden, indem Sie Folgendes ausführen:

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

Das hat bei mir funktioniert. Was ich nicht überprüft habe, ist, ob dieser Pfad und diese Version von sqlcmd ist für Benutzer verfügbar, die nur haben installierte die sqllocaldb.msi. Tut mir leid, aber ich habe keine nackten Maschinen ohne installierten SQL Server 2012 (oder nur mit installierten Vorgängerversionen), um dies gründlich auszuprobieren. Aber lassen Sie es mich bitte wissen, wenn Sie explizit die Version 110 von sqlcmd aufrufen funktioniert.

Ich denke, Sie können Benutzer auch anweisen, ihre Systemvariablen so zu ändern, dass die 110-Versionen zuerst kommen (was meiner Meinung nach automatisch der Fall sein sollte).

Die FileTimeToSystemTime wurde von einem Mitarbeiter von Krzysztof als Fehler bestätigt. Daher gibt es meines Wissens nach immer noch keine Lösung für Nicht-Eigentümer, um sich über sqllocaldb zu verbinden . Aber ich habe gezeigt, dass sowohl SSMS als auch sqlcmd kann zum Laufen gebracht werden, also hoffe ich, dass dich das dem Laufen näher bringt.

BEARBEITEN

Sie müssen der Instanz alle Benutzer hinzufügen, die keine Eigentümer sind, z. CREATE LOGIN [MyDomain\OtherUser] FROM WINDOWS; und auch alle entsprechenden Berechtigungen. In meinem Test schlug die Anmeldung fehl und erzeugte die falsche Fehlermeldung (die Fehlermeldung „FileTimeToSystemTime“ ist ein Fehler). Sie müssen auch GRANT CONNECT . Sobald Sie dies getan haben, werden Sie es tun in der Lage sein, sich vom zweiten Benutzer mit Management Studio mit dieser Verbindung zu verbinden (die einzige, die ich versucht habe):

(localdb)\.\MySharedInstance

Aber von sqlcmd , bekomme ich immer noch eine Fehlermeldung, egal wie ich versuche, eine Verbindung herzustellen:

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

Alle Erträge:

Obwohl ich überprüft habe, dass die Instanz so eingestellt ist, dass sie Remoteverbindungen akzeptiert. Es gibt also einen anderen Rahmen, den sqlcmd muss durchlaufen werden.

Und bezüglich der sqllocaldb exe, wie folgt das irgendeiner Logik? Ich kann sehen, dass die Instanz über info vorhanden ist , ich bekomme eine richtige Fehlermeldung, wenn ich versuche, es zu stoppen, ich bekomme eine Nachricht, dass es [bereits] gestartet ist, wenn ich versuche, es zu starten, aber ich kann keine Verbindung herstellen?

Also es sei denn, Sie brauchen sqlcmd Zugriff, kurzfristig würde ich die sekundären Benutzer ihre Sache mit SSMS erledigen lassen (sobald Sie angemessene Berechtigungen erteilt haben) und Krzysztof wird hoffentlich mehr Informationen zu den anderen Elementen haben.

In Bezug auf das 4.0.2-Update von http://connect.microsoft.com/SQLServer/feedback/details/723737/smo-cant-connect-to-localdb-instances :