2012-01-23 162 views
7

OK..so我是Git/Github的新手,在我職業生涯的大部分時間都在Visual Source Safe之後,並且看到了燈光 - 喜歡它。所以我已經把我所有的.NET項目都遷移到了我的Github賬戶中,並且也想用Git來管理我所有的SQL Server數據庫。在我的所有項目中,我總是將數據庫文件放在/ Database子目錄中,因此我的源代碼樹中包含/Databases/MyDatabase.mdf和/Databases/MyDatabase.ldf。我正在用Git跟蹤這些文件,並且在Github中很好地顯示了我的所有源代碼。Git和SQL Server MDF文件

以下是我期待的事情:我停止使用NET STOP MSSQLSERVER的SQL Server,並檢出分支,以便Git將拉下該分支的MDF和LDF文件。使用NET START MSSQLSERVER重新啓動SQL Server,並在特定分支的源和數據庫上執行所需的任何工作。 Git會跟蹤我對MDF文件的更改,當我執行stage/commit/push時,它會將更改發送回遠程存儲庫。

我試圖通過拉下數據庫,並添加一個新的列到表並進行提交。 Git告訴我沒有任何變化,我沒有想到的任何項目...我改變了MDF文件。 Git不可能跟蹤MDF文件中的更改嗎?我的第一個猜測是,也許是因爲它是二進制文件,而不是基於文本的Git可能會遇到麻煩,但我相信可以使用Git來跟蹤圖像文件和其他二進制文件,這樣似乎不會是問題所在。有任何想法嗎?這是不可能的嗎?我是否應該嘗試去做這件事?預先感謝您的意見。

+0

偏題;投票轉移到DBA SE。 – Yuck

回答

8

更改爲數據庫文件到任何源代碼管理是非常糟糕的主意。嘗試創建/更新適當的腳本並將它們存儲在源代碼管理中 - 這是跟蹤DB內部架構更改的正確方法如果您使用的是Visual Studio,那麼從數據庫和服務器項目開始在裏面。但有時表現怪異的方式,所以請謹慎使用,並輕輕

OR你可以使用一些商業/免費軟件來跟蹤DB模式內的變化和數據,像展鵬架構比較或展鵬數據比較

+0

如果你解釋爲什麼它是一個壞主意,我會接受你的答案/ upvote ......我想要做的就是在開發過程中保持文件版本在必要時回滾更改。我不希望將分支MDF文件合併到主文件或任何東西 - 我只想對文件進行版本控制 - .mdf/.ldf和類似Photoshop文件之類的區別是什麼?對我在早期開發中所做的每一項變更進行腳本編寫是一件痛苦的事我使用Redgate SQL比較和數據比較,並且它們是將環境變化向上移動的很好工具(例如,G。開發qa來刺激)。 –

+2

@ CK1 schema中的變化很小,sql服務器每次**打開**會導致重新加載整個文件/日誌到服務器,因爲最小數據庫大小爲4 Mb--這意味着巨大的垃圾開銷。只有腳本更改並將它們保存到源代碼管理中,可爲您提供清晰可讀的DB更改歷史記錄 –

+0

@ CK1您是否考慮接受任何答案? –

1

您是否考慮過使用我們的SQL源代碼管理工具來跟蹤開發變化。這爲幕後的所有'腳本'提供了腳本。它實際上使用SQL Compare的引擎。

http://www.red-gate.com/products/sql-development/sql-source-control/

由於奧列格正確地指出,這是可能使用SQL比較和SQL數據比較來追蹤架構更改,但在這裏,紅門,我們不建議你這樣做了源代碼控制之下保持你的開發環境。理想情況下,你應該兩個都做。 Grant Fritchey撰寫了一篇很好的文章,描述SQL Compare的命令行如何與源代碼管理系統一起使用來跟蹤模式更改。他在他的例子中使用了SourceGear Vault,但是這些原則適用於任何源代碼控制系統。

http://www.simple-talk.com/sql/database-administration/auditing-ddl-changes-in-sql-server-databases/

相關問題