Połącz się z LocalDB przez SQLCMD w PowerShell

11

Próbuję uzyskać dostęp do serwera „localdb \ MSSQLLocalDB” na moim komputerze za pomocą programu PowerShell za pomocą narzędzia SQLCMD. Korzystam z programu PowerShell v5, .NET v5.0, a nazwa serwera brzmi, (localdb)\MSSQLLocalDBgdy łączę się z nim w programie Microsoft SQL Server Management Studio 2014.

PS C:\> sqlcmd -S localdb\MSSQLLocalDBi PS C:\> sqlcmd -S .\localdb\MSSQLLocalDBspowodować ten błąd:

Sqlcmd: Błąd: Sterownik Microsoft ODBC 11 dla programu SQL Server: Interfejsy sieciowe programu SQL Server: Błąd lokalizowania określonego serwera / wystąpienia [xFFFFFFFF].

Zapytałem o nazwę serwera w Management Studio SELECT @@ServerNamei użyłem jej po -Spowyższym poleceniu i dostałem ten sam błąd.

PS C:\> sqlcmd -S localdb daje ten błąd:

Sqlcmd: Błąd: Sterownik Microsoft ODBC 11 dla programu SQL Server: Dostawca nazwanych potoków: Nie można otworzyć połączenia z programem SQL Server [53]

Inne uwagi: Jestem w stanie połączyć się z serwerem i pracować z bazą danych o nazwie testdb01 w aplikacji na konsolę C # przy użyciu System.Data.SqlClienttego ciągu połączenia:

"Data Source=(localdb)\\mssqllocaldb;Initial Catalog=testdb01;Integrated Security=SSPI;"
jmk22
źródło

Odpowiedzi:

9

Obudowa nazwy instancji nie ma znaczenia.

Musisz spróbować:

sqlcmd -S "(localdb)\MSSQLLocalDB" -d testdb01

Część „localdb” musi być ujęta w nawias, ponieważ jest to specjalna składnia wskazująca na specyficzny dla SQL Server Express interfejs API LocalDB, który umożliwia automatyczne uruchamianie instancji po odwołaniu do ciągu połączenia. Cała nazwa instancji musi być ujęta w podwójne cudzysłowy. Pokazany powyżej wiersz poleceń działa dla mnie, przynajmniej poza PowerShell.

Solomon Rutzky
źródło
Uwzględnienie (localdb)w nawiasach wygląda tak, jakby oddziela je jako polecenie i powoduje następujący błąd: Termin „localdb” nie jest rozpoznawany jako nazwa polecenia cmdlet, funkcji, pliku skryptu lub programu operacyjnego.
jmk22,
@ jmk22 Następnie spróbuj umieścić całą nazwę serwera w cudzysłów: -S "(localdb)\MSSQLLocalDB". Jeśli to nie zadziała, możemy spróbować uciec z nawiasu. Ale jakoś te pareny muszą tam być.
Solomon Rutzky
1
Cytaty to zrobiły, dziękuję! Zredagowałem twoją odpowiedź, aby to odzwierciedlić.
jmk22,