Query

針對先前 SQL 查詢結果的 SQL 查詢

  • March 9, 2012

是否有一個 SQL 數據庫(用於 C#)允許我查詢磁碟上的數據庫,然後(可能在客戶端離線)使用 SQL 查詢記憶體中的結果集?

我基本上希望始終能夠對來自先前 SQL 查詢的任何內容進行 SQL 查詢,無論是在磁碟上還是在記憶體中。

我說的只是 CRUD 查詢。

謝謝!

背景:

這將用於在執行時針對以前的查詢結果進行一般的即席客戶端查詢,它也適用於記憶體目的,但這不是這裡的主要關注點。是的,我需要 SQL 或 TSQL。

在您看來,為此目的將 DataSet(s) 保存到記憶體數據庫(例如嵌入式 SQL Server)中的性能成本是多少?

我覺得 LINQ 是最好的方法,但如果你想在數據庫和記憶體數據表上使用 TSQL,你可以試試這個記憶體 SQL 引擎

您是否正在檢查記錄在您讀取後是否已更改,以免覆蓋另一個事務的數據?在這種情況下,您可能想查看實現樂觀並發的各種其他方法。. 執行此操作的正常方法是使用 SQL Server 在記錄上設置一個時間戳列,在讀取時記錄時間戳,然後在寫入時檢查它。

您可以生成健壯的查詢,這些查詢不會意外覆蓋更改的記錄,方法是使用 SQL 片段對時間戳進行相等檢查,例如:

update Foo
  set col1 = @col1
     ,col2 = @col2
where FooID = @FooID
  and time_stamp = @timestamp  -- captured when the record was read,
                               -- this clause ensures a dirty record
                               -- is never overwritten.

select @rec_ct = @@rowcount

if @rec_ct == 0 then [concurrency error condition]

. . .

這永遠不會覆蓋自您閱讀以來已更改的髒記錄。檢查@@rowcount允許您檢測寫入是否成功。

可以在此處找到有關樂觀並發的 Stackoverflow 文章。

引用自:https://dba.stackexchange.com/questions/14648