Использование собственного клиента SQL Server для доступа к SQL Server LocalDB

Я пытаюсь подключиться к экземпляру SQL Server LocalDB с помощью драйвера собственного клиента SQL Server. Это связано с тем, что мы хотим использовать собственный клиент в нашей производственной среде, чтобы получить доступ к использованию альтернативных имен субъектов при шифровании SSL для SQL Server. Пока мне не очень везет - это поддерживаемый сценарий? Моя строка подключения:

<add name="Database" connectionString="Driver={SQL Server Native Client};Server=(localdb)\v11.0;Integrated Security=True;AttachDBFileName=|DataDirectory|Database.mdf;" providerName="System.Data.Odbc" />

Ошибка, которую я получаю:

ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified

Есть мысли как подключить?


person Colin Bowern    schedule 24.04.2012    source источник
comment
1. У вас включены удаленные подключения в свойствах подключения (база данных), 2. Пробовали ли вы (local) вместо (localdb) ?   -  person Control Freak    schedule 25.04.2012
comment
@Zee - я пытаюсь запустить экземпляр LocalDB, а не получить доступ к фиксированному экземпляру SQL.   -  person Colin Bowern    schedule 25.04.2012


Ответы (3)


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

Driver={SQL Server Native Client 11.0}

Microsoft назвала это давным-давно:

Обратите внимание: поскольку логика активации находится в поставщике на стороне клиента, вам необходимо установить последнюю версию — собственный клиент SQL Server «Denali» (для ODBC и OLE DB) или следующую версию .NET Framework (для ADO.NET).

person ta.speot.is    schedule 25.04.2012
comment
Переход на явный драйвер 11.0 не помог. Получение того же сообщения об ошибке. Воспроизведено с вызовом new System.Data.Odbc.OdbcConnection(@Driver={SQL Server Native Client 11.0};Server=(localdb)\v11.0;Integrated Security=True;AttachDBFileName=|DataDirectory|Database.mdf ;).Открытым(); - person Colin Bowern; 25.04.2012
comment
Итак, я думаю, это помогает, если у вас установлены фактические биты SQL Server 2012 Native Client. Я сделал роковое предположение, что установка LocalDB также поставила бы эти биты на место. :( - person Colin Bowern; 25.04.2012
comment
Для записи использовалась последняя строка подключения: Driver={SQL Server Native Client 11.0};Server=(localdb)\v11.0;Integrated Security=True;AttachDBFileName=|DataDirectory|Database.mdf; - person Colin Bowern; 25.04.2012
comment
@ColinBowern Я заметил, что вы используете AttachadBFileName. Пользовательские экземпляры устарели, их заменяет SQL LocalDB. - person ta.speot.is; 26.04.2012

Помимо использования провайдера 11.0,

  • Вы создали экземпляр SqlLocalDb?
  • Вы запускали экземпляр?
  • Если вы не владелец, пробовали ли вы (localdb)\.\InstanceName?

Недавно я обновил кучу контента на следующей вики-странице:

http://social.technet.microsoft.com/wiki/contents/articles/4609.troubleshoot-sql-server-2012-express-localdb.aspx

Кроме того, в вашей строке подключения указаны как собственный клиент, так и ODBC, это сделано намеренно? И вы используете AttachDbFilename специально?

person Aaron Bertrand    schedule 25.04.2012
comment
Для собственного клиента вы не используете пространство имен System.Data.Odbc для подключения к нему? Я пытаюсь избежать предварительного запуска экземпляра. В ADO.NET простой вызов (localdb)\v11.0 с AttachDBFilename запустит экземпляр для меня. - person Colin Bowern; 25.04.2012
comment
@ColinBowern Вы можете использовать собственный клиент SQL через ODBC, OLEDB (но не версии после 11/2012) или ADO .NET SqlConnection. - person ta.speot.is; 26.04.2012

Ниже показано, как я решаю это после 3 дней напряженных исследований и попыток, с моими пожеланиями счастливых праздников и отличного Нового года:

  1. в диспетчере конфигурации SQL Server (SQLServerManager11.msc) на подмостках слева: a. щелкните правой кнопкой мыши собственный клиент MS SQL Server (в моем случае 11.0) «Протоколы клиента» и в правом списке щелкните правой кнопкой мыши TCP / IP, чтобы отключить его, разрешив включить только «совместное использование памяти» (как порядок ранжирования № 1) и « именованный трубопровод (как ранг № 2); б. отступив от строительных лесов MSSQL SNC, щелкните правой кнопкой мыши «Псевдонимы» и в правом списке исключите его полностью пустым; в. вы можете повторить «a» и «b» для MS SQL SNC (32-разрядная версия) опции строительных лесов

причина: как один локальный клиент на той же машине SQL Server LocalDb, нет необходимости в подключении через порты TCP/IP, более эффективные варианты совместного использования памяти или именованного конвейера

  1. в SQL Client Manager (cliconfg.exe) после выбора вкладки «Общие» оставьте список «Включить протоколы по порядку» справа полностью пустым и отметьте оператор «Включить протокол совместного использования памяти»; затем выберите вкладку «Псевдоним», сделав список «Конфигурация псевдонима сервера» полностью пустым.

причина: то же, что и "1", теперь настройка на стороне клиента

  1. кусок пирога сейчас: а. запустите MS SQL SNC, подключившись к вашей локальной базе данных\экземпляру - обычно (localdb)\v11.0 - при необходимости в SQL Server Management Studio (SSms.exe) запустив и подключившись к нужной базе данных или сделав это подключение через Visual Studio b. запустите Администратор ODBC (odbcad32.exe), выберите вкладку «Источник данных пользователя», нажмите «Добавить», во всплывающем окне введите имя базы данных (общее, на которое будет ссылаться позже), описание базы данных (идентификатор), сервер «localdb\instance». имя, нажмите «Далее», еще раз «Далее», теперь отметьте «Изменить стандартную базу данных на» и в списке выберите нужную базу данных, подключенную и прикрепленную к «а», нажмите «Далее», нажмите «Конец»; затем в новом всплывающем окне нажмите «Проверить источник данных», чтобы убедиться, что он успешен; сделано
person greenish    schedule 02.01.2015