2017-05-05 3 views
0

私は、データベースを含むwinフォームベースのアプリケーションを開発しました。私はそのソリューションの中にビジュアルスタジオでデータベースを構築しました。 app.configファイルで私の現在の接続文字列は次のようになります。それをチェックするのではなく、ユニバーサル接続文字列を作成する

connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\NARA.mdf;Integrated Security=True;" providerName="System.Data.SqlClient"/> 

は、私は(データベースを含む)すべてのファイルを含め、私のDebugフォルダをコピーしたが、それは私の他のシステムに接続文字列の例外を与えました。どのように私は私のプログラムを取る任意のシステムで動作することができる接続文字列を作ることができます。

+0

エラーメッセージは何ですか? – Steve

+0

@Steveかなり長いですが、重要な部分を入れようとしています。 SQL Serverへの接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つかりませんでした。 (プロバイダ:SQLネットワークインターフェイス、エラー50 - Localc Databseランタイムエラーが発生しました)指定されたLocalDBインスタンスが存在しません – Bilal

+0

LocalDBのビットをインストールしましたか – Steve

答えて

1

すべての問題は、Sql Serverのバージョン間で互換性がないために発生しています。
2012 LocalDBをインストールすると、v11.0という名前のデフォルトインスタンスが作成されます。だから、あなたは、このデフォルトのインスタンスに接続し、それはあなたが

connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=....."/> 

で接続文字列を必要とするか、管理コマンドプロンプトを使用して、接続によって要求された名前のインスタンスを作成することができ、あなたのMDFファイルを管理できるようにしたい場合は

SqlLocalDb c MSSqlLocalDB 

を入力しかし、今、あなたは、SQL Server 2012のバージョン(localdbかない)で作成したMDFファイルを持っている必要がありますので、これは、問題の終わりではありません。また、受け取ったエラーメッセージから明らかなように、Sql Server 2016で作成されたMDFファイルがあります。

2012年は2016で作成されたファイルを読み取ることができません。これはSql Serverでは常にMDFファイルのバージョンには、常にこの非互換性を作成する拡張機能や内部的な変更が含まれています。

修正は簡単です:配布したMDFファイルと互換性のあるバージョンのLocalDBビットをインストールしてください。 (LocalDBは開発者向けの機能であり、簡単なシナリオでは動作しますが、生産現場では使用しないことを忘れないでください。たとえば、本格的なアプリケーションのデモを配布するために使用します。 SQL Server Expressをフルバージョンでインストールする必要はありません)