【问题标题】:Establishing connection to MS SQL Server 2014 with django-mssql-1.6使用 django-mssql-1.6 建立与 MS SQL Server 2014 的连接
【发布时间】:2014-12-11 23:16:57
【问题描述】:

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

SQL Server 版本

支持的版本:

  • 2008
  • 2008r2
  • 2012

但是,由于 v. 1.6 是可用的最新版本,我想知道是否有人能够找到连接到 MS SQL Server 2014 的方法。我正在尝试,但收到错误消息:

django.db.utils.OperationalError: (com_error(-2147352567, '发生异常。', (0, u'ADODB.Connection', u'Provider 找不到。可能不是', u'C:\Windows\HELP\ADO270.CHM', 1240655, -2146824582), None), u'打开连接时出错:DATA SOURCE=127.0.0.1;Initial Catalog=testdb;Integrated Security=SSPI ;PROVIDER=sqlncli10;DataTypeCompatibility=80;MARS Connection=True')

使用配置:

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

【问题讨论】:

    标签: python django django-mssql


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      据我所知,您使用的是正确版本的 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 提供程序选项,它将起作用。 希望这会有所帮助。

      【讨论】:

      • 'OPTIONS': { 'provider': 'SQLOLEDB', 'use_legacy_date_fields': 'True' } 真的有效!谢谢!
      【解决方案3】:

      也许为时已晚,但是...如果您使用的是 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

      【讨论】:

      • 也适用于 Python 2.7,但我仍然需要添加 'OPTIONS': { 'provider': 'SQLOLEDB' }
      【解决方案4】:

      使用'SQLNCLI11' provider 为我解决了问题:

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

      【讨论】:

        猜你喜欢
        • 2012-11-25
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 2018-07-07
        • 1970-01-01
        • 2013-11-10
        • 2022-11-21
        相关资源
        最近更新 更多