1

app.config で接続文字列を定義しました

  <connectionStrings>
    <add name="StoreConnectionString"
    connectionString="Data Source=(local);MultipleActiveResultSets=True;AttachDBFileName=C:\Users\Firdavs\Desktop\Data\StoreServer.mdf;Integrated Security=True;User Instance=True;"
    providerName="System.Data.SqlClient" />  
  </connectionStrings>

アプリケーションで c# と sql Express を使用しています。自分のマシンで Visual Studio を実行している場合、問題なく動作します。ただし、セットアップを作成して他のマシンに展開した後。AttachDBFileName=Path を示す .exe.config ファイルを編集しています。アプリケーションでエラーが発生しています。Sql Express はそのマシンにインストールされています。アタッチが機能していないと思います。何をアドバイスしますか?方向を教えてください!

4

2 に答える 2

2

問題はここにあります: "AttachDBFileName=C:\Users\Firdavs\Desktop\Data\StoreServer.mdf;"

それを別のマシンに展開すると、その絶対パスは同じになるための変更がほとんどありません...仮想パスを指定する必要があります...

同じディレクトリにmdfをコピーする必要があります。次に、Visual Studio で、mdf ファイルを選択するときに、[出力ディレクトリにコピー] のプロパティを [新しい場合はコピー] に変更することを確認します (既にリストされている [コピーしない] テキストをダブルクリックして変更します)。そこで)、次に AttachDbFilename を ... AttachDbFilename=|DataDirectory|StoreServer.mdf;... に変更します。

于 2012-11-16T07:27:13.577 に答える
0

このサイトで前に言ったように、ユーザーインスタンスとAttachDbFileName =のアプローチ全体に欠陥がありますが、せいぜいです!Visual Studioは.mdfファイルをコピーし、ほとんどの場合、正常に動作しますが、最終的には間違った.mdfファイルINSERTを見ているだけです。

このアプローチを使い続けたい場合は、myConnection.Close()呼び出しにブレークポイントを設定してみてください。次に.mdf、SQL Server MgmtStudioExpressを使用してファイルを調べてください。データがそこにあることはほぼ間違いありません。

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

  1. SQL Server Expressをインストールします(とにかくすでにそれを実行しています)

  2. SQL Server ManagementStudioExpressをインストールします

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

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

    Data Source=(local);Database=StoreServer;Integrated Security=True
    

    そして他のすべては以前とまったく同じです...

顧客のPCに展開するときは、同じ手順を実行します。SQLServer Expressをインストールし、サーバー上にデータベースを作成し、 server=(local)(またはserver=machinenameアプローチ)を使用してデータベースに接続します。これで完了です。

于 2012-11-16T08:07:15.303 に答える