2013-07-31 22 views
8

MDFファイルアクセス(SQLEXPRESSに接続されている場合)はスレッドセーフですか?MDFファイルのスレッドセーフティへのアクセス

私は自分のWPFクライアントアプリケーションと共に展開されたローカルMDFファイルを持っています。 MDFファイルを使用して、クライアント固有の設定を保持しています。同じ行を同時にSELECTおよびUPDATEし、SQL接続プロバイダを介して同時にアクセスするスレッドが多数存在する可能性があります。

私は、リモートSQL Serverデータベース(すべての作業をSQL接続プロバイダに任せる)と同じ方法でスレッド同期化を扱うことができますか、またはラップする必要がありますか私のDBはクリティカルセクション内で呼び出しますか?

ありがとうございます!

+0

の回答を見ると、それはあなたが何をしようとしてはっきりしていません。上記のように、MDFはデータベースエンジンを介して通常アクセスするコアデータベースファイルです。どのようにアクセスしているかを知っていることは、使用している接続文字列、またはMDFを変更する方法を示すソースコードではありません。これらがなければ、あなたがしようとしていることは本当に明確ではありません。 –

答えて

0

私は本当に混乱しています。行を更新するときにWHERE句にオプティミスティックな並行性を使用する限り、テーブルと行のロックと競合を管理するデータベースサーバー上で動作するMicrosoft SQLデータベースです。たとえば、

update settings set A = 'val' where A = 'old val' 

もちろんスレッドセーフです。

+0

いいえ、私のプロジェクトの一部であるローカルファイルです。このプロジェクトは、数百台のマシンに展開されるクライアントexeです。接続されたmdfファイルや通常のリモート接続に違いがないと言っていますか? –

+0

ローカルファイルに直接アクセスしていないため、SQL ServerクライアントからSQL Serverストレージエンジンにアクセスしています。 – dixpac

+0

@UriAbramsonでは、複数のマシンからネットワークファイルを添付することはできません。そのデータベースをサーバに配置し、展開中の接続文字列を 'Server = serverName; Database = databaseName; User ID = userid; Password = pwd'のように変更する必要があります。 –

0

MDFファイルはメインデータベースファイルです。

MDFファイルに直接書き込むことはできません(理論的には)、SQL Serverのエンジンとクライアントからアクセスしています。

複数 SELECTについては

UPDATEデータベーストランザクション分離レベル上のリレー(コミット読み取りは、未コミット、直列化可能、スナップショットを読んで)です。

Isolation Levels in the Database Engine

+0

MDFファイルは、サーバーのメインデータベースファイルである必要はありません。これは、VSなどの方法で作成し、SQL Serverインスタンスに「接続」されている間にSSMS経由でアクセスできます。 –

関連する問題