Установление соединения с MS SQL Server 2014 с помощью 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, 'Исключение произошло.', (0, u'ADODB.Connection', u'Provider не найден. Возможно, он не установлен должным образом.', u'C:\Windows\HELP\ADO270.CHM', 1240655, -2146824582), Нет), Соединение u'Error, открывающее ошибку: ИСТОЧНИК ДАННЫХ =127.0.0.1; Начальный каталог =testdb; Интегрированная безопасность =SSPI; ПОСТАВЩИК =sqlncli10;DataTypeCompatibility=80;MARS Connection=True')

используя config:

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

4 ответа

Решение

Насколько я вижу, вы используете правильные версии django-mssql и Django. Недавно я перешел с 1.6 на 1.7, и мне пришлось сменить серверную часть БД, так как sql_server.pyodbc больше не поддерживается django 1.7. Я сталкивался с этой проблемой при переходе на django-mssql (sqlserver_ado). Проблема в том, что вы используете не того поставщика. Джанго-Мсскль использует 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
  • Джанго 1.10

Решено для меня с помощью 'SQLNCLI11' поставщик:

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

Пожалуйста, убедитесь, что вы используете 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
          },
      },
  }
Другие вопросы по тегам