Установление соединения с 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
},
},
}