簡體   English   中英

使用django-mssql-1.6建立與MS SQL Server 2014的連接

[英]Establishing connection to MS SQL Server 2014 with django-mssql-1.6

我知道django-mssql-1.6 / README聲明:

SQL Server版本

支持的版本:

  • 2008年
  • 2008R2
  • 2012

但是,看到v.1.6是可用的最新版本,我想知道是否有人能夠找到連接到MS SQL Server 2014的方法。我正在嘗試,但收到錯誤消息:

django.db.utils.OperationalError:(com_error(-2147352567,'Exception occurred。',(0,u'ADODB.Connection',找不到u'Provider。它可能沒有正確安裝。',u'C: \\ Windows \\ HELP \\ ADO270.CHM',1240655,-2146824582),無),u'錯誤打開連接:DATA SOURCE = 127.0.0.1;初始目錄= testdb;集成安全性= SSPI; PROVIDER = sqlncli10; DataTypeCompatibility = 80; MARS Connection = True')

使用配置:

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

據我所知,您正在使用正確版本的django-mssql和Django。 我最近從1.6移動到1.7並且不得不更改數據庫后端,因為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提供程序選項,它將工作。 希望這可以幫助。

也許為時已晚,但是...如果你正在使用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

請確保您使用的是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
          },
      },
  }

使用'SQLNCLI11'提供程序解決了我:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM