Microsoft Access ODBC 连接字符串限制为 255 个字符?

Posted

技术标签:

【中文标题】Microsoft Access ODBC 连接字符串限制为 255 个字符?【英文标题】:Microsoft Access ODBC Connection Strings Limited to 255 Characters? 【发布时间】:2011-07-21 21:10:06 【问题描述】:

Microsoft Access 2003 数据库 (.mdb) 包含通过 ODBC 连接到后端 Microsoft SQL Server 2008 表的链接表。

当我进入链接表的设计视图,然后查看属性字段时,我只能看到前 255 个字符(特定字段替换为连字符):

ODBC;Description=------------------------------------;DRIVER=SQL Server;SERVER=----;APP=--------------------------------;WSID=---------;DATABASE=------------------;StatsLog_On=Yes;StatsLogFile=--------------------------------------------------------------

当我使用 VBA 即时窗口打印 DAO 字段时(表名省略:“print CurrentDb.TableDefs("-----------").Connect"),我看到一个前缀加上 254字符(前缀 "ODBC;Description=" 加上 254 个字符,再加上大概是一个单字节空字符):

ODBC;Description=------------------------------------;DRIVER=SQL Server;SERVER=----;APP=--------------------------------;WSID=---------;DATABASE=------------------;StatsLog_On=Yes;StatsLogFile=------------------------------------------------------------------;Trusted_Co

如何查看 ODBC 连接字符串的整个文本?

我们遇到的问题是 SQL Server 服务器日志显示错误“用户“user”登录失败。原因:找不到与提供的名称匹配的登录名。[CLIENT: ip address]”

我正在尝试确认完整的字符串“Trusted_Connection=Yes”是存储字符串的一部分。

【问题讨论】:

看起来可能没有办法。命令 "print RIGHT(CurrentDb.TableDefs("-----").Connect, 10)" 显示 "Trusted_Co" :o( 虽然这可以解释为什么没有使用 Windows 身份验证?我正在使用 刚刚注意到另一个观察结果:属性字段显示 255 个字符,包括“ODBC;Description=”前缀,而“即时窗口”显示“ODBC;Description=”之后的 254 个字符。所以,在这两种情况下,我似乎都达到了 2^8 的限制。 【参考方案1】:

问题原来是 Microsoft Access (2003/2010) 对 ODBC 连接字符串的限制。

我删除了对 StatsLog 的 ODBC 引用,并重新链接了 Microsoft Access 数据库中的所有表。一周过去了,DBA 团队没有再报告服务器日志错误。

【讨论】:

【参考方案2】:

Access 2016 更新:

连接字符串的最大长度

链接表:513 个字符 直通查询:255 个字符

(OP 询问了 Access 2003,但这个问题是关于这个主题的唯一问题。)

【讨论】:

【参考方案3】:

试试 Shift-F2。这是整个 Access 中缩放框的键盘快捷键,它也适用于大多数属性。

【讨论】:

这仅显示前 255 个字符。不过好主意!

以上是关于Microsoft Access ODBC 连接字符串限制为 255 个字符?的主要内容,如果未能解决你的问题,请参考以下文章

在 Microsoft Access 2013 中,如何访问当前 ODBC 连接的用户名?

JDBC-ODBC桥接器连接Access数据库

[Access][Microsoft][ODBC 驱动程序管理器] 无效的字符串或缓冲区长度 Invalid string or buffer length

将节点 odbc 与 Microsoft Access 一起使用

odbc_exec():SQL 错误:[Microsoft][ODBC Microsoft Access Driver] 参数太少。预期 1.,SQLExecDirect 中的 SQL 状态 0700

odbc_exec():SQL 错误:[Microsoft][ODBC Microsoft Access Driver] 查询表达式中的语法错误(缺少运算符)