gpt4 book ai didi

sql-server - SQL 2000 中的 ODBC 问题 --> 2005 升级

转载 作者:行者123 更新时间:2023-12-02 04:15:38 25 4
gpt4 key购买 nike

这篇 wiki 帖子概述了问题和解决方案。我想将此信息发布给可能遇到类似问题的其他人,因为我在其他地方找不到任何专门解决此问题的内容。

我们最近将 SQL Server 2000 数据库升级到 SQL Server 2005。服务器上的数据库之一是 MS Access 数据库的后端。 MS Access 数据库使用传递查询,通过 DSN-less ODBC 连接到 SQL Server。

无 DSN 连接字符串的示例如下所示:

ODBC; DRIVER=SQL Server;SERVER=servername;APP=Microsoft® Access (Pass Through
Query);DATABASE=databasename;Network=DBMSSOCN;ConnectionTimeout=20;
Trusted_Connection=Yes

升级后,我们发现用户无法运行传递查询,并显示以下错误:

ODBC -- connection to 'SQL Server ' failed

这最初似乎是一个权限问题,因为将 SQL Server 登录权限提升到 sysadmin 服务器角色可以缓解该问题(但显然这不是一个很好的解决方案)。

将登录名从 sysadmin 角色中撤回后,我们发现当通过 Management Studio 连接到 SQL Server 时,登录名可以执行存储过程。无法从 MS Access 中进行相同的登录。这表明 MS Access 在尝试执行存储过程时正在执行某些操作,而不是权限问题。

我们使用 Profiler 在服务器上运行跟踪,这显示 MS Access 在存储过程执行之前尝试执行以下命令:

DBCC TRACEON(208)

在执行存储过程之前,此命令似乎失败。网上的研究表明,DBCC TRACEON(208)相当于使用“SET QUOTED IDENTIFIERS ON”命令,而在SQL 2005中运行此DBCC命令的权限已被撤销。

经过进一步研究,我们发现对 MS Query 的引用也存在类似问题,并且连接字符串的 APP 组件应从“MS Query”更改为其他内容。

凭直觉,我们更改了 ODBC 连接字符串的 APP 组件,并且 MS Access 不再尝试在执行存储过程之前执行 DBCC TRACEON(208)。

经过进一步测试,我们将问题追溯到APP组件中包含的“版权”符号:

APP=Microsoft® Access (Pass Through Query)

通过删除版权符号,连接一切顺利,并且应用程序可以像以前在 SQL 2000 上一样运行。

希望这可以帮助其他遇到类似问题的人。

最佳答案

这不是注册商标符号吗?

我相信您发现了 sql server 2005 针对基于 odbc 的攻击的防御措施之一。由于互联网上没有任何相关信息,因此这很可能是微软内部处理的事情。

关于sql-server - SQL 2000 中的 ODBC 问题 --> 2005 升级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1364779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com