Строка подключения SQL Server Express c # 2008 - PullRequest
6 голосов
/ 15 июня 2009

У меня SQL Server Express 2008 установлен на одном из моих компьютеров, и я пытаюсь установить удаленное соединение ... когда я использую MS SQL Server Management Studio, я могу без проблем войти в базу данных ( с теми же учетными данными), но когда я пытаюсь создать строку подключения в своем приложении C #, я получаю исключение:

Сетевой или экземплярный произошла ошибка при установлении подключение к SQL Server. Сервер не был найден или не был доступен. Убедитесь, что имя экземпляра правильно и что SQL Server настроен для разрешения удаленного соединения.

Вот как выглядит моя строка подключения (личная информация изменена):

"Data Source="MACHINENAME\\SQLEXPRESS";User ID="Admin";Password="the_password";Initial Catalog="MyDatabase";Integrated Security=True;Connect Timeout=120");

Как я уже сказал, Я могу войти в систему с помощью Management Studio с теми же настройками : с тем же идентификатором пользователя, паролем и именем источника данных, но происходит сбой при попытке открыть соединение с помощью указанной выше строки подключения ,

Примечание:

  1. Я включил удаленное подключение на сервере, отключил брандмауэр, включил соединение TCP / IP с сервером, включил браузер SQL.

  2. Строка подключения работает нормально, когда я нахожусь на той же машине.

  3. Я посмотрел параметр встроенной безопасности и установил для него значение false, просто чтобы убедиться, что он не пытается использовать Windows Login, но все равно не работает.

  4. База данных настроена для входа в Windows и для входа в базу данных.

  5. Я изменил опцию Интегрированная безопасность на SSPI, True и, наконец, False, все 3 дали мне ту же ошибку, что и выше.

Может кто-нибудь сказать мне, если я делаю что-то не так?

ОБНОВЛЕНИЕ, вот мой точный код (на этот раз удален только пароль, и я добавил изображение студии управления, работающей на той же машине):

string _connectionString =
            //string.Format("Server=%s;User ID=%s;Password=%s;Database=%s;Connect Timeout=120", // Same problem
            //string.Format("Server=%s;User ID=%s;Password=%s;Database=%s;Integrated Security=False;Connect Timeout=120", // Same problem
            string.Format("Data Source=%s;User ID=%s;Password=%s;Initial Catalog=%s;Integrated Security=False;Connect Timeout=120", // Same problem
            "GANTCHEVI\\SQLEXPRESS",
            "FinchAdmin",
            "the_password",
            "Finch");

Подключено через Management Studio: см. Рисунок http://s113.photobucket.com/albums/n202/ozpowermo/?action=view&current=ManagementStudio.jpg

http://s113.photobucket.com/albums/n202/ozpowermo/?action=view&current=ManagementStudio.jpg

Я выяснил это:

При использовании метки «Data Source =» следует использовать «Идентификатор пользователя», если вы используете Идентификатор пользователя, похоже, он не работает!

string _connectionString = "Data Source=GANTCHEVI\\SQLEXPRESS;Initial Catalog=Finch;Integrated Security=False;User Id=FinchAdmin;Password=the_password;Connect Timeout=0";"

Ответы [ 5 ]

12 голосов
/ 15 июня 2009

Удалить Integrated Security = True из строки подключения и (необязательно) добавить Persist Security Info = True;

Из MSDN:

Integrated Security - при значении false в соединении указываются идентификатор пользователя и пароль. При значении true для проверки подлинности используются учетные данные текущей учетной записи Windows.

2 голосов
/ 19 августа 2012

попробуйте

string sqlcon=("Data Source="your pc name\\SQLEXPRESS"; 
UserID=sa;
Password=****;
Initial Catalog="+MyDatabase+"; 
IntegratedSecurity=True;");
1 голос
/ 15 июня 2009

Возможно, ваш экземпляр SQL не настроен для приема входящих соединений TCP, вы можете проверить это в Пуск-> SQL Server 2008 -> Инструменты настройки -> Диспетчер конфигурации SQL Server. В левой части этого инструмента вы увидите конфигурацию сети, разверните ее, чтобы увидеть, какие протоколы включены.

1 голос
/ 15 июня 2009

Хорошо - я полагаю, что вы попробовали все эти http://blogs.msdn.com/sqlexpress/archive/2005/05/05/415084.aspx

Вы пробовали sqlping на MACHINENAME \ SQLEXPRESS

Можете ли вы пинговать MACHINENAME

Наконец, я уверен, что вам нужна только одна косая черта, т. Е. MACHINENAME \ SQLEXPRESS

0 голосов
/ 15 июня 2009

Что если вы используете Integrated Security = SSPI?

Если вы не хотите использовать вход в Windows, я думаю, что другой ответ об удалении параметра Integrated Security правильный.

...