SQLDriverConnect зависает, когда клиент ограничивается TLS 1.2 - PullRequest
0 голосов
/ 13 июня 2019

У нас есть некоторый устаревший код (на C), служба Windows, которая подключается через драйвер {SQL Server} к базе данных SQL Server. Клиент, который использовал его в течение ряда лет, недавно решил ограничить протоколы на своем сервере в TLS 1.2. Теперь служба не будет подключаться к базе данных.

Попытка изменить диск {SQL Server} на {Драйвер ODBC 17 для SQL Server}, и вызов SQLDriverConnect зависает на неопределенное время. Если бы кто-нибудь мог дать какое-то понимание, мы были бы вечно благодарны.

SQLHENV     hEnv = NULL;
SQLHDBC     hDbc = NULL;
char        inString[512];
char        outString[512];
SQLSMALLINT outLength;

SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &hEnv);
SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
SQLAllocHandle(SQL_HANDLE_DBC, hEnv, &hDbc);

outLength = 512;
memset(outString, 0, 512);
strcpy(inString, "Driver={ODBC Driver 17 for SQL Server};Server=MYSERVER\\MYINSTANCE;Database=MYDB;UID=sa;PWD=MYPASSWORD");
SQLDriverConnect(hDbc, NULL, inString, (SQLSMALLINT)strlen(inString), outString, 512, &outLength, SQL_DRIVER_NOPROMPT);


SQLDisconnect(hDbc);
SQLFreeHandle(SQL_HANDLE_DBC, hDbc);

SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...