2

ここの初心者。

プログラムにローカル データベースがあります。プログラムを開発している間、私はSQLを使用しました

接続文字列:

SqlConnection sconn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\leemk_000\Documents\......Integrated Security=True;User Instance=True;");

このプログラムを別のコンピューターにロードしたい場合、この接続は機能しなくなると確信しています。Users\Lee_000\

Lee_000 を削除しようとしましたが、次のエラーが表示されます。

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

接続文字列を別のコンピューターで動作させるにはどうすればよいですか。

多くの感謝を込めて

4

3 に答える 3

5

User Instance と AttachDbFileName=のアプローチ全体に欠陥があります - せいぜい -特に複数のクライアント間でデータベースを共有したい場合!

.mdfVisual Studio でアプリを実行すると、ファイルが (App_Dataディレクトリから出力ディレクトリ (通常.\bin\debugはアプリが実行される場所) に) コピーされ、ほとんどの場合、問題なく動作しますが、間違ったINSERTものを見ているだけです。最後にmdfファイル

このアプローチに固執したい場合は、myConnection.Close()呼び出しにブレークポイントを設定してから、 .mdfSQL Server Mgmt Studio Express でファイルを調べてください。データがそこにあることはほぼ確実です。

私の意見では、本当の解決策は

  1. SQL Server Express をインストールします (とにかく、既に完了しています)。

  2. SQL Server Management Studio Express をインストールする

  3. SSMS Expressでデータベースを作成し、論理名を付けます (例: YourDatabase)

  4. 論理データベース名(サーバー上で作成したときに指定) を使用して接続し、物理データベース ファイルとユーザー インスタンスをいじらないでください。その場合、接続文字列は次のようになります。

    Data Source=.\\SQLEXPRESS;Database=YourDatabase;Integrated Security=True
    

    そして、それ以外はすべて以前とまったく同じです...

于 2013-04-03T09:08:59.807 に答える
3

ローカル データベースの場合は、アプリ フォルダー内に配置して、アプリと一緒に持ち運ぶ必要があります。データベースをアプリの App_data フォルダーに配置し、それを接続文字列で使用します

   <add name="YourConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\yourfile.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>
于 2013-04-03T09:20:16.337 に答える
1

データベース サーバーを使用し、次のように接続文字列を介してユーザーに使用させる必要があります。

Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;

「myServerAddress」は、サーバー マシンの IP アドレスである必要があります。

于 2013-04-03T09:09:44.653 に答える