Hubungkan ke LocalDB melalui SQLCMD di PowerShell

10

Saya mencoba mengakses server "localdb \ MSSQLLocalDB" di komputer saya melalui PowerShell dengan utilitas SQLCMD. Saya menggunakan PowerShell v5, .NET v5.0, dan nama server adalah (localdb)\MSSQLLocalDBketika saya terhubung ke Microsoft SQL Server Management Studio 2014.

PS C:\> sqlcmd -S localdb\MSSQLLocalDBdan PS C:\> sqlcmd -S .\localdb\MSSQLLocalDBmenghasilkan kesalahan ini:

Sqlcmd: Kesalahan: Microsoft ODBC Driver 11 untuk SQL Server: SQL Server Network Interfaces: Error Locating Server / Instance Specified [xFFFFFFFF].

Saya menanyakan nama server di Management Studio dengan SELECT @@ServerNamedan menggunakannya setelah -Sdalam perintah di atas dan mendapatkan kesalahan yang sama.

PS C:\> sqlcmd -S localdb memberikan kesalahan ini:

Sqlcmd: Kesalahan: Microsoft ODBC Driver 11 untuk SQL Server: Penyedia Pipa Bernama: Tidak dapat membuka koneksi ke SQL Server [53]

Catatan lain: Saya dapat terhubung ke server dan bekerja dengan database bernama testdb01 di aplikasi C # console menggunakan System.Data.SqlClientdengan string koneksi ini:

"Data Source=(localdb)\\mssqllocaldb;Initial Catalog=testdb01;Integrated Security=SSPI;"
jmk22
sumber

Jawaban:

8

Casing nama contoh tidak masalah.

Anda perlu mencoba:

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

Bagian "localdb" perlu dilampirkan dalam tanda kurung karena itu adalah sintaks khusus yang menunjuk ke SQL Server Express LocalDB-API khusus yang memungkinkan untuk memulai secara otomatis misalnya ketika direferensikan dalam string koneksi. Seluruh nama instance harus dilampirkan dalam tanda kutip ganda. Baris perintah yang ditunjukkan di atas berfungsi untuk saya, setidaknya di luar PowerShell.

Solomon Rutzky
sumber
Termasuk (localdb)dalam tanda kurung sepertinya memisahkan sebagai perintah, dan memberikan kesalahan berikut: Istilah 'localdb' tidak dikenali sebagai nama cmdlet, fungsi, file skrip, atau program yang dapat dijalankan.
jmk22
@ jmk22 Kemudian mencoba menempatkan seluruh nama server dalam tanda kutip ganda: -S "(localdb)\MSSQLLocalDB". Jika itu tidak berhasil maka kita dapat mencoba melarikan diri dari kurung. Tapi entah bagaimana orangtua itu harus ada di sana.
Solomon Rutzky
1
Kutipan berhasil, terima kasih! Saya telah mengedit jawaban Anda untuk mencerminkan hal ini.
jmk22