事情開(kāi)始得很簡(jiǎn)單。MegaWare公司市場(chǎng)部門想要一個(gè)新的網(wǎng)站來(lái)發(fā)布文檔,開(kāi)發(fā)團(tuán)隊(duì)覺(jué)得使用SQL Server 2000數(shù)據(jù)庫(kù)作為文檔存儲(chǔ)倉(cāng)庫(kù)會(huì)使事情變得簡(jiǎn)單。Steve是MegaWare的數(shù)據(jù)庫(kù)管理員,沒(méi)有看出這有什么大問(wèn)題;在數(shù)據(jù)庫(kù)中存儲(chǔ)文檔,而不是使用文件系統(tǒng),意味著服務(wù)器需要多做一些工作,但是它也會(huì)使得備份和管理容易得多。數(shù)據(jù)庫(kù)與文件系統(tǒng)變得不同步也應(yīng)該是不可能的。
直到公司的標(biāo)語(yǔ)改變的那個(gè)重大的日子。市場(chǎng)部的團(tuán)隊(duì)認(rèn)為“MegaWare: It's really cool!”要比原來(lái)的“It's MegaWare's Way or the Highway!” 聽(tīng)起來(lái)更好。因?yàn)槭袌?chǎng)部團(tuán)隊(duì)已經(jīng)將原來(lái)的標(biāo)語(yǔ)嵌入了倉(cāng)庫(kù)中每個(gè)文檔的頁(yè)腳上,現(xiàn)在Steve的工作就是更改所有這些文檔的頁(yè)腳。
“沒(méi)有問(wèn)題,” Steve想,打開(kāi)SQL Server 查詢分析器工具,執(zhí)行了如下的T-SQL批處理:
SQL Server的開(kāi)發(fā)人員很幸運(yùn),他們將會(huì)撥開(kāi)烏云見(jiàn)藍(lán)天。SQL Server 2005引入了一系列新的被稱為MAX的數(shù)據(jù)類型。這是VARCHAR,NVARCHAR和VARBINARY類型的擴(kuò)展,這幾種類型以前被限制在8000字節(jié)以下。MAX可以容納高達(dá)2GB的數(shù)據(jù),與TEXT和IMAGE一樣——并且完全兼容所有的SQL Server內(nèi)置的字符串函數(shù)。
因?yàn)樽址?lsquo;1’是被作為規(guī)定了尺寸的VARCHAR對(duì)待,而不是VARCHAR(MAX),結(jié)果就是8000——但是在SQL Server 2005中,REPLICATE函數(shù)能夠產(chǎn)生高達(dá)2GB的字符串。要修正這個(gè)問(wèn)題,可以將字符串轉(zhuǎn)換為VARCHAR(MAX),這樣函數(shù)就會(huì)輸出同樣的類型了:
所以,現(xiàn)在你知道了MAX數(shù)據(jù)類型為SQL Server 2005處理大數(shù)據(jù)增加了很大部分的靈活性。但是MegaWare的那個(gè)不幸的數(shù)據(jù)庫(kù)管理員,Steve會(huì)發(fā)生什么變化?還在堅(jiān)持使用SQL Server 2000,他開(kāi)始更新簡(jiǎn)歷,想象著如果更新表失敗了話,他的工作也就失去了。但是他也是幸運(yùn)的——還有世界各地的MegaWare產(chǎn)品的擁護(hù)者——用GOOGLE的搜索可以很快地找到這篇文章《在TEXT字段中查找并替代》,這篇文章告訴他如何正確的進(jìn)行更新。他花了整晚的時(shí)間來(lái)學(xué)習(xí)資料;再過(guò)幾個(gè)月之后,TEXT和IMAGE數(shù)據(jù)類型就僅僅是一段不愉快的記憶了。