Фон
Microsoft SQL Server поддерживает два разных метода проверки подлинности: проверка подлинности SQL Server и проверка подлинности Windows. Важно понимать, в чем разница с настройкой SQL Server.
Для аутентификации SQL Server сам SQL Server должен поддерживать базу данных имен пользователей и паролей, которым разрешен доступ к базе данных. Процесс SQL Server отвечает за аутентификацию пользователей, сравнивая имя пользователя и пароль (хэш) с собственной базой данных. Этот метод входа не позволяет использовать единый вход, поскольку он не интегрирован с Windows, а предоставленные учетные данные полностью не связаны с учетными данными учетной записи Windows (локальной или локальной).
Проверка подлинности Windows использует стандартную проверку подлинности Windows для доступа к базе данных. SQL Server по-прежнему отвечает за авторизацию («Разрешен ли Боб?"), но Windows теперь становится ответственным за аутентификацию (" Это действительно Боб?"«). Вы не можете вводить учетные данные при использовании аутентификации Windows; Вот почему поля ввода имени пользователя и пароля отключаются в SQL Server Management Studio при выборе проверки подлинности Windows. Какой бы пользователь ни выполнял клиентскую программу, так же как и пользователь, прошедший проверку подлинности на SQL Server (вы можете переопределить, какой пользователь проходит проверку подлинности, используя runas /netonly
).
Когда программа пытается получить доступ к SQL Server через проверку подлинности Windows, SQL Server просит Windows подтвердить подлинность пользователя. Если это локальный пользователь, Windows проверяет свою локальную базу данных пользователей и возвращает да или нет. Если учетная запись является учетной записью домена, а компьютер присоединен к любому домену, Windows выполняет аутентификацию в Active Directory. Active Directory проверит пользователя, если он существует где-то в доверенном лесу (либо в текущем домене, либо в доверенном домене).
Ваша ситуация
Ваша копия SQL Server работает на компьютере вне домена. Когда вы подключаете удаленный рабочий стол к компьютеру, вы запускаете программы как локальный пользователь. Когда вы используете "Доверенное соединение" (что в действительности означает "Использовать проверку подлинности Windows"), Windows знает, кто является вашей локальной учетной записью, и проверяет ее. SQL Server позволяет вам получить доступ.
Когда вы запускаете программу на компьютере, присоединенном к домену, и пытаетесь пройти проверку подлинности с помощью проверки подлинности Windows, вы пытаетесь пройти проверку подлинности на компьютере, не являющемся доменом, с использованием учетных данных домена. Компьютер без домена не знает, как проходить аутентификацию через домен (по определению, он не доверяет домену), поэтому аутентификация не проходит.
Возможные решения
Используйте аутентификацию SQL Server. Используйте инструмент, такой как SQL Server Management Studio, для создания имен входа SQL Server для каждого пользователя, которому требуется доступ. Вы не сможете использовать флажок "Использовать доверенное соединение", и пользователям всегда нужно будет вводить свои учетные данные для SQL Server. В зависимости от того, какая программа пытается получить доступ к SQL Server, она может предоставить какой-либо метод для сохранения учетных данных в реестре, или пользователи могут защитить локальное хранилище, чтобы пользователю не приходилось каждый раз вводить их.
Когда вы запускаете SQL Server Management Studio локально, запустите его с помощью команды runas
следующим образом:
runas /user:username /netonly "C:\Path\to\SSMS.exe"
Это позволит вам использовать проверку подлинности Windows, поскольку вместо того, чтобы передавать свои учетные данные, вошедшие в систему, вы будете передавать учетные данные для учетной записи "username". Эта учетная запись должна существовать на целевой машине.
Присоедините компьютер с SQL Server к домену и используйте. (Вам также может потребоваться запустить SQL Server как учетную запись домена, а не как локальную учетную запись, но я не уверен.) На этом этапе SQL Server сможет проверять подлинность пользователей с помощью Active Directory, а "Использовать доверенное соединение" будет работать без ввода учетных данных. Конечно, вам все равно нужно решить, какие пользователи авторизованы для доступа к базе данных; Вы можете использовать SQL Server Management Studio для этого.
Продвиньте сервер, на котором запущен SQL Server, на контроллер домена нового домена (единственным участником которого он является). Затем вы можете создать доверие между двумя доменами, чтобы компьютер SQL Server мог отправлять учетные данные в другой домен для проверки подлинности, и проверка подлинности Windows будет работать. Нет необходимости вводить учетные данные. Вам все еще нужно будет авторизовать пользователей в SQL Server Management Studio.