Назад | Перейти на главную страницу

C # / SQL Server: ошибка входа при подключении с удаленного компьютера

У меня установлен SQL Server 2008 Express на одном компьютере, и я пытаюсь подключиться с помощью своего приложения C # к серверу с другого компьютера (оба Win 7). На сервере есть моя учетная запись в системе. SQL Server настроен на использование проверки подлинности Windows. Брандмауэр на сервере имеет правила для входящих подключений, которые принимают порты 1433 для TCP и 1434 для UDP, а также принимают exe сервера.

Проблема: не могу подключиться к серверу. Какую бы строку подключения я ни использовал, я получаю ошибки:

System.Data.SqlClient.SqlException (0x80131904): Login failed for user 'SERVINGMACHINE\wally'.

или

System.Data.SqlClient.SqlException (0x80131904): Login failed. The login is from an untrusted domain and cannot be used with Windows authentication.

Пример моей строки подключения:

SqlConnection myConnection = new SqlConnection("Integrated security=true;" +
  @"user id=SERVERMACHINE\wally;" +
  //"password=testpasswd;" +
  @"server=10.127.40.1,1433\SQLEXPRESS;" + 
  "Trusted_Connection=true;" +
  "database=nscm_db; " +
  "connection timeout=30");

Я закомментировал пароль, поскольку он якобы не используется для доверенного соединения.

Когда приложение и сервер находятся на одном компьютере, соединение работает нормально.

Что я делаю не так?

Вы неправильно понимаете, что означает «Integrated Security = true».

«Истина» означает использование учетных данных текущего процесса и без указания имени пользователя или пароля.

Свойство SqlConnection.ConnectionString
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring%28v=vs.100%29.aspx

«... Если указаны идентификатор пользователя и пароль, а для параметра Integrated Security задано значение true, идентификатор пользователя и пароль будут проигнорированы и будет использоваться встроенная безопасность».

Если вы используете надежные учетные записи, вы не должны указывать имя для входа. Соединения будут выполняться с использованием того, с чем вы вошли в систему.

Являются ли два компьютера членами одного домена Active Directory? Если нет, вы можете попробовать создать одну и ту же учетную запись на обеих машинах, включая совпадающие пароли. Я не уверен, работает ли это под Windows 7, я не пробовал это с первых дней Windows XP или, возможно, даже Windows 2000.

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