2014-02-02 3 views
0

Как подключиться к базе данных SQL Server, используя логин/пароль пользователя, который находится в другом домене?Подключиться к SQL Server с учетными данными пользователя другого домена

Если я использовать учетную запись для подключения к БД, он отлично работает:

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=server_name;DATABASE=testdb;UID=MY_Domain\\username;PWD=pass; Trusted connection=YES') 

Но мне нужно использовать учетные данные другого пользователя, как

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=server_name;DATABASE=testdb;UID=Another_Domain\\username;PWD=pass; Trusted connection=YES') 

При попытке последнего я получаю сообщение об ошибке «неудачный логин для MY_Domain \ username», а не для пользователя «Another_Domain \ username».

В обоих случаях при запуске SQL Server Management Studio я могу использовать проверку подлинности Windows для подключения к db.

+0

Это хороший вопрос. Как я могу это проверить? Есть интересная вещь, что я могу подключиться к серверу ms sql, если я запустил Managment Studio от имени этого права пользователя – Leo

+0

нет, не было. Я думаю, что проблема в том, что между обоими доменами нет доверия. – Leo

+0

Нет, это не так. Пожалуйста, прочитайте ответ ниже. Если бы не было доверия, это не сработало бы из SSMS –

ответ

4

Вы не можете передать UID и Password и установить Trusted_connection=True (вашу вторую строку подключения) для подключения в качестве пользователя (вылившего себя). Вы можете подключиться как пользователь SQL Server (имя пользователя и пароль) или как пользователь, прошедший проверку подлинности Windows (надежное соединение).

Ваш код должен олицетворять пользователя Windows (как SSMS), а затем установить Trusted_connection=Trueтолько.

Эта страница MSDN WindowsIdentity.Impersonate имеет пример.

Поскольку это работает с SSMS, это предполагает наличие необходимого доверия между доменами.

+0

Этот момент был ключевым и очень полезным. Благодарю. – S4nd33p

+0

@ S4nd33p Эй, я сталкиваюсь с той же проблемой, можете ли вы рассказать мне, как вы ее решили? Вы нашли способ использовать python? Спасибо за ваше время – Tbaki

+1

Да, @Tbaki, я мог бы подключиться через python. Фактически, вы либо должны позволить программе обрабатывать его автоматически, не вставляя доверенное предложение соединения, либо устанавливать Trusted_connection = False при передаче действительного UID/PWD. Пример: cnxn = pyodbc.connect ('DRIVER = {SQL Server}; SERVER =' + str (os.environ ['DataSource']) + '; DATABASE =' + str (os.environ ['Database']) + '; UID =' + str (os.environ ['userID']) + '; PWD =' + str (os.environ ['password'])) – S4nd33p

Смежные вопросы