原創:通過VS 2010+SVN為SQL Server提供數據庫版本管理


    對於一個軟件企業來說,源代碼就是公司全體智慧的結晶,絕不能有任何閃失。但對於公司產品的基石數據庫怎么來進行統一管理呢?通常,是直接備份數據庫文件的方式,或者生成數據庫的部署腳本,來重復的備份。這個方法可行,卻有些值得改進的地方。首先,太繁瑣了,浪費精神;其二,不方便和其它項目同時管理。下面,就介紹我偶然看到的方法,當然,可能有很多人已經這么做了,但分享給那些還不知道的人。

大體思路:

  1. VS 2010 提供了一個項目類型,新建->數據庫->SQL Server 2005 數據庫對象 或 SQL Server 2008 數據庫對象,完整的提供了SQL Server 的定義創建和生成部署腳本功能。
  2. 通過VS 2010下的數據->架構比較(Schema Compare)能將SQL Server數據庫和SQLServer數據庫項目差異比較出來,並提供雙向同步功能。
  3. Subversion,提供基於文本的SQL語句版本管理支持。

 

本示例采用VisualSVN-Server(Subversion 服務器)、AnkhSvn(VS 2010的Svn 插件)、SQL Server2005、VS 2010,示例數據庫為AdventureWorks。

 

因為安裝的是英文版的VS2010,大家就對應着中文的看吧。

 

第一步:通過VS  2010 創建數據庫項目。打開VS 2010,File->New->Project,在Recent Templates中選中Database->SQL Server,並在右面的項目類型中選中SQL Server 2005 Database Project,輸入項目名稱,並點擊OK。

第二步:在新建的ExampleSystemSQL項目上點右鍵,選中菜單中的Import Database Objects and Settings,

會彈出一個對話框,讓我們選擇數據庫。可以通過Tools->Connect to Database創建。為了簡單,就直接選已有的AdventureWorks連接。

單擊Start就開始將SQLServer2005中數據庫AdventureWorks的定義取回到項目中來。

點擊Finish,就可以看到AdventureWorks的定義了。

第三步,將整個項目添加到版本管理中。事先已在一台服務器上安裝了VisualSVN-Server-2.5.8,並創建了一個庫叫Unique,SVN地址是:https://server2003/svn/unique。同樣,選中ExampleSystemSQ項目點右鍵,選擇里面的Add Sulution to Subversion…

在彈出的對話框中輸入Repository Url,https://server2003/svn/unique,如下圖,並點擊OK。如果需要認證的話,就輸入在VisualSVN-Server中建立的用戶名和密碼。

在彈出的日志輸入對話框中直接點擊OK。剛才的步驟只是把項目添加的svn副本的本地,還沒有提交,所以需要再次在解決方案上點右鍵,選中Commit Solution Changes,輸入日志,點擊OK,就行了。

 

至此,我們為AdventureWorks數據庫創建了版本管理,那如果我們修改了AdventureWorks呢,該怎么實現同步呢,下面,就是VS 2010的強大之處了。首先,在AdventureWorks中創建了一個新表名字叫dbo.Table_1。再打開VS 2010中的Data->Schema Compare(架構比較)-> New Schema Comparison,配置源數據庫和目標項目,如下圖所示。Source Schema選擇數據庫,Target Schema 選擇Project ExampleSystemSQL項目。

點擊OKVS 2010就開始進行架構比較,結果如下圖:

可以看到剛剛新建的表Table_1,在空白處,點擊右鍵,選擇Write Updates,在確認對話框中點擊OK,就會把新建表Table_1的定義保存到項目中。

馬上,就可以在VS項目中看到新添加的Table_1的SQL腳本文件了。

接下來,就可以將更新的腳本提交到SVN中,與普通的C#項目沒什么差別。

 

值得注意的一點是,在VS 2010 項目ExampleSystemSQL中,可以直接添加新表的定義,再同步到AdventureWorks數據庫中,也是通過Data->Schema Compare(架構比較)->New Schema Compasion來實現的。同步是雙向的。VS 2010 可以對ExampleSystemSQL項目生成部署腳本。

轉載請注明作者博客地址:http://www.cnblogs.com/ProJKY


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM