1

VC# を使用して、最初の実行時にリモート コンピューターに存在する (.mdf) データベースへのパスをユーザーに照会するスタッフ管理アプリを作成しました。結果のパスは次のようになります

string dbPath = @"P:\remoteComputer\public\StaffTool\ExamplePersonnelDatabase.mdf";

次に、この文字列を次のように接続文字列テンプレートに配置します。

string dbConnectTemplate = @"Data Source=.\SQLEXPRESS;AttachDbFilename={0};Integrated Security=True;Connect Timeout=30;User Instance=True";
string dbConnectionString = String.Format(dbConnectionTemplate,dbPath);

次に、データベースLINQ to SQLスタイルに接続しようとしています

ManagementDBDataContext db = new ManagementDBDataContext(
                dbConnectionString);

この時点で、次のエラー ポップアップが表示されます。

ファイル "P:\remoteComputer\public\StaffTool\ExamplePersonnelDatabase.mdf" は、データベース ファイルでサポートされていないネットワーク パスにあります。

ファイル P:\remoteComputer\public\StaffTool\ExamplePersonnelDatabase.mdf の自動命名データベースを接続しようとして失敗しました。同じ名前のデータベースが存在するか、指定されたファイルを開くことができないか、ファイルが UNC 共有にあります。

私はデータベースに比較的慣れていないので、このメッセージを完全に理解していません。そして明らかに、ファイルは UNC 共有上にありません。

何か案は?


Jim Lamb は、リモートで実行されている SQL サーバーのインスタンスに接続することを勧めました。LINQ to SQL を使用していることを考えると、これを実現するにはどのようなリファクタリングを行う必要がありますか? 他のアイデアも歓迎します - 特に「このボタンを押せばすべてがうまくいく」という解決策です。


もう 1 つの手がかり: 同僚は、[コントロール パネル] -> [管理ツール] -> [データ ソース (ODBC)] を使用して、リモート データベースを自分のコンピューターからローカルにあるかのように表示できるようにする何らかの方法があったと言いました。同僚はこれ以外の詳細を知りませんでした。

4

1 に答える 1

4

SQL Express でサポートされていないネットワーク接続を介して、別のマシン上のデータベース ファイルに接続しようとしています。ローカル コピーを作成してそれにアタッチするか、MDF ファイルと同じマシンで実行されている SQL のインスタンスに接続する必要があります。

于 2010-07-06T17:55:17.083 に答える