#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:
вы можете попытаться получить строку подключения следующим образом:
-
Создайте новый пустой файл и назовите его test.udl.
-
Дважды щелкните по ней, и должно появиться диалоговое окно «Свойства канала передачи данных».
-
На вкладке «Поставщики» выберите «Поставщик Microsoft OLE DB для SQL Server» или «Собственный клиент SQL»
-
На вкладке «Подключения» попробуйте различные настройки и используйте кнопку «Проверить подключение», чтобы протестировать их. Нажмите «ОК», когда это сработает.
-
Откройте файл 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 на его локальном компьютере.