Как подключиться к LocalDB в Visual Studio Server Explorer?


240

Я не могу поверить, что я не мог найти рабочее решение для этого после часа поиска. Я следую за этой статьей о Entity Framework 6.0, которая дает простое руководство по Code First. Я создал проект и установил последний пакет EF Nuget для проекта для компиляции. Я также проверил, что у меня установлена ​​Microsoft SQL Server 2012 Express LocalDB, поставляемая с Visual Studio 2013. У меня нет других экземпляров SQL, установленных на моем локальном компьютере. Программа запускается, и записи добавляются в базу данных и выводятся в консоли. Но когда в статье написано «проверь свою локальную базу данных», в ней не сказано, как! Я не вижу никаких файлов .mdf или .ldf, созданных в папке проекта. Я пытался всеми способами подключить Visual Studio s Обозреватель серверов в LocalDB. Мастер не может найти(localdb)или не удается найти какого-либо провайдера в обозревателе серверов, чтобы он мог принять строку подключения, как (localdb)\v11.0;Integrated Security=true;я видел, когда в нескольких случаях в StackOverflow запрашивалось несколько мест, но ответ не работает или помечен как ответ. Пожалуйста, помогите, это не должно быть таким разочарованием!

Какие шаги для подключения Visual Studio Server Explorer к LocalDB?


70
Мне часто жаль людей, которые только входят в этот бизнес. 20 лет назад инструменты были намного проще в использовании. Документация также сейчас едва ли адекватна, а в большинстве случаев меньше. Теперь я вижу «документацию» в MSDN, которая просто объясняет метод, такой как «foo» -> «Это метод foo». Действительно, Microsoft? Что случилось с техническими писателями? Что случилось с Books Online (по-настоящему)?
Питтсбург DBA

1
Убедитесь, что вы используете Visual Studio от имени администратора.
Даррен Гриффит

4
Если вы в порядке использования обозревателя объектов SQL Server в Visual Studio вместо обозревателя серверов . Это более простое решение (меньше ручной настройки), проверьте мой ответ: stackoverflow.com/a/41906391/3645638
Svek

Моя установка создает базу данных в sqlserverexpress, а не в localdb. Что вызывает это?
Джейсон Ченг

Ответы:


282

В Visual Studio 2012 все, что мне нужно было сделать, это ввести:

(localdb)\v11.0

Visual Studio 2015 и Visual Studio 2017 изменены на:

(localdb)\MSSQLLocalDB

в качестве имени сервера при добавлении Microsoft SQL Server Dataисточника в:

View/Server Explorer/(Right click) Data Connections/Add Connection

а затем имена баз данных были заполнены. Мне не нужно было делать все остальные шаги в принятом ответе, хотя было бы неплохо, если бы имя сервера было доступно автоматически в поле со списком имен серверов.

Вы также можете просматривать имена баз данных LocalDB, доступные на вашем компьютере, используя:

View/SQL Server Object Explorer.

4
Да, это то, что должно работать с первого раза. Но если это не так, шаги в принятом ответе должны запустить службу и заставить ее работать.
Orad

Может быть, SQL Server Object Explorer запустил его для меня, поскольку я использовал его, чтобы выяснить, какое имя сервера использовал Entity Framework. Я нашел этот вопрос, но был напуган, пытаясь ответить на него, так как надеялся на что-то более простое и не полностью прочитал его, так как думал, что должен использовать имя канала :)
RationalDev нравится GoFundMonica

Я просто слеп к деталям, или это очень расстраивает, что настройка не так интуитивно понятна? В 2012 или 2015 году кажется, что они почти скрывают подобные вещи во всей IDE.
Rex_C

Спасибо. Я ломал голову, пока не узнал твой ответ.
Александр Н.

5
Почему Microsoft, почему? Зачем менять имя, а не обновлять документацию? (Спасибо за путь VS 2015)
Тибо Д.

256

ОК, отвечая на мой вопрос.

Шаги для подключения LocalDB к Visual Studio Server Explorer

  1. Открыть командную строку
  2. Бегать SqlLocalDB.exe start v11.0
  3. Бегать SqlLocalDB.exe info v11.0
  4. Скопируйте имя канала экземпляра, которое начинается с np: \ ...
  5. В Visual Studio выберите ИНСТРУМЕНТЫ> Подключиться к базе данных ...
  6. В качестве имени сервера введите (localdb)\v11.0. Если это не сработало, используйте имя канала экземпляра, которое вы скопировали ранее. Вы также можете использовать это для подключения к SQL Management Studio.
  7. Выберите базу данных в следующем выпадающем списке
  8. Нажмите ОК

введите описание изображения здесь


86
Почти каждое действие в эти дни на платформе MS включает в себя магию или ранее запомненные знания ... кто будет поддерживать эти вещи через 5 лет, когда появится целый новый набор магии?
tbone

34
Спасибо! Просто чтобы добавить к этому превосходному ответу (и отличному вопросу): SqlLocalDb infoперечислю все имена серверов. В моем случае, после магии EF-кода в первую очередь моя база данных оказалась MSSQLLocalDBне v11.0, поэтому я вошел (localdb)\MSSQLLocalDBв диалоговое окно Add Connection.
biscuit314

1
SqlLocalDb.exe дважды появляется в моем системном пути - сначала в C: \ Program Files \ Microsoft SQL Server \ 110 \ Tools \ Binn, а затем в C: \ Program Files \ Microsoft SQL Server \ 120 \ Tools \ Binn. Поэтому только более ранняя версия будет вызвана! У меня установлены VS2012 и VS 2013.
Джон Панкович

2
Я считаю, что все больше и больше людей тяготеют к другим языкам программирования от Microsoft. Эта простая конфигурация и расположение файлов стали сложнее, чем то, чего не хватает другим языкам. Если им не хватает вообще.
JustJohn

4
Я весь день ломал голову над этим. Почему они должны сделать это настолько сложным, когда это было так чертовски легко? Спасибо за помощь.
Джордж Уильямс

71

Выберите в:

  1. Источник данных: Microsoft SQL Server (SqlClient)
  2. Название сервера: (localdb)\MSSQLLocalDB
  3. Войдите на сервер: Use Windows Authentication

Нажмите кнопку Обновить, чтобы получить имя базы данных :)

Скриншот


1
каким-то образом это был единственный рабочий ответ 28/04/2015
maazza

4
то же самое здесь vs2015 .. Это был ответ .. Я думаю, они переименовали в localDb?
панкоутер

1
Этот сделал это для VS2015 RC на Win 8.1.
ScottG

Об имени сервера: stackoverflow.com/questions/27197359/…
kr85

Работает в vs2017 также.
Токе Бреер-Мортенсен

25

Вместо этого используйте SQL Server Object Explorer (SSOX)

В отличие от других ответов, этот подход использует:
- Никаких специальных команд.
- Нет сложных конфигураций.
Просто используйте проводник объектов SQL Server

Это довольно просто ...

  • В меню « Вид» откройте проводник объектов SQL Server .

один

  • Щелкните правой кнопкой мыши по {YourTableName}столу> View Designer

два

Готово.


16

Это сработало для меня.

  1. Открыть командную строку
  2. Запустите "SqlLocalDB.exe start"
  3. Ответ системы "Экземпляр LocalDB" mssqllocaldb "запущен".
  4. В VS , Просмотр / Обозреватель серверов / (Щелкните правой кнопкой мыши) Соединения данных / Добавить соединение
    • Источник данных: Microsoft SQL Server (SqlClient)
    • Имя сервера: (localdb) \ MSSQLLocalDB
    • Войдите на сервер: используйте проверку подлинности Windows
  5. Нажмите «Проверить соединение», затем ОК.

8

Следующее работает с Visual Studio 2017 Community Edition в Windows 10 с использованием SQLServer Express 2016.

Откройте PowerShell, проверьте, как он называется SqlLocalDB.exe infoи работает ли он с SqlLocalDB.exe info NAME. Вот как это выглядит на моей машине:

> SqlLocalDB.exe info
MSSQLLocalDB
> SqlLocalDB.exe info MSSQLLocalDB
Name:               mssqllocaldb
Version:            13.0.1601.5
Shared name:
Owner:              DESKTOP-I4H3E09\simon
Auto-create:        Yes
State:              Running
Last start time:    4/12/2017 8:24:36 AM
Instance pipe name: np:\\.\pipe\LOCALDB#EFC58609\tsql\query
>

Если он не работает, то вам нужно начать его с SqlLocalDB.exe start MSSQLLocalDB. Когда он работает, вы видите, Instance pipe name:который начинается с np:\\. Скопируйте эту строку именованного канала. В VS2017 откройте представление Server Explorerи создайте новое соединение типа Microsoft SQL Server (SqlClient)(не обманывайте себя другими типами файлов, которые вы хотите использовать в качестве полнофункционального типа соединения) и установитеServer name: качестве имени канала экземпляра, который вы скопировали из PowerShell.

Я также установил, что Connect to databaseэто та же база данных, которая была в строке соединения, которая работала в моем проекте Dotnet Core / Entity Framework Core, который был настроен с использованиемdotnet ef database update .

Вы можете войти в систему и создать базу данных, используя sqlcmdстроку именованного канала:

sqlcmd -S np:\\.\pipe\LOCALDB#EFC58609\tsql\query 1> create database EFGetStarted.ConsoleApp.NewDb; 2> GO

Инструкции по созданию пользователя для вашего приложения см. На странице https://docs.microsoft.com/en-us/sql/tools/sqllocaldb-utility.


7

Visual Studio 2015 RC имеет установленный LocalDb 12, аналогичные инструкциям, которые использовались ранее, но все же не нужно знать «магию», перед тем, как использовать это, должен быть включен экземпляр по умолчанию ... Скорее, завершено, решения нет :

cmd> sqllocaldb start

Который будет отображать

LocalDB instance "MSSQLLocalDB" started.

Ваше имя экземпляра может отличаться. В любом случае откройте VS и откройте обозреватель сервера, щелкните правой кнопкой мыши Data Connections, выберите Add, выберите SQL Server в поле типа имени сервера:

(localdb)\MSSQLLocalDB

Не вводя имя БД, нажмите «Проверить соединение».


6

Исправление не работает.

Точно так же, как в иллюстративном примере, все эти шаги предоставляют только доступ к «системным» базам данных и не дают возможности выбрать существующие пользовательские базы данных, к которым вы хотите получить доступ.

Решение для доступа к локальному (не Express Edition) экземпляру сервера Microsoft SQL находится на стороне SQL Server:

  1. Откройте диалоговое окно «Выполнить» (WinKey + R)
  2. Тип: "services.msc"
  3. Выберите браузер SQL Server
  4. Нажмите Свойства
  5. Измените «отключен» на «Ручной» или «Автоматический»
  6. Когда сервисная кнопка «Пуск» активируется, нажмите на нее.

Готово! Теперь вы можете выбрать свой локальный SQL Server из списка «Имя сервера» в окне «Свойства подключения».


7
Это StackOverflow Q / A о LocalDB . Я думаю, что ваш ответ о включении других экземпляров SQL.
Орад

Я попробовал это исправление в локальной среде, и оно исправляет ошибку, как и ожидалось, для исходного вопроса, а не то, что вы, возможно, думаете . Не думайте, что Enterprise Edition = корпоративная среда. Некоторые из нас используют эту редакцию для локальной разработки на компьютере рабочей группы.
Алехандроб

Несмотря на то, что мне по-прежнему приходилось вводить (localdb), а не использовать браузер, это фактически исправило его для меня, так что оно ответило на вопрос красиво.
PeterJ

4

Запустите CMD от имени администратора.

  1. из меню «Пуск» cmd - подождите, пока он его найдет.
  2. Щелкните правой кнопкой мыши на cmd и выберите открыть как администратор.
  3. тип: cd C: \ Program Files \ Microsoft SQL Server \ 120 \ Tools \ Binn
  4. тип: SqlLocalDB начало
  5. Теперь введите: SqlLocalDB info
  6. Показывает запущенные экземпляры SQL доступны ... выберите, что вы хотите ...
  7. чтобы узнать больше о типе экземпляра: SqlLocalDB info instanceName

  8. теперь из VS вы можете настроить ваше соединение. В VS , Просмотр / Обозреватель серверов / (Щелкните правой кнопкой мыши) Соединения данных / Добавить источник данных подключения: Microsoft SQL Server (SqlClient) Имя сервера: (localdb) \ MSSQLLocalDB Войдите на сервер: используйте Windows Аутентификация Нажмите «Проверить соединение», затем ОК.

  9. Работа выполнена


3

Самый быстрый способ в Visual Studio 2017 - перейти в Инструменты -> SQL Server -> Новый запрос. Выберите Локальные базы данных и выберите нужное Имя базы данных внизу.

Альтернативный способ

Visual Studio 2017 Имя сервера:

(localdb)\MSSQLLocalDB

Добавьте новое соединение, используя меню Сервис -> Подключиться к базе данных ...


Если вы не установили SQLExpress в экземпляр по умолчанию, вы также можете попробовать ... '(localdb)'
Jason Geiger

1

Я выполнил описанные выше действия, но забыл установить SQL Server 2014 LocalDB до настройки Visual Studio 2015.

Мои шаги следующие:

  1. Установите SQL Server 2014 LocalDB;
  2. Откройте Visual Studio 2015, а затем проводник объектов SQL Server ;
  3. Найдите свой LocalDB под тегом SQL Server.

Надеюсь, это поможет кому-нибудь.


0

Сценарий: Windows 8.1, VS2013 Ultimate, SQL Express Установлен и работает, Браузер SQL Server отключен. Это сработало для меня:

  1. Сначала я включил SQL Server Browser под сервисами.
  2. В Visual Studio: откройте консоль диспетчера пакетов, затем введите: Enable-Migrations ; Затем введите Enable-Migrations -ContextTypeName YourContextDbName, который создал папку Migrations в VS.
  3. Внутри папки «Миграции» вы найдете файл «Configuration.cs», включите автоматическую миграцию с помощью: AutomaticMigrationsEnabled = true;
  4. Запустите ваше приложение еще раз, среда создаст DefaultConnection, и вы увидите новые таблицы из своего контекста. Это новое соединение указывает на localdb. Созданная строка подключения показывает: Источник данных = (LocalDb) \ v11.0 ... (дополнительные параметры и путь к созданному файлу mdf)

Теперь вы можете создать новое соединение с именем сервера: (LocalDb) \ v11.0 (обновить нажатие) Подключиться к базе данных: выберите новую базу данных в раскрывающемся списке.

Я надеюсь, что это помогает.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.