5

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

произошло ошибки сети связанного или экземпляр конкретной при установлении a подключение к 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 Browser.

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

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

  4. База данных предназначена для входа в систему как для входа в систему, так и для входа в систему.

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

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

UPDATE, вот мой точный код (только в этот раз пароль удаляется, и я добавил картину студии управления работает на той же машине):

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"); 

Connected Via Management Studio: See Picture http://s113.photobucket.com/albums/n202/ozpowermo/?action=view&current=ManagementStudio.jpg

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

Я понял это:

При использовании тыс e «Data Source =» label следует использовать «User Id», если вы используете User ID, похоже, что он работает!

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

ответ

11

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

Из MSDN:

Комплексная безопасность - Когда ложь, ID пользователя и пароль указаны в соединении. Если значение true, текущие учетные данные учетной записи Windows используются для аутентификации.

+0

+1 Nice Объяснение. – Praveen

0

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

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

1

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

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

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

Наконец, я уверен, вы только необходимо 1 слэш, то есть MACHINENAME \ SQLEXPRESS

+0

Спасибо за ответ :) Да, я уже включил все эти настройки, и я могу подключиться к БД с помощью Studio Management, на самом деле я связан с Management Studio прямо сейчас. Я могу ping MACHINENAME, и он возвращает 192.168.0.9 (адрес машины, подключенной к моему маршрутизатору). Это две черты, когда она находится внутри строки, поскольку косая черта считается специальным символом. – Kiril

+0

Да, полностью исправлено на двух косых чертах, подумал, что это было в конфиге. Doh! –

1

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

+0

Он настроен на прием TCP-соединений. У меня есть Management Studio на той же машине, что и мое приложение C#, и я подключен к БД с теми же настройками. – Kiril

+1

Я хотел иметь интегрированную безопасность на моем локальном сервере db, чтобы можно было использовать мои текущие учетные данные учетной записи Windows. Этот ответ заставил меня открыть Инструменты настройки. Когда я запустил агент SQL Server, я мог подключиться из своего приложения C# к базе данных. Спасибо, Колин. – DavidHyogo

2

попробовать этот

string sqlcon=("Data Source="your pc name\\SQLEXPRESS"; 
UserID=sa; 
Password=****; 
Initial Catalog="+MyDatabase+"; 
IntegratedSecurity=True;"); 
Смежные вопросы