我正在尝试将 UPS WorldShip 与 SQL Server 2008 R2 数据库集成,但连接非常不稳定。UPS 声称这是 DSN/Windows 问题,但我无法说服他们。
集成非常简单:我的送货员单击一个按钮,打开一个表单,输入订单号。按下回车键后,将从数据库中提取该订单号的送货信息。
问题是 WorldShip 经常认为 DSN 不存在。但是,我可以打开 WorldShip 的自定义工具并浏览我的 DSN 所连接的数据库中的所有表和字段,这至少意味着我的 DSN 确实存在。
之所以很难排除故障,是因为问题没有一致性,我无法可靠地重复任何行为。也就是说,重新启动 PC 不会导致连接中断,打开集成工具并查看表格和字段不会导致集成按钮工作。
有没有什么方法可以帮助我监视来自 SQL 服务器的此连接或获取有关其失败原因的任何线索?
应 TallTed 的要求,这是我创建的跟踪文件的一个示例。仅仅 5 小时后,跟踪文件就超过 130MB,因此我无法提供完整的文件。
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
由于手头的信息有限,我猜测您已经定义了一个用户 DSN,而它应该是系统 DSN。
如果不是这样,我们至少需要看到发生故障时出现的确切错误消息。客户端 ODBC 跟踪可能比 SQL Server 日志显示更多信息。
祝你好运!