gpt4 book ai didi

c# - 在与 SQL Server 的 ODBC 连接中打开多个结果集

转载 作者:行者123 更新时间:2023-11-30 15:48:20 27 4
gpt4 key购买 nike

我有一个最初需要连接到 Sybase(通过 ODBC)的应用程序,但我还需要添加连接到 SQL Server 的功能。由于 ODBC 应该能够处理这两者,我认为我处于有利位置。

不幸的是,默认情况下,SQL Server 不允许我嵌套 ODBC 命令和 ODBCDataReaders - 它提示连接忙(Connection is busy with results for another command)。

我知道在通过 native 驱动程序连接到 SQL Server 时,我必须指定在类似情况下允许多个事件结果集 (MARS),因此我认为这不会成为问题。

DSN 向导没有入口y 在创建 SystemDSN 时。

一些人提供了注册表 hack 来解决这个问题,但这没有用(将值为 Yes 的 MARS_Connection 添加到 HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\system-dsn-name)。

另一个建议是创建一个 file-dsn,并在其中添加“MARS_Connection=YES”。没用。

最后,一个无 DSN 的连接字符串。我试过这个(使用 MultipleActiveResultSets - 与 Sql Server 连接使用的变量相同),

"Driver={SQL Native Client};Server=xxx.xxx.xxx.xxx;Database=someDB;Uid=u;Pwd=p;MultipleActiveResultSets=True;"

还有这个:

"Driver={SQL Native Client};Server=192.168.75.33\\ARIA;Database=Aria;Uid=sa;Pwd=service;MARS_Connection=YES;"

我检查了各种连接字符串站点 - 它们都建议我已经尝试过。

我应该声明我已经尝试了 SQL Server 驱动程序和 SQL Server native 驱动程序...

最佳答案

根据 Using Multiple Active Result Sets (MARS) 上的 SNI 文档:

The SQL Server Native Client ODBC driver supports MARS through additions to the SQLSetConnectAttr and SQLGetConnectAttr functions. SQL_COPT_SS_MARS_ENABLED has been added to accept either SQL_MARS_ENABLED_YES or SQL_MARS_ENABLED_NO, with SQL_MARS_ENABLED_NO being the default. In addition, a new connection string keyword, Mars_Connection, as been added. It accepts "yes" or "no" values; "no" is the default.

确保您的客户端加载正确的驱动程序,使用 Mars_Connection=yes,并通过检查 SQLGetConnectAttr 上的 SQL_COPT_SS_MARS_ENABLED 在应用程序中进行验证.

关于c# - 在与 SQL Server 的 ODBC 连接中打开多个结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2701992/

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