Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQLSRV32.DLL和MARS支持_C#_Odbc_Dsn - Fatal编程技术网

C# SQLSRV32.DLL和MARS支持

C# SQLSRV32.DLL和MARS支持,c#,odbc,dsn,C#,Odbc,Dsn,通过google搜索后,我知道SQLSRV32 odbc驱动程序不支持MARS。对此有什么解决方法。我想有一种方法是通过几个SQL命令的结果停止循环。但在我的例子中,我必须创建30-40个表,一次插入大约400-500行数据。打开和关闭每个sql命令的连接是否是一个好主意。请帮助不要打开和关闭每个语句的连接,打开连接并创建多个命令以使用该连接。插入约15000条记录不会花费太长时间。我不知道ODBC是否支持它,但您也可以研究SQL Server的大容量复制功能来执行类似的操作 关于火星的最后一句

通过google搜索后,我知道SQLSRV32 odbc驱动程序不支持MARS。对此有什么解决方法。我想有一种方法是通过几个SQL命令的结果停止循环。但在我的例子中,我必须创建30-40个表,一次插入大约400-500行数据。打开和关闭每个sql命令的连接是否是一个好主意。请帮助

不要打开和关闭每个语句的连接,打开连接并创建多个命令以使用该连接。插入约15000条记录不会花费太长时间。我不知道ODBC是否支持它,但您也可以研究SQL Server的大容量复制功能来执行类似的操作

关于火星的最后一句话。只有当您希望在同一连接上同时进行多个查询并返回结果集时,MARS才起作用。这在这里并不是一个真正的问题,因为您正在进行插入


此外,没有任何东西阻止您运行多个线程来执行插入。我可能会对每个表执行一个线程,每个核心执行一个线程。Parallel.ForEach可以在这里提供帮助。

+1用于前两段。但是,使用来自多个线程的单个(ODBC)连接真的安全吗?我没有想象到。我得到了这个错误“连接正忙着处理另一个命令的结果”。我有odbc命令用于删除表、创建表和在循环中插入数据。启用mars的sql本机客户机驱动程序绝对没有问题,但除了SQLSRV32,mars仅与resultset的检索相关,而与insert和updateNo无关,不要对多个线程使用单个连接。使用多线程的多个连接。但是如果您使用一个线程,那么就使用一个连接并保持它打开。我相信火星只和阅读有关。MARS允许您在一个结果集上进行迭代,并且在迭代的同时,对您所在项目上的相关数据段执行另一个查询。