Прежде всего, я могу подключиться к обеим базам данных с помощью SQL Server Enterprise Manager, так что я знаю, что серверы работают и доступны. Один из них - SQL1, другой - SQLTEST.
В моей программе, когда я использую следующую строку подключения, она работает подключается просто отлично:
conn = New DBConnect("Data Source=SQL1;Initial Catalog=SignInspection;Integrated Security=SSPI")
Однако, если я изменю SQL1
на SQLTEST
, время соединения истечет, я не получу никаких ошибок, кроме ошибки времени ожидания.
Я могу запустить профилировщик на SQLTest и увидеть, что он совершенно определенно даже не пытается подключиться. Ничего не происходит, ни писк, ни привет.
Есть идеи? Спасибо
EDIT:
Что ж, сейчас спорный вопрос, потому что у меня правильно работает аутентификация на нашем сервере SQL1.
Я опубликую конфигурацию здесь, так что, возможно, кто-то другой может извлечь выгоду.
Прежде всего, веб-сервер работает под управлением IIS и .NET. Пользователи входят в интрасеть с помощью Active Directory, и странице .NET необходимо получить свои учетные данные для входа (имя пользователя наиболее заметно). База данных - SQL Server 2005, работающая на другом компьютере. Но приложению .NET необходимо выдать себя за от имени другого пользователя для подключения к базе данных.
Чтобы успешно выполнить обе эти задачи, перейдите в Windows> Выполнить, введите inetmgr и нажмите Выполнить. Перейдите на сайт и щелкните правой кнопкой мыши> свойства, затем перейдите на вкладку под названием Безопасность каталогов , щелкните Изменить .. , убедитесь, что только Интегрированная Windows Аутентификация и Дайджест-аутентификация включены. Введите правильную область AD и нажмите OK. Применить настройки / нажать OK.
В web.config вам нужны следующие строки
<authentication mode="Windows" />
<identity impersonate="true" username="myDomain\MyUserName" password="123mypasswordgoeshere">
заменяя, конечно, myDomain \ MyUserName и 123mypasswordgoeshere именем пользователя и паролем, которые имеют права входа в систему как на вашем домене, так и на вашем сервере sql. Строка подключения, вероятно, может быть изменена, но она моя, и она работает:
Server=SQL1;Database=SignInspection;Trusted_connection=True;
Это шаги, которые сработали для меня, и, надеюсь, они пригодятся кому-то еще.