Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dlaczego nie mogę połączyć się z udostępnionym wystąpieniem SQL Server 2012 LocalDB?

INNA EDYCJA

Cory, jeśli masz zainstalowane poprzednie wersje SQL Server (np. 2008), czyli wersję sqlcmd ty używasz. Aby połączyć się z LocalDb, musisz używać wersji SQL Server 2012 sqlcmd . Dlatego instrukcje dla użytkowników muszą zapewniać, że korzystają z wersji SQL Server 2012, uruchamiając:

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

To zadziałało dla mnie. To, czego nie zweryfikowałem, to czy ta ścieżka i wersja sqlcmd jest dostępny dla użytkowników, którzy mają tylko zainstalowano plik sqllocaldb.msi. Przepraszamy, ale nie mam żadnych maszyn bez zainstalowanego SQL Server 2012 (lub z zainstalowanymi tylko poprzednimi wersjami), aby dokładnie to wypróbować. Ale daj mi znać, jeśli jawnie wywołasz wersję 110 sqlcmd załatwia sprawę.

Myślę, że możesz również poinstruować użytkowników, aby zmienili swoje zmienne systemowe, tak aby wersje 110 były pierwsze (co IMHO powinno mieć miejsce automatycznie).

FileTimeToSystemTime został potwierdzony jako błąd przez jednego ze współpracowników Krzysztofa. Więc nadal nie ma rozwiązania, o którym wiem, że osoby niebędące właścicielami mogą łączyć się przez sqllocaldb . Ale pokazałem, że zarówno SSMS, jak i sqlcmd można zmusić do pracy, więc mam nadzieję, że zbliżysz się do biegania.

EDYTUJ

Musisz dodać do instancji dowolnych użytkowników niebędących właścicielami, np. CREATE LOGIN [MyDomain\OtherUser] FROM WINDOWS; a także wszelkie odpowiednie uprawnienia. W moim teście logowanie kończyło się niepowodzeniem i generowało niewłaściwy komunikat o błędzie (komunikat o błędzie "FileTimeToSystemTime" to błąd). Musisz także GRANT CONNECT . Gdy to zrobisz, będziesz móc połączyć się z drugim użytkownikiem za pomocą Management Studio z tym połączeniem (jedynym, którego próbowałem):

(localdb)\.\MySharedInstance

Ale z sqlcmd , nadal otrzymuję błąd bez względu na to, jak próbuję się połączyć:

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

Cała wydajność:

Chociaż sprawdziłem, że instancja jest ustawiona na akceptowanie połączeń zdalnych. Jest więc inny obręcz, który sqlcmd musi przechodzić.

I odnośnie sqllocaldb exe, jak to wynika z logiki? Widzę, że instancja jest tam przez info , otrzymuję prawidłowy komunikat o błędzie, gdy próbuję go zatrzymać, otrzymuję komunikat, że jest [już] uruchomiony, gdy próbuję go uruchomić, ale nie mogę się z nim połączyć?

Więc chyba, że ​​potrzebujesz sqlcmd dostęp, w krótkim okresie chciałbym, aby wtórni użytkownicy robili swoje z SSMS (po przyznaniu odpowiednich uprawnień) i mam nadzieję, że Krzysztof będzie miał więcej informacji na temat innych elementów.

Jeśli chodzi o aktualizację 4.0.2, od http://connect.microsoft.com/SQLServer/feedback/details/723737/smo-cant-connect-to-localdb-instances :



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zredukować wiele podobnych skorelowanych podzapytań?

  2. Jaka jest najlepsza konfiguracja programu SQL Server dla środowiska programistycznego?

  3. Jak wyłączyć wszystkie ograniczenia sprawdzania w bazie danych SQL Server — samouczek SQL Server / TSQL, część 87

  4. Przekazywanie tablicy parametrów do procedury składowanej

  5. Wyjaśnienie ANSI_NULLS programu SQL Server