У меня установлен 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 и использовать ее.