4

我知道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 连接=真')

使用配置:

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

4 回答 4

8

据我所知,您使用的是正确版本的 django-mssql 和 Django。我最近从 1.6 迁移到 1.7,并且不得不更改数据库后端,因为sql_server.pyodbcdjango 1.7 不再支持。sqlserver_ado我在更改为 django-mssql ( )时遇到了这个问题。问题是您使用了错误的提供程序。Django-mssqlSQLCLI10用作默认提供程序,这对我也不起作用。只要您使用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提供者选项,它将起作用。希望这可以帮助。

于 2015-09-30T10:38:57.703 回答
4

也许为时已晚,但是...如果您使用的是 Django 1.10并且不需要坚持使用django-mssql,则可以切换到django-pyodbc-azure包,它支持 MS SQL Server 2014 和 2016 开箱即用。

刚刚尝试过,它这个环境中有效:

  • 视窗服务器 2012 R2
  • Python 3.5.2
  • SQL 服务器 2016
  • 姜戈 1.10
于 2016-11-02T11:32:33.717 回答
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
          },
      },
  }
于 2015-04-14T15:48:02.500 回答
2

使用提供者为我解决了'SQLNCLI11'

DATABASES = {
    'default': {
        'NAME': 'MyDatabase',
        'ENGINE': 'sqlserver_ado',
        'HOST': '.\\SQLEXPRESS',
        'USER': '',
        'PASSWORD': '',
        'OPTIONS': {
            'provider': 'SQLNCLI11',
            'use_legacy_date_fields': 'True'
        }
    }
}
于 2017-05-17T04:45:56.690 回答