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