Подключитесь к LocalDB через SQLCMD в PowerShell

10

Я пытаюсь получить доступ к серверу «localdb \ MSSQLLocalDB» на моем компьютере через PowerShell с помощью утилиты SQLCMD. Я использую PowerShell v5, .NET v5.0, и имя сервера указывается (localdb)\MSSQLLocalDBпри подключении к нему в Microsoft SQL Server Management Studio 2014.

PS C:\> sqlcmd -S localdb\MSSQLLocalDBи PS C:\> sqlcmd -S .\localdb\MSSQLLocalDBпривести к этой ошибке:

Sqlcmd: Ошибка: Драйвер Microsoft ODBC 11 для SQL Server: Сетевые интерфейсы SQL Server: Ошибка при поиске указанного сервера / экземпляра [xFFFFFFFF].

Я запросил имя сервера в Management Studio SELECT @@ServerNameи использовал его после команды, -Sуказанной выше, и получил ту же ошибку.

PS C:\> sqlcmd -S localdb дает эту ошибку:

Sqlcmd: ошибка: Microsoft ODBC Driver 11 для SQL Server: поставщик именованных каналов: не удалось открыть соединение с SQL Server [53]

Другие примечания: я могу подключиться к серверу и работать с базой данных с именем testdb01 в консольном приложении C #, используя следующуюSystem.Data.SqlClient строку подключения:

"Data Source=(localdb)\\mssqllocaldb;Initial Catalog=testdb01;Integrated Security=SSPI;"
jmk22
источник

Ответы:

8

Регистр имени экземпляра не имеет значения.

Вам нужно попробовать:

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

Часть «localdb» должна быть заключена в круглые скобки, так как это специальный синтаксис, который указывает на специфичный для SQL Server Express LocalDB API, который позволяет автоматически запускать экземпляр при ссылке на него в строке соединения. Все имя экземпляра должно быть заключено в двойные кавычки. Командная строка, показанная выше, работает для меня, по крайней мере, за пределами PowerShell.

Соломон Руцкий
источник
Включение (localdb)в круглые скобки выглядит так, будто оно разделяет его как команду и выдает следующую ошибку: Термин «localdb» не распознается как имя командлета, функции, файла сценария или работоспособной программы.
jmk22
@ jmk22 Затем попытайтесь поместить имя сервера целиком в двойных кавычках: -S "(localdb)\MSSQLLocalDB". Если это не сработает, тогда мы можем попытаться избежать скобок. Но каким-то образом эти паренсы должны быть там.
Соломон Руцки
1
Цитаты сделали это, спасибо! Я отредактировал ваш ответ, чтобы отразить это.
jmk22