新的數據類型
繼SQL
增加了四種新的數據類型之後
SQL
又提供了三種新的數據類型
分別是bigint
sql_variant和table
在數據量越來越大的今天
用int(
^
(
) 到
^
(
))來表示整數有時已經顯得不太夠用了
FLOAT也不是很合適
所以VB
和SQL
都有了新的整數類型
這就是bigint
它是
bytes的整數類型
范圍是
^
(
) 到
^
(
)
熟悉VBScript的人都知道
VBS使用的是一種叫做variant的數據類型
它可以存放任何數據類型
數字
字符
對象等
SQL
裡面的sql_variant還沒有那麼強大的功能
它不能存放blob的數據
如text
ntext和image
還有timestamp
但是已經給編程帶來了很大的方便了
SQL裡面是沒有數組類型的
但是新的表格類型允許應用軟件暫時存儲那些一會兒會用到的結果
它不可以做為表的一個列出現
而只能在T
SQL程序中使用
作為自定義函數的返回值很好用的
Example:
DECLARE @TableVar TABLE
(Cola int PRIMARY KEY
Colb char(
))
INSERT INTO @TableVar VALUES (
abc
)
INSERT INTO @TableVar VALUES (
def
)
SELECT * FROM @TableVar
GO
要注意的是
以前版本的ADO對這幾種數據類型的支持都不完全
要在程序中使用這兩種數據
請使用MDAC
SQL Server
和 XML
現在XML似乎很吃香
各種東東都開始支持XML了
善於跟風的MS自然是事事都想要帶頭的
浏覽器
Office
SQL
MDAC都要和XML攙和一哈
去年MS就在MDAC
還是
裡面提供了一個功能
把一個結果集保存為XML
在SQL
裡面
使用XML更加方便了
SQL查詢可以直接返回一個XML
並且還可以通過XML來修改數據庫中的數據哦
要返回XML非常的簡單
只需要在你的SQL 語句後面加一個FOR XML AUTO就可以了
Example:
SELECT TOP
ID
Filename
Download_Time
Introduce FROM download FOR XML AUTO
如果使用FOR XML RAW的話
就會返回
如果用FOR XML AUTO
ELEMENTS
結果是
ayako_katagiri
exe
T
:
:
片桐彩子Winamp Skin
使用FOR XML EXPLICIT特別麻煩
前面要定義一堆東西
但是功能也很強大
我就不詳細介紹了
有興趣的可以參見Online Book
Using EXPLICIT Mode
SELECT TOP
as Tag
Null as Parent
ID as [DownloadXML!
!ID]
Filename as
[DownloadXML!
!Filename] FROM download FOR XML EXPLICIT
上面是如何返回XML數據
下面來看一下如何把XML當表使用
OPENXML可以把XML的數據打開成為一個表
Example:
declare @l int
declare @txtXML varchar(
)
set @txtXML =
exec sp_xml_preparedocument @l OUTPUT
@txtXML
SELECT * FROM OPENXML (@l
/Root/download
) WITH (ID int
Filename
varchar(
))
EXEC sp_xml_removedocument @l
執行結果
ID Filename
ayako_katagiri
exe
beauti
mid
bee
mp
behavior
js
cactivex
zip
chatsrvr
exe
chatter
exe
china
zip
ciyun
gb
ci_shanxi
gb
(
row(s) affected)
這些功能意味著我們可以使用SQL
來生成一個XML並且通過XML的得到客戶端的返回值(不一定要通過ASP之類的工具哦
可以通過URL來訪問SQL
返回的XML的
不過這個功能我還沒有弄太明白
所以先不介紹了)
聯合SQL
服務器(Federated SQL Server
Servers)
可能大家都聽說過集群服務器Clustered Server
但是在SQL
裡面我卻驚奇的發現
集群服務器不見了!取而代之的是一個叫聯合服務器的東東
現在就讓我們來看看它們之間有什麼區別吧
SQL
的數據庫能夠被分散在一組獨立的數據庫服務器上以支持大規模的Web站點的訪問需求和企業級的數據處理系統
面對日益增長的需求
只需要簡單的添加一個節點服務器就可以了
——我怎麼看不出來和集群服務器有什麼區別嘛?
——上課的時候
不要發出這種聲音!急什麼
下面自然會講到的
再亂講話就罰站了哦
Windows
的COM+組件就是被設計來用於在集群的Windows
服務器上實現商業邏輯層的
每個服務器上都有一套同樣的COM+組件
WIndows
自己來平衡各個服務器之間的負載
使用Cluster Administrator可以很方便的配置集群服務器
但是SQL
並不支持這樣的集群
SQL
支持可更新的分布式視圖(distributed partitioned views )
用它來水平的將數據分割在一組服務器上
這使得用戶可以把一個數據庫服務器添加到一組數據庫服務器中
這些數據庫相互合作
以提供和集群數據庫服務器相同的性能標准
雖然它們合作管理這些數據
但是它們之間是獨立運作的
每個服務器有獨立的管理界面
(當然
你可以使用Enterprise Manager來管理一組服務器
但總是作為一個Group中多個Server來管理的
並不能把它們當作是一個Server)
也有各自的運作規則
可以有其他的數據和進程
只是在聯合起來處理一個工作的時候才聯合在一起
SQL
現在在多CPU的系統上可以有非常優異的性能(可以有
個或者更多的CPU)
但是使用聯合服務器
你幾乎可以處理無限的負載
現在 最高的tpcc紀錄就是
台
CPU的聯合服務器完成的
(
月
日的測試結果
到現在仍然是最高的
)
數據庫服務器和商業邏輯服務器不一樣
運行商業邏輯的時候每個服務器都可以完成相同的工作
即使一台服務器down了也不會對系統有什麼影響
而數據庫就不一樣
你必須把數據分散在不同的服務器上
否則對性能就沒有什麼提高了
而在這樣的情況下
如果數據庫服務器不能用於處理獨自的事務
那麼就顯得有些浪費
OK
課間休息
min
下面我們講重要的話題
如何使用聯合服務器
建立Linked Server
SQL
就有了的東東
打開你的Enterprise Manager
Security|Linked Servers
右鍵New Linked Server
Server Type選SQL Server
然後填上用戶名口令什麼的
在每個服務器上建立表
On Server
:
CREATE TABLE Table_
_To_
(ID INT PRIMARY KEY
CHECK (ID BETWEEN
AND
)
other fields
)
On Server
:
CREATE TABLE Table_
_To_
(ID INT PRIMARY KEY
CHECK (ID BETWEEN
AND
)
other fields
)
On Server
:
CREATE TABLE Table_
_To
(ID INT PRIMARY KEY
CHECK (ID >
)
other fields
)
在每個服務器上建立視圖
CREATE VIEW Partitioned_Views AS
SELECT * FROM MyDatabase
dbo
Table_
_To_
UNION ALL
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22121.html