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