VS2010 SQL Server 2005 Database Project 使用笔记(二)
經過又一天的努力,終于讓數據庫項目全編通過。
現在的解決方案里已經有十個項目了,其中八個數據庫項目,一個服務器項目(SQL Server 2005 Server Project),一個單元測試項目。
直到下午還是滿屏的Error,但經過不斷的搜索(資料不多)和數次嘗試,找到了關鍵問題和應對方法,后面就是對其余的項目重復幾次這個過程,終于迎來了曙光。
?
再次給出關于 數據庫引用的資料鏈接?(MSDN)
?
簡單整理步驟如下:
1. 因為數據庫中自定義的Schema對象依賴于“Login”,所以需要建立一個Server Project,導入master;
為了順利Build該項目,需要添加對master.schema的引用,該文件位于VS2010的安裝目錄,上面鏈接里有介紹。
2. 各數據庫項目都添加對上述Server Project的引用,注意,同時也要添加對 master.schema的引用 (這里只是急于解決問題,聲明下不是標準步驟)
3. 從最外圍最少用的庫對應的Database Project開始。先Unload掉其他Database Project,減少干擾,先集中精力消除項目自身的錯誤(非引用錯誤)。
自身錯誤主要是語法錯誤,語法錯誤一般很少,畢竟是實際在用的開發數據庫。
今天只遇到一個SQL2000中FLOAT(m,n)無法通過SQL2005語法檢查的問題。(意外發現這個升級遺留問題,這一方面也展現了VS對Schema進行靜態檢查的優秀功能,以及我們使用適當的工具輔助我們工作的必要性)
4. 接下來處理引用錯誤,就是那些視圖,存儲過程中包含對其他數據庫對象的引用導致的錯誤。
還是那個減少干擾的思路,先從較為少用的庫項目開始Reload。
這里有個關鍵細節,就是在添加數據庫引用(項目型引用)時,相比昨天采用默認的參數,今天嘗試了使用 Database Reference Variables, 因為數據庫都在同一臺服務器的原因,所以沒使用Server Variable,只定義了Database variable。
沒有勾選“Literal”。
"Name"欄輸入數據庫名稱(當然輸入別的合法變量名也沒問題)。
"Value"輸入數據庫名稱。Value可以在部署項目時修改為實際的名字,這點昨天提到過,數據庫變量的一個作用就在于解決開發和部署的數據庫名稱差異問題。
可以注意到,"Name”在編輯焦點離開后,會自動變成 $(Db1) 的形式,這也就是我們要在腳本中使用的表示其他數據庫的變量。VS這里有個貼心并且體驗良好的功能,勾選下面的“Updating Schema Objects and Scripts”,在確定后VS會自動找出已有的對其他數據庫的引用,并自動替換為前面定義的變量,形式為 [$(Db1)]。如果手寫的話,注意方括號([])不缺少為妙。
在使用數據庫變量之后,非常多的SQL03006錯誤自動閃躲。
在指定“Name”而不是使用“Literal”(文本方式引用數據庫)之后,SQL04105也排隊撤離。
(當然,這里提醒還是要好好閱讀MSDN,搞清因果,結合需求而行,并不是任何時候都要這么用,否則選項就沒有提供的價值啦)
(文檔中提到的復合項目,相比使用數據庫引用,更適合一組數據庫要協同部署的情況)
5. 在對所有數據庫項目這么演練一番后,只剩下些散兵游勇。
我遇到的具體情況比較理想,清一色地視圖里有昨天SQL03006 2)的情況,替換掉幾個后,解決方案終于順利全編通過。
6.(遺留)還有1083個警告,日后慢慢消化,邊理解邊解決。
?
正好上午有個用戶報了個BUG,估計和數據庫訪問有關,就順手找到對應的存儲過程文件,在Schema視圖下,右鍵自動創建了對應的單元測試腳本,協助定位bug。
?
享受勞動成果確實是件好事,雖然已經是下班后的事啦。
?
P.S. 下一個需求是數據庫單元測試,先放個今天偶然看到的資料
Test Driven Development with Visual Studio for Database Professionals?(InfoQ)
轉載于:https://www.cnblogs.com/yicone/archive/2010/05/27/1745758.html
總結
以上是生活随笔為你收集整理的VS2010 SQL Server 2005 Database Project 使用笔记(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中 set,list,array
- 下一篇: C语言标准库函数qsort排序的介绍与使