Строка подключения для экземпляра по умолчанию, как для именованного экземпляра - PullRequest
5 голосов
/ 10 августа 2010

В моем приложении .NET я подключаюсь к базе данных Microsoft SQL Server 2005 или 2008. Пользователь выбирает экземпляр, который приложение показывает, и приложение должно что-то делать с этим экземпляром. Я беру имена экземпляров из реестра: HKLM \ Software \ Microsoft \ Microsoft SQL Server \ Имена экземпляров \ SQL.

Я не знаю, выбирает ли пользователь экземпляр по умолчанию или именованный экземпляр (и в значениях реестра имен экземпляров такой информации нет). Однако для подключения к произвольному экземпляру я должен использовать либо

Server=(local)

или

Server=MSSQLSERVER\instance_name

в моей строке подключения ADO.NET. Могу ли я использовать только один шаблон строки подключения? Я пытался использовать Server = MSSQLSERVER \ MSSQL10.MSSQLSERVER для моего экземпляра SQL Server 2008 по умолчанию, но соединение не удалось.

Ответы [ 2 ]

11 голосов
/ 10 августа 2010

Если имя экземпляра MSSQLSERVER, тогда вы должны использовать шаблон типа Server=servername.Для всех других имен экземпляров используйте шаблон типа Server=servername\instancename.Вы не можете указать имя экземпляра по умолчанию в явном виде.

В качестве примечания не следует указывать в реестре пик.Прежде всего, не имеет документов и подвергается произвольным и необъявленным изменениям.Во-вторых, это неправильно, поскольку экземпляры, которые существуют в реестре, могут не работать.И третье опять неверно, потому что даже запущенные экземпляры могут быть недоступны для подключения, если служба обозревателя SQL их не объявляет.

Рекомендуемый и поддерживаемый способ обнаружения существующих экземпляров - использовать функцию вещания обозревателя SQL иони могут быть использованы из клиентского кода с помощью SmoApplication.EnumAvailableSqlServers.

0 голосов
/ 10 августа 2010

Вы должны использовать Server=servername\instance_name или Server=address\instance_name

...