2014-10-16 192 views
4

我知道的Django的MSSQL-1.6/README狀態:建立連接到MS SQL服務器2014年的Django MSSQL-1.6

SQL Server版本

支持的版本:

  • 2008R2

但是,看到V 1.6是最新的版本,我想知道是否有人能找到一種方法來連接到MS SQL服務器2014年。我很努力,但得到的錯誤消息:

django.db.utils.OperationalError:(com_error(-2147352567,'Exception occurred。',(0,u'ADODB.Connection',u'Provider can not be found。 ',u'C:\ Windows \ HELP \ ADO270.CHM',1240655,-2146824582),None),u'Error打開連接:DATA SOURCE = 127.0.0.1; Initial Catalog = testdb;集成安全性= SSPI提供方= SQLNCLI10; DataTypeCompatibility = 80; MARS連接=真')

使用配置:

DATABASES = { 
    'default': { 
     'ENGINE': 'sqlserver_ado', 
     'NAME': 'testdb' 
    } 
} 

回答

6

據我所看到的,使用的是Django的MSSQL和Django的正確版本。我最近從1.6升級到1.7,並且不得不更改DB後端,因爲django 1.7不再支持sql_server.pyodbc。更改爲django-mssql(sqlserver_ado)時遇到此問題。 問題是您使用的是錯誤的提供程序。 Django-mssql使用SQLCLI10作爲默認提供程序,這也不適合我。如果您使用SQLOLEDB提供程序,那麼將選項哈希添加到您的數據庫配置中,就像上述答案中的一樣,將解決您的問題。這是我的配置:

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供應商的選擇,它會工作。 希望這有助於。

+1

' '選項':{ '提供': 'SQLOLEDB', 'use_legacy_date_fields': '真' }'真的不錯!謝謝! – AmiNadimi 2017-07-01 05:35:22

2

請確保您使用Django 1.6和Django的MSSQL是1.6版本。我注意到,django-mssql 1.6不支持最新的Django 1.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 
      }, 
     }, 
    } 
4

也許爲時已晚,但是...如果你使用Django 1.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
+0

也適用於Python 2.7,但我仍然需要添加''OPTIONS':{'provider':'SQLOLEDB'}' – Dinei 2017-02-16 13:36:26

2

解決我使用'SQLNCLI11'提供商:

DATABASES = { 
    'default': { 
     'NAME': 'MyDatabase', 
     'ENGINE': 'sqlserver_ado', 
     'HOST': '.\\SQLEXPRESS', 
     'USER': '', 
     'PASSWORD': '', 
     'OPTIONS': { 
      'provider': 'SQLNCLI11', 
      'use_legacy_date_fields': 'True' 
     } 
    } 
}