sql >> Databasteknik >  >> RDS >> Sqlserver

Varför kan jag inte ansluta till en delad SQL Server 2012 LocalDB-instans?

ANN REDIGERING

Cory, om du har tidigare versioner av SQL Server installerad (t.ex. 2008), är det versionen av sqlcmd du använder. För att kunna ansluta till LocalDb måste du använda SQL Server 2012-versionen av sqlcmd . Så dina instruktioner till dina användare måste säkerställa att de använder SQL Server 2012-versionen genom att köra:

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

Det här fungerade för mig. Det jag inte har verifierat är om denna sökväg och version av sqlcmd är tillgänglig för användare som endast har installerade sqllocaldb.msi. Tyvärr, men jag har inga nakna maskiner utan SQL Server 2012 installerad (eller med bara tidigare versioner installerade) för att prova detta noggrant. Men låt mig veta om du uttryckligen anropar 110-versionen av sqlcmd gör susen.

Jag tror att du kanske också kan instruera användare att ändra sina systemvariabler så att de 110 versionerna kommer först (vilket IMHO bör vara fallet automatiskt).

FileTimeToSystemTime har bekräftats som en bugg av en av Krzysztofs medarbetare. Så det finns fortfarande ingen fix som jag känner till för icke-ägare att ansluta via sqllocaldb . Men jag har visat att både SSMS och sqlcmd kan fås att fungera, så jag hoppas att det kommer dig närmare att springa.

REDIGERA

Du måste lägga till eventuella icke-ägare användare i instansen, t.ex. CREATE LOGIN [MyDomain\OtherUser] FROM WINDOWS; och eventuella lämpliga behörigheter också. I mitt test misslyckades inloggningen och genererade fel felmeddelande (felmeddelandet "FileTimeToSystemTime" är ett fel). Du måste också GRANT CONNECT . När du gör detta kommer du kunna ansluta från den andra användaren med Management Studio med denna anslutning (den enda jag försökte):

(localdb)\.\MySharedInstance

Men från sqlcmd , jag får fortfarande ett felmeddelande oavsett hur jag försöker ansluta:

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

All avkastning:

Även om jag har verifierat att instansen är inställd på att acceptera fjärranslutningar. Så det finns någon annan ram som sqlcmd måste gå igenom.

Och angående sqllocaldb exe, hur följer detta någon logik? Jag kan se att instansen finns där via info , Jag får ett korrekt felmeddelande när jag försöker stoppa det, jag får ett meddelande om att det [redan] har startat när jag försöker starta det, men jag kan inte ansluta till det?

Så om du inte behöver sqlcmd åtkomst, på kort sikt skulle jag låta de sekundära användarna göra sin grej med SSMS (när du har gett adekvata behörigheter) och förhoppningsvis kommer Krzysztof att ha mer information om de andra objekten.

Angående 4.0.2-uppdateringen, från http://connect.microsoft.com/SQLServer/feedback/details/723737/smo-cant-connect-to-localdb-instances :



  1. (var)char som kolumnstyp för prestanda?

  2. NHibernate.Mapping undantag. Ingen persister för Namespace.className

  3. Oracle:Infoga radtypdata i en annan tabell

  4. Hur ansluter jag till MySQL på Amazon EC2 från Windows?