我知道django-mssql-1.6/README状态:
SQL Server版本
支持的版本:
- 2008
- 2008年2
- 2012年
但是,鉴于v.1.6是可用的最新版本,我想知道是否有人能够找到连接到MS SQL Server 2014的方法。我正在尝试,但收到错误消息:
django.db.utils.OperationalError:(com_error(-2147352567,'发生异常。',(0,u'ADODB.Connection',u'找不到提供程序。它可能没有正确安装。',u'C:\Windows\HELP\ADO270.CHM',1240655,-2146824582),无),u'打开连接时出错:数据源=127.0.0.1;初始目录=testdb;综合安全=SSPI;PROVIDER=sqlncli10;DataTypeCompatibility=80;MARS连接=真)
使用配置:
DATABASES = {
'default': {
'ENGINE': 'sqlserver_ado',
'NAME': 'testdb'
}
}
据我所见,您使用的是django-mssql和django的正确版本。我最近从1.6升级到1.7,不得不更改DB后端,因为django 1.7不再支持sql_server.pyodbc
。我在更改为django-mssql(sqlserver_ado
)时遇到了这个问题。问题是您使用了错误的提供程序。Django mssql使用SQLCLI10
作为默认提供程序,这对我来说也不起作用。只要你使用SQLOLEDB
提供程序,在你的DB配置中添加一个选项哈希,就像上面的答案中的那个,就会解决你的问题。这是我的配置:
DATABASES = {
'default': {
'NAME': 'CVH_Dev',
'ENGINE': 'sqlserver_ado',
'HOST': '192.***.212.2**',
'USER': 'USER',
'PASSWORD': 'PWD',
'OPTIONS': {
'provider': 'SQLOLEDB',
'use_legacy_date_fields': 'True'
}
}
}
使用SQLOLEDB
提供程序选项,它就会工作。希望这能有所帮助。
也许太晚了,但是。。。如果您正在使用Django1.10并且不需要坚持使用django-mssql
,那么您可以切换到Django-pyodbc azure包,该包支持开箱即用的MS SQL Server 2014和2016。
刚刚尝试过,它在这个环境中工作:
- Windows Server 2012 R2
- Python 3.5.2
- SQL Server 2016
- Django 1.10
请确保您使用的是Django 1.6,并且Django-mssql是1.6版本。我注意到django-mssql1.6与最新的Django1.8不兼容。
以下是我的数据库配置设置,它对我有效-
DATABASES = {
'default': {
'ENGINE': 'sqlserver_ado',
'NAME': 'dbname', # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': 'db_user_id',
'PASSWORD': 'db_password',
'HOST': 'host_name_or_ip_addr', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
'PORT': '1433', # Set to empty string for default.
'OPTIONS': {
'provider' : 'SQLOLEDB' # or these other two dlls did not work for me SQLCLI10, SQLCLI11
},
},
}
使用'SQLNCLI11'
提供程序为我解决:
DATABASES = {
'default': {
'NAME': 'MyDatabase',
'ENGINE': 'sqlserver_ado',
'HOST': '.\SQLEXPRESS',
'USER': '',
'PASSWORD': '',
'OPTIONS': {
'provider': 'SQLNCLI11',
'use_legacy_date_fields': 'True'
}
}
}