2016-02-17 1 views
0

Я работаю над проектом VBA, в котором мне нужно подключиться как к SQL, так и к базе данных DB2. Я использую ADODB-соединение в обоих случаях. SQL работает нормально и использует учетные данные Windows. Я могу заставить соединение DB2 работать, передав имя пользователя и пароль, но не используя учетные данные Windows (они одинаковые). Пожалуйста, смотрите строку соединения для примера: Строка подключенияПодключиться к DB2 с учетными данными Windows

Этот SQL работает отлично: строка соединения

objConnection.connectionString = "Provider=SQLOLEDB.1; Integrated Security=SSPI; Persist Security Info=False;Data Source= " & strServer & ";Initial Catalog=" & strDatabase 

Это DB2 работает хорошо, пока я прохожу пароль открытым способом:

strConnection = "Provider=IBMDADB2.1; User ID=" + nlUsername + "; Data Source=DB_" + strDatabase + "; Persist Security Info=False" 
objConnection.Open(strConnection, nlUsername, nlPassword) 

Я хотел метод SQL в DB2 - Так что я попробовал это, что делает НЕ ж орк:

objConnection.connectionString = "Provider=IBMDADB2.1; Integrated Security=SSPI; Persist Security Info=False; Data Source=DB_" & strDatabase 

Есть даже возможность подключения к DB2, не передавая имя пользователя и пароль? Я должен пригласить пользователя для этого, чтобы подключиться?

ответ

0

Я предполагаю, что речь идет о DB2 for LUW.

Простой способ сделать это - включить аутентификацию на стороне клиента. Установите следующие параметры конфигурации экземпляра на сервере DB2:

update dbm cfg using authentication client trust_clntauth client trust_allclnts yes 

Вам нужно будет перезапустить экземпляр для того, чтобы изменения вступили в силу (db2stop/db2start).

На клиенте каталог базы данных в вопросе с клиентской стороной аутентификацией:

uncatalog db yourdb 
catalog db yourdb at node whatever authentication client 

Этих последних два шага (uncatalog/catalog) не может быть необходимо, если база данных в настоящее время каталогизированы без явной на стороне сервера аутентификации вариант.

Обратите внимание, что такая конфигурация не очень безопасна, поскольку позволяет любому пользователю Windows напрямую подключаться к базе данных (любая база данных на сервере DB2) без проверки подлинности после входа в Windows. Возможно, вы захотите усилить безопасность в базе данных, отменив все гранты из псевдогруппы PUBLIC и предоставив конкретные разрешения только для идентификатора входа в приложение.

В качестве альтернативы вы можете включить аутентификацию Kerberos, но это гораздо более привлекательный процесс, так как described in the manual.

+0

Спасибо за ответы. Я должен был упомянуть, что на самом деле у меня нет прав администратора для базы данных (это произведение), поэтому я не могу внести эти изменения. Кажется, что я должен предлагать пользователю пароль при подключении к базе данных DB2. – Noceo