поиск правильной строки подключения для локального экземпляра SQL

#sql-server #sql-server-express

#sql-сервер #sql-server-express

Вопрос:

Я пытаюсь создать строку подключения для тестовой среды, которая будет подключаться к локальному экземпляру SQL Server на разных компьютерах. Цель этого заключается в том, чтобы разработчик мог извлекать код из TFS, создавать его и запускать тестовые наборы, подключаясь к своей локальной базе данных. Проблема в том, что на компьютерах разных разработчиков могут быть разные настройки SQL Server. В частности, на некоторых может быть запущен полный сервер, на других может быть запущен SQL Server Express.

Я пытаюсь настроить утилиту, которая будет использовать строку подключения шаблона (например, Data Source=(local); Initial Catalog= myDB; Integrated Security=SSPI; ) и изменять источник данных для работы с локальным сервером.

Я пробовал использовать SmoApplication.EnumAvailableServers() (возвращает пустую таблицу, независимо от того, использую ли я параметры true или false), и SqlDataSourceEnumerator.GetDataSources() (возвращает 2888 серверов из сети, но ни одного на локальном компьютере), SQLCMD -L (ничего не возвращает).

Есть предложения?

В качестве альтернативы, есть ли простой способ определить, будет ли конкретная строка подключения подключаться к серверу (не дожидаясь истечения тайм-аута, если это не так). Если бы я мог найти ответ на этот вопрос, я мог бы попробовать вероятные подозреваемые, пока не получу один для работы.

Ответ №1:

вы можете попытаться получить строку подключения следующим образом:

  1. Создайте новый пустой файл и назовите его test.udl.

  2. Дважды щелкните по ней, и должно появиться диалоговое окно «Свойства канала передачи данных».

  3. На вкладке «Поставщики» выберите «Поставщик Microsoft OLE DB для SQL Server» или «Собственный клиент SQL»

  4. На вкладке «Подключения» попробуйте различные настройки и используйте кнопку «Проверить подключение», чтобы протестировать их. Нажмите «ОК», когда это сработает.

  5. Откройте файл test.udl в Блокноте и скопируйте строку, начинающуюся с «Provider =», в значение «ConnectionString» вашего Web.config, НО удалите небольшую часть, которая гласит «Provider=SQLNCLI.1;»

Комментарии:

1. Когда он говорит создать новый файл, он имеет в виду что-то на вашем компьютере, а не в какой-то IDE или SSMS. Я, вероятно, единственный идиот, который боролся с этой частью.

Ответ №2:

Если вы хотите, чтобы каждый разработчик работал со своим собственным локальным SQL-сервером, то в строке подключения ADO для источника данных должно быть установлено значение localhost

 ... ; Data Source=localhost; ...
  

Кроме того, чтобы получить список текущих серверов, перейдите в командную строку и запустите

 osql -L
  

Комментарии:

1. Хосе, спасибо за твой ответ, но я пробовал обе эти вещи. Время ожидания источника данных = localhost истекает без подключения, хотя у меня есть экземпляр SQLEXPRESS, запущенный на локальном компьютере. osql -L, как и sqlcmd -L, возвращает пустой список.

2. Попробуйте использовать Data Source = 127.0.0.1. Также проверьте, запущена ли служба «Браузер SQL Server»

Ответ №3:

Вы можете заглянуть в реестр, чтобы найти все локальные экземпляры SQL Server. Этот ключ содержит список: HKEY_LOCAL_MACHINESOFTWAREMicrosoftMicrosoft SQL ServerInstance NamesSQL .

Каждый именованный экземпляр будет иметь значение в этом ключе. Для именованных экземпляров имя значения совпадает с именем экземпляра. Для экземпляра по умолчанию значение будет именоваться MSSQLSERVER .

Ответ №4:

Это сделает свое дело:

 Data Source=.SQLEXPRESS
  

Комментарии:

1. Я не уверен, что это покроет то, что пытается сделать Дейв. Это, конечно, не будет охватывать случаи, когда пользователи не используют версии SQL Server, отличные от SQLEXPRESS

2. Он тестирует в промежуточной среде. Очевидно, что когда он переходит к рабочей среде, он будет указывать на эту базу данных. Его вопрос заключался в том, как указать на его экземпляр SQLEXPRESS на его локальном компьютере.