LocalDBインスタンスでPythonプロジェクトを設定しようとしています。ビジネス上の制約のため、私はDjango 1.8で使用するMS SQL Server 2014バックエンドに縛られており、pyodbcドライバで接続しようとしています。私は開発のためにSQLサーバーの代わりにLocalDBインスタンスを使いたいと思っていますが、いくつかの問題があります。私は、次の設定を使って接続しています。Django + pyodbc + MS LocalDBゴーストインスタンス
Djangoの設定:
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'my_db',
'HOST': '(localdb)\\hands-on',
'Trusted_Connection': 'yes',
'PORT': '',
'OPTIONS': {'driver': 'SQL Server Native Client 11.0',
'Integrated Security': 'true',
},
'TEST': {
'NAME': 'test_my_db',
},
}
}
私はSqlLocalDB.exeでこのインスタンスを作成:
Name: hands-on
Version: 12.0.2000.8
Shared name:
Owner: COMPANY\MY_ACCOUNT
Auto-create: No
State: Stopped
Last start time: 27-12-2016 16:53:55
Instance pipe name:
私はSSMSを持つインスタンスでMY_DBを作成し、接続が行われます。プレスト!
しかし、問題が少しあります。 Djangoアプリケーションを起動すると、自動的にLocalDBインスタンスが起動します(私のユーザーアカウントのタスクマネージャでsqlservr.exeが実行されています)。私はSqlLocalDB.exe info hands-on
を実行したときしかし、出力が
State: Stopped
私はSSMSを開き、(LocalDB)\hands-on
に接続すると、接続がうまく行われているが、私のタスクマネージャで、私は今二 Sqlservr.exeの走りを見ることができ、これにありそれは私が今接続されていることが判明します。したがって、Django/pyodbcとSMSS/SqlLocalDB.exeは、どちらも同じLocalDBインスタンスの2つの別個のインスタンスとやりとりしているようですが、どちらも報告するのが嬉しくて、hands-on
と呼ばれています。
LocalDBインスタンスとそのファイルを削除し、SqlLocalDB.exeで再作成して起動し、Djangoアプリケーションでのみ接続するという回避策が見つかりました。その後、すべてのソフトウェアが同じインスタンスと対話するように見え、1つのsqlservr.exeプロセスだけが実行されています。悲しいことに、この回避策は、あなたが間違いを犯してDjangoを実行した直後には、もうSqlLocalDB.exe start hands-on
の作業をしていないという大きな欠点があります。ゴーストインスタンスは再作成され、その時点からDjangoはインスタンスを終了してもSjaxLocalDBで起動してからDjangoに再接続します。ゴーストのインスタンスが再び表示されます。だから、この回避策は非常に脆弱で、私はほとんど行くことはできませんし、私の同僚にそれをお勧めします。
誰かが何が起こっているのか、またどのように問題を解決する手掛かりがありますか? DjangoとSQLサーバーを組み合わせようとする以外に、私は次のことを意味します:p
そして、私は見つけたの[この](http://stackoverflow.com/questions/21435121/sqllocaldb-info-lists-two-instances-with-the-same-name:ここでは、Windows用のバットスクリプトがあります)投稿、またはおそらく[これ](http://stackoverflow.com/questions/39974109/how-can-i-specify-to-use-sql-server-localdb-2014-rather-than -sql-server-localdb)の記事を投稿しましたが、これまで私は自分自身で問題を解明できませんでした) – Juul