2010-02-16 54 views
0

我們想要創建一個c#/ VC++應用程序,通過它我們應該能夠以我們自己的文件格式(以在線方式)創建sql server數據庫SNAPSHOT。使用我們自己的文件格式創建數據庫SnapShots

後來,我們應該能夠使用我們的應用程序以離線方式從這些快照文件中獲取數據(即,我們應該能夠獲得表/列的數量/名稱...等細節)。

有人知道該怎麼做嗎?

感謝

+0

爲什麼用你自己的格式? SQL Server自己的快照有什麼問題? – MartW 2010-02-16 09:36:42

+0

您似乎以3種或4種不同的方式提出了此問題。如果您提供有關應用程序的更多詳細信息,可能會更容易回答您。你是純粹對數據庫的表模式感興趣,還是你想要數據? – 2010-02-16 09:42:05

+0

@CodeByMoonlight - team-ferrari22已經問過這些 - http://stackoverflow.com/questions/2266211/how-to-convert-snapshot-files-to-any-other-format – 2010-02-16 09:43:17

回答

0

如果你在表和列的名稱純粹是興趣一個簡單的解決辦法是查詢INFORMATION_SCHEMA.COLUMNS

select * from INFORMATION_SCHEMA.COLUMNS 

您可以將該查詢的輸出存儲在一個文件您選擇的格式 - 它應該會提供足夠的信息,以便日後可視化表格的結構。

INFORMATION_SCHEMA還包含有關索引,約束等的其他視圖,您可以將它們連接在一起以獲取數據庫結構的更完整圖片。它包含在SQL 2000 SP3和所有更高版本中。

或者,如果您有它們,您可以使用來自您的源代碼管理系統的數據庫的DDL腳本,並解析這些腳本以獲取架構的歷史視圖。

+0

不會「脫機」 - 需要一個SQL服務器來執行'SELECT'語句。 – MSalters 2010-02-16 10:03:30

+0

@ MSalters - 也許我應該更清楚 - 我的意思是當數據庫在線供以後參考時將數據提取到文件中。 – 2010-02-16 10:24:24

0

我相當確定這實際上是不可能的。

驅動快照的基本機制是寫入時複製。 COW允許您製作現有數據的廉價副本,有效地通過在進行實際更改之前不復制數據,然後僅複製修改過的部分。因此,任何未經修改的數據將在原始副本和外觀副本之間共享。

數據庫快照僅僅是原始版本,而數據庫的「當前」狀態是COW副本。你不能自己設置它,因爲你不能僅僅創建數據庫的COW副本。即使你可以製作這樣一個拷貝,COW拷貝的整個要點是它是一個拷貝,即以相同的格式。所以它不會以你的格式。

相關問題