Я пытаюсь интегрировать UPS WorldShip с базой данных SQL Server 2008 R2, но соединение очень противоречиво. UPS утверждает, что это проблема DSN/Windows, и я не смог убедить их в обратном.

Интеграция довольно проста: мой экспедитор нажимает кнопку, которая открывает форму, где он вводит заказ #. После нажатия кнопки ввода информация о доставке будет извлечена из базы данных для этого заказа.

Проблема в том, что WorldShip часто думает, что DSN не существует. Однако я могу открыть инструмент настройки WorldShip и просмотреть все таблицы и поля в базе данных, к которой подключен мой DSN, что означает, что, по крайней мере, мой DSN действительно существует.

Причина, по которой это так трудно устранить, состоит в том, что проблема не согласована, и я не могу надежно повторить какое-либо поведение. То есть, перезагрузка ПК не приводит к разрыву соединения и открытию инструмента интеграции, а просмотр таблиц и полей не приводит к работе кнопки интеграции.

Есть ли какой-то способ для меня, чтобы контролировать это соединение с сервера SQL или получить какие-либо подсказки, почему это не удается?

По просьбе TallTed, вот пример файла трассировки, который я создал. Спустя всего 5 часов файл трассировки занял более 130 МБ, поэтому я никак не мог предоставить его полностью.

WorldShipTD     d94-690 EXIT  SQLSetStmtAttrW  with return code -1 (SQL_ERROR)
        SQLHSTMT            0x0C6632A0
        SQLINTEGER                1227 <unknown>
        SQLPOINTER          [Unknown attribute 1227]
        SQLINTEGER                  -5 

        DIAG [IM006] [Microsoft][ODBC Driver Manager] Driver's SQLSetConnectAttr failed (0) 

WorldShipTD     d94-690 ENTER SQLAllocHandle 
        SQLSMALLINT                  3 <SQL_HANDLE_STMT>
        SQLHANDLE           0x0C662FC0
        SQLHANDLE *         0x03EBCE38

WorldShipTD     d94-690 EXIT  SQLAllocHandle  with return code 0 (SQL_SUCCESS)
        SQLSMALLINT                  3 <SQL_HANDLE_STMT>
        SQLHANDLE           0x0C662FC0
        SQLHANDLE *         0x03EBCE38 ( 0x0C6632A0)

WorldShipTD     d94-690 ENTER SQLSetStmtAttrW 
        SQLHSTMT            0x0C6632A0
        SQLINTEGER                   0 <SQL_ATTR_QUERY_TIMEOUT>
        SQLPOINTER                30
        SQLINTEGER                  -5 

WorldShipTD     d94-690 EXIT  SQLSetStmtAttrW  with return code -1 (SQL_ERROR)
        SQLHSTMT            0x0C6632A0
        SQLINTEGER                   0 <SQL_ATTR_QUERY_TIMEOUT>
        SQLPOINTER                30
        SQLINTEGER                  -5 

        DIAG [HYC00] [Microsoft][ODBC Microsoft Access Driver]Optional feature not implemented  (106) 

WorldShipTD     d94-690 ENTER SQLGetDiagFieldW 
        SQLSMALLINT                  3 
        SQLHANDLE           0x0C6632A0
        SQLSMALLINT                  1 
        SQLSMALLINT                  4 
        SQLPOINTER         0x00520708
        SQLSMALLINT                 12 
        SQLSMALLINT *       0x0028E2A8

WorldShipTD     d94-690 EXIT  SQLGetDiagFieldW  with return code 0 (SQL_SUCCESS)
        SQLSMALLINT                  3 
        SQLHANDLE           0x0C6632A0
        SQLSMALLINT                  1 
        SQLSMALLINT                  4 
        SQLPOINTER         0x00520708
        SQLSMALLINT                 12 
        SQLSMALLINT *       0x0028E2A8 (10)

WorldShipTD     d94-690 ENTER SQLGetInfoW 
        HDBC                0x0C662FC0
        UWORD                       77 <SQL_DRIVER_ODBC_VER>
        PTR                 0x03EBCEDC 
        SWORD                      100 
        SWORD *             0x0028E290

WorldShipTD     d94-690 EXIT  SQLGetInfoW  with return code 0 (SQL_SUCCESS)
        HDBC                0x0C662FC0
        UWORD                       77 <SQL_DRIVER_ODBC_VER>
        PTR                 0x03EBCEDC [      10] "03.51"
        SWORD                      100 
        SWORD *             0x0028E290 (10)

WorldShipTD     d94-690 ENTER SQLSetStmtAttrW 
        SQLHSTMT            0x0C6632A0
        SQLINTEGER                1228 <unknown>
        SQLPOINTER          [Unknown attribute 1228]
        SQLINTEGER                  -5 

WorldShipTD     d94-690 EXIT  SQLSetStmtAttrW  with return code -1 (SQL_ERROR)
        SQLHSTMT            0x0C6632A0
        SQLINTEGER                1228 <unknown>
        SQLPOINTER          [Unknown attribute 1228]
        SQLINTEGER                  -5 

        DIAG [HY092] [Microsoft][ODBC Microsoft Access Driver]Invalid attribute/option identifier  (86) 

WorldShipTD     d94-690 ENTER SQLGetDiagFieldW 
        SQLSMALLINT                  3 
        SQLHANDLE           0x0C6632A0
        SQLSMALLINT                  1 
        SQLSMALLINT                  4 
        SQLPOINTER         0x00520708
        SQLSMALLINT                 12 
        SQLSMALLINT *       0x0028E2A8

WorldShipTD     d94-690 EXIT  SQLGetDiagFieldW  with return code 0 (SQL_SUCCESS)
        SQLSMALLINT                  3 
        SQLHANDLE           0x0C6632A0
        SQLSMALLINT                  1 
        SQLSMALLINT                  4 
        SQLPOINTER         0x00520708
        SQLSMALLINT                 12 
        SQLSMALLINT *       0x0028E2A8 (10)

WorldShipTD     d94-690 ENTER SQLSetStmtAttrW 
        SQLHSTMT            0x0C6632A0
        SQLINTEGER                1227 <unknown>
        SQLPOINTER          [Unknown attribute 1227]
        SQLINTEGER                  -5 

WorldShipTD     d94-690 EXIT  SQLSetStmtAttrW  with return code -1 (SQL_ERROR)
        SQLHSTMT            0x0C6632A0
        SQLINTEGER                1227 <unknown>
        SQLPOINTER          [Unknown attribute 1227]
        SQLINTEGER                  -5 

        DIAG [HY092] [Microsoft][ODBC Microsoft Access Driver]Invalid attribute/option identifier  (86) 

WorldShipTD     d94-690 ENTER SQLGetDiagFieldW 
        SQLSMALLINT                  3 
        SQLHANDLE           0x0C6632A0
        SQLSMALLINT                  1 
        SQLSMALLINT                  4 
        SQLPOINTER         0x00520708
        SQLSMALLINT                 12 
        SQLSMALLINT *       0x0028E2A8

WorldShipTD     d94-690 EXIT  SQLGetDiagFieldW  with return code 0 (SQL_SUCCESS)
        SQLSMALLINT                  3 
        SQLHANDLE           0x0C6632A0
        SQLSMALLINT                  1 
        SQLSMALLINT                  4 
        SQLPOINTER         0x00520708
        SQLSMALLINT                 12 
        SQLSMALLINT *       0x0028E2A8 (10)

1 ответ1

0

Имея ограниченную информацию, я думаю, вы определили DSN пользователя, где он должен быть системным DSN.

Если это не так, нам минимально нужны точные сообщения об ошибках, которые будут видны, когда что-то пойдет не так. Трассировка ODBC на стороне клиента, вероятно, выявила бы больше, чем журнал SQL Server.

Удачи!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .