Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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
Sql server Django SQL Server错误:“0”;无法创建新连接,因为处于手动或分布式事务模式。”;_Sql Server_Django_Sql Server 2008_Django Models_Django Mssql - Fatal编程技术网

Sql server Django SQL Server错误:“0”;无法创建新连接,因为处于手动或分布式事务模式。”;

Sql server Django SQL Server错误:“0”;无法创建新连接,因为处于手动或分布式事务模式。”;,sql-server,django,sql-server-2008,django-models,django-mssql,Sql Server,Django,Sql Server 2008,Django Models,Django Mssql,我在从django查询SQL Server时遇到了一些奇怪的问题 当我在一个请求中两次查询数据库时,在某些情况下会出现错误。也就是说,当第一次db查询返回大量数据时,我们在第二次查询db时会出现错误 详细信息: 我们正在为Django使用Microsoft SQL Server后端(https://bitbucket.org/Manfre/django-mssql/src)在windows上运行 我们希望允许用户通过表单过滤某些表格(“活动”)中的数据,将其显示在网站的表格上,然后在地图上显示另

我在从django查询SQL Server时遇到了一些奇怪的问题

当我在一个请求中两次查询数据库时,在某些情况下会出现错误。也就是说,当第一次db查询返回大量数据时,我们在第二次查询db时会出现错误

详细信息:

我们正在为Django使用Microsoft SQL Server后端(https://bitbucket.org/Manfre/django-mssql/src)在windows上运行

我们希望允许用户通过表单过滤某些表格(“活动”)中的数据,将其显示在网站的表格上,然后在地图上显示另一个表格(“框架”)中的相关数据

问题是:当我们想从活动中过滤大量数据(比如200行x 6列)时,我们不能在同一个请求中对表帧进行其他查询(MARS在Django settings.py中打开):

总是可以的,但是

path = Frames.objects.filter(qset2) 
上一个查询返回的数据量较大时,会引发OLE DB错误:

“用于SQL Server的Microsoft OLE DB提供程序”错误:无法 创建新连接,因为它处于手动或分布式事务模式

PS.
settings.py中的数据库设置:

# Database for this installation. 
DATABASES = {
'default':{
    'ENGINE': 'django.db.backends.sqlserver_ado', 
    'NAME': '***',                      
    'USER': '***',                      
    'PASSWORD': '***',                  
    'HOST': '***',                      
    'PORT': '',                        
    'OPTIONS' : {
        'provider': 'SQLOLEDB',
        'use_mars': True,                    
          }
}
}
PS2。我在djang mssql的google代码页上遇到了这个问题:-但它似乎在新版本的软件包中得到了解决

我能怎么办

提前感谢

是否在“settings.py”文件中设置了“use_mars=True”


如果这不起作用,我有一个问题:您在SQL Server中的选择是否涉及带有触发器的表(transact-SQL脚本)-在这种情况下,SQL Server将使用静态游标而不是firehose游标(这是您需要的),因此您将得到错误。尝试摆脱触发器,在SQL Server中使用一些视图并从中选择,而不是从表中选择。

我们从bitbucket获得了解决方案:来自Michael Manfre-非常感谢

解决办法如下:

SQLOLEDB
MARS
工作不太好,我打算更改所有文档和默认值,以假定将使用本机客户端驱动程序。请尝试使用本机客户端;
“SQLNCLI10”
“SQLNCLI11”


Yes@Dan S-I“use_mars=true”(请参见上面编辑的问题中的settings.py)。我将尝试使用视图,而不是表,尽管仍然不起作用-我们尝试了视图-不是这样,mars似乎也打开了
path = Frames.objects.filter(qset2) 
# Database for this installation. 
DATABASES = {
'default':{
    'ENGINE': 'django.db.backends.sqlserver_ado', 
    'NAME': '***',                      
    'USER': '***',                      
    'PASSWORD': '***',                  
    'HOST': '***',                      
    'PORT': '',                        
    'OPTIONS' : {
        'provider': 'SQLOLEDB',
        'use_mars': True,                    
          }
}
}
DATABASES = {
    'default': {
        'ENGINE': 'sqlserver_ado',
        'NAME': 'mydb',
        'HOST': r'localhost',
        'USER': '',
        'PASSWORD': '',
        'OPTIONS': {
            'provider': 'SQLNCLI10',
            'extra_params': 'DataTypeCompatibility=80;MARS Connection=True;',
        },
    }
}