エラー内容
InterfaceError
'IM002', '[IM002] [Microsoft][ODBC Driver Manager] データ ソース名および指定された既定のドライバーが見つかりません。 (0) (SQLDriverConnect)'
発生状況
Python Djangoでpyodbcを使って、Microsoft SQL Serverに接続している。
開発環境ではアクセスできるが、実行環境のIISへデプロイしたところエラーが出た。
環境
開発環境
-Windows10 64bit
-Visual Studio Community 2017 ver.15.4.1
-Python ver.3.6.1
-Anaconda ver.4.4.0
-Django ver.1.11.11
-django-pyodbc ver.1.1.3
実行環境
-Windows7 32bit
-IIS Version 7.5.7600.16385
-Django ver.2.0.3
-django-pyodbc ver.1.1.3
解決方法とソース
接続文字列を修正することで、解決した。
開発環境で正常に動いていた接続文字列はこちら。
connectionString = 'DRIVER={ODBC Driver 13 for SQL Server};
SERVER='+'localhost'+'; DATABASE='+'database'+';
UID='+'sa'+'; PWD='+'password'
実行環境の方は、こう書き換えたら正常に動いた。
connectionString = 'DRIVER={SQL Server};
SERVER='+'localhost'+'; DATABASE='+'database'+';
UID='+'sa'+'; PWD='+'password'
なお開発環境の接続文字列を上記のように変えると、また異なるエラーが出た。
OperationalError
'08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server が存在しないか、アクセスが拒否されました。 (17) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). (5)'
環境によってDjangoのバージョンが一致しないことが原因の模様。