2013-07-31 111 views
8

MDF文件訪問(當連接到SQLEXPRESS時)線程安全嗎?訪問MDF文件線程安全

我有一個本地的MDF文件與我的WPF客戶端應用程序一起部署。 我正在使用MDF文件來保留一些特定於客戶端的設置。可能有很多線程同時選擇和更新相同的行,並因此通過SQL連接提供者同時訪問文件。

現在,我問的是不是我可以像處理遠程SQL SERVER數據庫一樣處理線程同步(只需將所有工作留給SQL連接提供者),還是必須包裝我的數據庫在關鍵部分內調用?

謝謝!

+0

望着答案,目前還不清楚你想要做什麼。如前所述,MDF是您通常通過數據庫引擎訪問的核心數據庫文件。什麼會幫助你知道你是如何訪問它的 - 你使用的連接字符串,或者如果不是你演示如何修改MDF的源代碼。沒有這些,你不知道你在做什麼。 –

回答

0

我真的很困惑,它是在數據庫服務器上運行的Microsoft SQL數據庫,用於管理表和行鎖定和衝突,只要您在更新行時在WHERE子句中使用樂觀併發。例如

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

所以它當然是線程安全的。

+0

不,它是本地項目的一部分。該項目是一個客戶端EXE部署到數百臺機器。你是說它對附加的mdf文件或常規的遠程連接沒有任何影響嗎? –

+0

你沒有直接訪問本地文件,你正在通過sql server client訪問sql server存儲引擎這個訪問文件。 – dixpac

+0

@UriAbramson,你將無法從多臺機器上連接網絡文件。您需要將該數據庫放在服務器上,並在部署過程中將連接字符串更改爲「Server = serverName; Database = databaseName; User ID = userid; Password = pwd」。 –

0

MDF文件是主數據庫文件

您無法直接從理論上寫入MDF文件,而是通過SQL Server引擎和客戶端訪問。

至於多SELECTUPDATE你對數據庫事務隔離級別繼電器(讀COMMITED,讀未提交的,序列化,快照)。

Isolation Levels in the Database Engine

+0

MDF文件不一定是服務器的主要數據庫文件。它可以使用VS或其他方式創建,並在SSMS「附加」到SQL Server實例時通過SSMS訪問。 –