-4

それぞれ C#.net Windows フォーム アプリケーションを実行している 2 台のマシンがあります。両方を、いずれかのマシンにある単一の SQL Server データベースに接続する必要があります。そして、私は両方のアプリケーションがその 1 つのデータベースで動作することを好みます。しかし残念ながら、この UNC 共有の問題が発生しています。これを解決する方法はありますか?それとも、別のアプローチを試す必要がありますか。私を助けてください。私はそれを感謝します。

4

1 に答える 1

3

AttachDbFileNameはひどく誤解を招く機能です。この「データベース」に接続する各アプリケーションは、データ ファイルのコピーを作成します。したがって、Machine1接続して変更を加えた場合、それらの変更は には表示されませんMachine2。これは、単一マシンのシナリオでも多くの混乱を引き起こします。これは、人々が Visual Studio 経由で接続し、何らかの更新を行った後、Management Studio からは表示されないためです。またはその逆。このUser Instance機能は、何らかの理由で廃止されました。これらの両方の使用を停止してください。

複数のマシン/アプリケーションをデータベースの同じコピーに接続する必要があるため、必要なソリューションは、データベースの単一のコピーを SQL Server の単一のインスタンスに接続し、両方のアプリケーション/マシンがその単一のコピーに接続することです。 .

これMACHINE1-PCを行うには:

  1. ShopDatabase.mdfおよびその関連.ldfファイルをユーザー フォルダーからインスタンスのデータ フォルダーに移動します。これは次のようになります。

    C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Data\

  2. を使用して、ローカル Express インスタンスに接続します.\SQLEXPRESS。次のコードを使用してデータベースをアタッチします。

    CREATE DATABASE ShopDatabase 
      ON (FILENAME = 'C:\...\ShopDatabase.mdf'), 
      -------------------^^^ fill this in
         (FILENAME = 'C:\...\ShopDatabase_Log.ldf') 
      -------------------^^^ fill this in
    FOR ATTACH;
    
    -- if there is no log file, you may need to do:
    
    CREATE DATABASE ShopDatabase 
      ON (FILENAME = 'C:\...\ShopDatabase.mdf') 
      -------------------^^^ fill this in
    FOR ATTACH_REBUILD_LOG;
    
  3. の外部 IP アドレスを決定しますMACHINE1-PC(別のマシンから ping を介してこれを行うことができます - ローカルでは、127.0.0.1どれが役に立たないかがわかります)。固定 IP があり、DHCP を使用していないと仮定すると、これはより信頼性の高い接続方法になるか、少なくとも余分な手順 (名前の解決) がありません。ただし、DHCP を使用する場合は、IP アドレスが時間の経過とともに変化する可能性があるため、これに依存する必要はありません。接続文字列は次のようになります。

    Data Source=MACHINE1-PC\SQLEXPRESS;
      Network=DBMSSOCN;
      Integrated Security=True;
      Initial Catalog=ShopDatabase;
    
    -- or:
    
    Data Source=<<IP Address>>\SQLEXPRESS;
      Network=DBMSSOCN;
      Integrated Security=True;
      Initial Catalog=ShopDatabase;
    
    -- (replace <<IP Address>> of course)
    

Machine1接続文字列では を使用できますが、いくつかのキーストロークを節約するよりも一貫性を保つData Source=.\SQLEXPRESS方がよいでしょう。このようにして、構成ファイルなどに他の変更を加えた場合、マシン名を変更する必要なく、それらを他のマシンに配布できます。

于 2013-03-24T14:19:34.397 に答える