Как подключиться к базе данных, созданной в VS2015 SQL Server Data Tools
У меня установлены Visual Studio 2015 и SQL Server Data Tools. Я могу видеть базу данных, таблицы и т. Д. И выполнять запросы в Visual Studio. Однако я не могу подключиться к базе данных с помощью стороннего приложения.
Кажется, что служба SQL Server не прослушивает ни один порт:
Как подключиться к этой базе данных? Или как заставить этот сервис прослушивать порт?
1 ответ
SQL Server Express LocalDB (обычно называемый просто "LocalDB") работает как фоновый процесс, инициируемый при входе в систему, а не как служба. Он может принимать только локальные соединения. Экземпляры могут быть запущены вручную с помощью утилиты SQLLocalDB.exe или, если приложение является приложением.NET или реализует API LocalDB, затем пытается подключиться через (localdb)\...
Синтаксис автоматически запустит экземпляр, если он еще не запущен. Экземпляры LocalDB также автоматически отключаются через 5 минут после закрытия последнего подключения к нему.
Вы можете увидеть, какие у вас есть экземпляры, запустив в командной строке следующее:
SQLLocalDB i
Вы можете запустить экземпляр, запустив:
SQLLocalDB s ProjectsV12
Вы можете получить информацию для конкретного экземпляра, выполнив:
SQLLocalDB i ProjectsV12
Вы можете остановить экземпляр, выполнив:
SQLLocalDB p ProjectsV12
Вы можете подключиться к экземпляру для тестирования, даже если он еще не запущен, запустив следующую командную строку (дайте ему время раскрутиться, прежде чем он подключится в первый раз):
SQLCMD -S (localdb)\ProjectsV12 -Q "SELECT @@SERVERNAME;"
Это вернет значение в соответствии с:
MachineName \LocalDB# XXXXXXXX
где каждое "х" является шестнадцатеричной цифрой (то есть 0-9, AF). Или, если это общий экземпляр, имя будет иметь следующий формат:
MachineName \LocalDB#SHxxxxxx
Каждый работающий экземпляр также имеет имя именованного канала в виде:
нп:. \ \ труба \LocalDB# XXXXXXXX \ TSQL \ запрос
где каждый "х" снова шестнадцатеричная цифра. И снова, если это общий экземпляр, то первые две шестнадцатеричные цифры заменяются на "SH".
Основное различие между двумя синтаксисами (т.е. (localdb)\...
против np:\\.\pipe\LOCALDB#xxxxxxxx\tsql\query
) использование синтаксиса именованных каналов не приведет к автоматическому запуску экземпляра, если он еще не запущен: только (localdb)\...
синтаксис может сделать это, поскольку он направляется через специальный LOCALDB API.