SQL1109N Менеджер баз данных не может загрузить gsk8ssl_64.dll SQLSTATE = 42724 для DB2 DSN - PullRequest
0 голосов
/ 10 июля 2020

Я создал DSN DB2 (Db2 для Z / OS) на моем Windows компьютере (Windows Server 2016, 64-разрядная ОС), и я пытаюсь подключиться к нему, используя механизм SSL, предоставив сертификат SSL как Параметры SSLServerCertificate=\path\name.arm и Security=SSL в строке подключения.

Я получаю сообщение об ошибке ниже:

SQL1109N Команда не была обработана, потому что менеджеру баз данных не удалось загрузить gsk8ssl_64.dll SQLSTATE = 42724.

журнал db2diag.log:

2020-07-10-16.59.47.758000+000 I1F1065              LEVEL: Event
PID     : 6636                 TID : 7736           PROC : db2cli.exe
INSTANCE:                      NODE : 000
HOSTNAME: t-b252c140c5170
EDUID   : 7736
FUNCTION: DB2 UDB, RAS/PD component, pdLogInternal, probe:120
START   : New Diagnostic Log file
DATA #1 : Build Level, 240 bytes
Instance "" uses "64" bits and DB2 code release "SQL11054"
with level identifier "0605010F".
Informational tokens are "DB2 v11.5.4000.1449", "s2006161200", "DYN2006161200WIN64", Fix Pack "0".
DATA #2 : System Info, 1760 bytes
System: WIN32_NT t-b252c140c5170  10.0 AMD64 Family 6, model 79, stepping 1
CPU: total:4 online:4 Cores per socket:4 Threading degree per core:1 SIMD:Y CPU Features:SSE2,SSE3,SSSE3,SSE4,AVX2
CPU binding: not in use
Physical Memory(MB): total:14336 free:10165 available:10165
Virtual  Memory(MB): total:16512 free:12341
Swap     Memory(MB): total:2176 free:2176
Information in this record is only valid at the time when this file was
created (see this record's time stamp)

2020-07-10-16.59.48.289000+000 I1069F625            LEVEL: Error
PID     : 6636                 TID : 7736           PROC : db2cli.exe
INSTANCE:                      NODE : 000
HOSTNAME: t-b252c140c5170
EDUID   : 7736
FUNCTION: DB2 UDB, common communication, sqlccCreateDefaultKeyDB, probe:275
MESSAGE : ZRC=0x00000002=2
          SQL0002N  The bind file name is not valid.

          DIA8002C A deadlock has occurred, rolling back transaction.
DATA #1 : <preformatted>
GSKKM_StoreCACert: GSKit Error = 2,
KeyDB = ,
EncPassLen = 32, PwdLen = 1024, DefaultKeyDBUsed = 1,
ServerCert = C:\PPATrustStore\db2cert.arm.

2020-07-10-16.59.48.289000+000 I1696F434            LEVEL: Error
PID     : 6636                 TID : 7736           PROC : db2cli.exe
INSTANCE:                      NODE : 000
HOSTNAME: t-b252c140c5170
EDUID   : 7736
FUNCTION: DB2 UDB, common communication, sqlccMapSSLErrorToDB2Error, probe:275
MESSAGE : DIA3604E The SSL function "GSKKM_StoreCACert" failed with the return 
          code "2" in "sqlccCreateDefaultKeyDB".

2020-07-10-16.59.48.289000+000 I2132F553            LEVEL: Error
PID     : 6636                 TID : 7736           PROC : db2cli.exe
INSTANCE:                      NODE : 000
HOSTNAME: t-b252c140c5170
EDUID   : 7736
FUNCTION: DB2 UDB, common communication, sqlccLoadSSLLibrary, probe:310
RETCODE : ZRC=0x0000005B=91
          SQL0091W  Precompilation or binding was ended with "" errors and "" 
          warnings.

          DIA8102C Conversion table not loaded. Source code page "", Target 
          code page "", method "", handle "".

2020-07-10-16.59.48.289000+000 I2687F553            LEVEL: Error
PID     : 6636                 TID : 7736           PROC : db2cli.exe
INSTANCE:                      NODE : 000
HOSTNAME: t-b252c140c5170
EDUID   : 7736
FUNCTION: DB2 UDB, common communication, sqlccLoadSSLLibrary, probe:310
RETCODE : ZRC=0x0000005B=91
          SQL0091W  Precompilation or binding was ended with "" errors and "" 
          warnings.

          DIA8102C Conversion table not loaded. Source code page "", Target 
          code page "", method "", handle "".

2020-07-10-16.59.48.289000+000 I3242F355            LEVEL: Error
PID     : 6636                 TID : 7736           PROC : db2cli.exe
INSTANCE:                      NODE : 000
HOSTNAME: t-b252c140c5170
EDUID   : 7736
FUNCTION: DB2 UDB, common communication, sqlccLoadSSLLibrary, probe:998
MESSAGE : DIA3603E SSL was not setup. Return code = "91".

2020-07-10-16.59.48.305000+000 I3599F527            LEVEL: Severe
PID     : 6636                 TID : 7736           PROC : db2cli.exe
INSTANCE:                      NODE : 000
HOSTNAME: t-b252c140c5170
EDUID   : 7736
FUNCTION: DB2 UDB, DRDA Communication Manager, sqljcCommConnect, probe:10
MESSAGE : ZRC=0x8636000A=-2043281398=SQLZ_RC_FNEX, SQLT_SQLJC
          "File Does Not Exist"
          DIA8411C A file "" could not be found.
DATA #1 : String, 11 bytes
CCI Error: 
DATA #2 : unsigned integer, 8 bytes
91

1 Ответ

0 голосов
/ 14 июля 2020

Стандартный образ 2016 Windows -сервера по умолчанию не будет включать пакеты Microsoft Visual C++ redistributable.

Часть IBM clidriver, используемая odbcad32.exe для теста Connect, имеет зависимость на эти распространяемые файлы, и если эти пакеты не установлены, сообщение об ошибке от odbcad32 (не удается загрузить модуль gsk8ssl_64.dll или аналогичный) может не указывать на настоящую причину ошибки.

В настоящее время, похоже, зависимость от библиотек DLL Microsoft Visual C ++ 2012.

Это происходит, несмотря на то, что соответствующие библиотеки DLL (msvc*.dll) по умолчанию присутствуют в дереве clidriver (в зависимости от версии clidriver), но Windows есть не выполняет поиск в этих каталогах (например, с clidriver v11.5.4.0 под clidriver\msg\en_US\amd64.VC12.CRT для 64-разрядной версии. Другие версии могут иметь другие пути или другое содержимое). MS- Windows может потребоваться, чтобы эти библиотеки DLL присутствовали в его собственных каталогах system32 и Syswow64.

Кажется, что clidriver мог бы лучше проверять зависимости и улучшать сообщения об ошибках.

Вы можете скачать соответствующие пакеты с microsoft.com (например, vcredist_x64.exe и vcredist.x64.exe) или убедитесь, что библиотеки DLL в clidriver\msg\en_US\amd64.VC12.CRT (в зависимости от версии clidriver) находятся в системном PATH.

Одно требование: Db2 must be installed on a drive with short names enabled or a directory with no spaces such as E:\DB2\SQLLIB, который задокументирован здесь .

Помимо этого, у вас могут быть другие зависимости, в частности, потому что вы хотите использовать clidriver для certificate authentication в Db2-for-Z / OS.

Доступ из интерфейса командной строки к Db2-for-Z / OS не является бесплатным с драйверами, поставляемыми IBM, поэтому может потребоваться соответствующая лицензия на стороне клиента, если ваша база данных не настроена с помощью db2connectactivate.

Если вам нужно более одного файла сертификата для одного подключения, вам необходимо установить GSK8, а затем создать и заполнить хранилище ключей и sta sh. GSK8 доступен в центре исправлений IBM для пользователей с правильными правами.

GSK8 не требуется для единого сертификата сценариев использования, например, при использовании TLS с SSLServerCertificate.

Когда вы подключаетесь к Db2-for-Z / OS, у компании будет заключен контракт на поддержку IBM, который позволит вам получить соответствующее программное обеспечение и точные сведения о конфигурации, которые в документации могут еще не содержаться достаточно подробно.

...