[英]Turning on multiple result sets in an ODBC connection to SQL Server
我有一个最初需要连接到Sybase(通过ODBC)的应用程序,但我还需要添加连接到SQL Server的功能。 由于ODBC应该能够处理两者,我认为我处于有利位置。
不幸的是,默认情况下,SQL Server不会让我嵌套ODBC命令和ODBCDataReaders - 它会抱怨连接繁忙(连接忙于另一个命令的结果)。
我知道在通过本机驱动程序连接到SQL Server时,我必须指定在类似情况下允许多个活动结果集(MARS),所以我认为这不是问题。
创建SystemDSN时,DSN向导没有任何内容。
有些人提供了注册表黑客来解决这个问题,但这不起作用(向HKEY_LOCAL_MACHINE \\ SOFTWARE \\ ODBC \\ ODBC.INI \\ system-dsn-name添加值为Yes的MARS_Connection)。
另一个建议是创建一个文件-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本机驱动程序......
根据有关使用多个活动结果集(MARS)的SNI文档:
SQL Server Native Client ODBC驱动程序通过添加SQLSetConnectAttr和SQLGetConnectAttr函数来支持MARS。 已添加SQL_COPT_SS_MARS_ENABLED以接受SQL_MARS_ENABLED_YES或SQL_MARS_ENABLED_NO,SQL_MARS_ENABLED_NO是默认值。 此外,添加了一个新的连接字符串关键字Mars_Connection。 它接受“是”或“否”的值; “no”是默认值 。
确保您的客户端加载正确的驱动程序,使用Mars_Connection=yes
,并通过检查SQLGetConnectAttr上的 SQL_COPT_SS_MARS_ENABLED在应用程序中进行验证。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.