2008-09-30

SQL Server 2008 Express 版本(Edition)、支援功能、硬體限制


SQL Server 2008 目前分成為以下的版本:Enterprise、 Enterprise Evaluation、Developer、Standard、Workgroup、Web、Express等版本。

其中,SQL Server Express 資料庫平台是以 SQL Server 2008 為基礎,它也是 Microsoft Desktop Engine (MSDE) 的替代產品。
SQL Server Express 是免費的,而且可由 ISV 轉散發 (受到合約的限制)。SQL Server Express 很適合用來學習及建置桌面和小型的伺服器應用程式。這個版本是獨立軟體廠商、非專業開發人員及建置用戶端應用程式之愛好者的最佳選擇。如果您需要更進階的資料庫功能,SQL Server Express 可以順利地升級為更豐富的 SQL Server 版本。

目前 SQL Server 2008 Express 還可以再細分為以下的版本:

SQL Server 2008 Express
SQL Server 2008 Express with Tools
SQL Server 2008 Express with Advanced Services

這與SQL Server 2005 Express一樣,皆區分為三種版本,請參考以下的文章:
免費無料 SQL Server Expression Edition, Royalty Free
http://sharedderrick.blogspot.com/2008/03/sql-server-expression-edition-royalty.html


以下是這三種版本的快速描述:

(1)SQL Server 2008 Express
是以 SQL Server 為基礎,而且支援該產品的大部分 Database Engine 功能。
採用容易部署且可以快速原型化的設計,而且是免費提供,也可以隨應用程式免費轉散發的軟體。
下載項目大小: 68.4 MB - 99.1 MB(下載大小要依選定的下載元件而定)


(2)SQL Server 2008 Express with Tools
功能同上述的SQL Server 2008 Express,另外還有簡單好用的圖形化管理工具 - SQL Server 2008 Management Studio Basic,可以讓您輕鬆管理 SQL Server 2008 Express。
您可以免費下載、免費部署,並以應用程式內嵌組件的形式免費轉散發 SQL Server 2008 Express with Tools;此外,您還可以透過這套工具,快速且輕鬆開發並管理資料驅動應用程式。 下載項目大小: 249.5 MB


(3)SQL Server 2008 Express with Advanced Services
功能同上述的SQL Server 2008 Express,而且還包含有:
利用簡單好用的 SQL Server 2008 Management Studio Basic 圖形化管理工具,輕鬆管理 SQL Server 2008 Express。
對 SQL Server 資料表中一般字元類型的資料發出全文檢索查詢。全文檢索查詢可以包含單字和片語,或者單字或片語的多種形式。
執行有關本機關聯式資料的 SQL Server Reporting Services 報表。
您可以免費下載、免費部署,並以應用程式內嵌組件的形式免費轉散發 SQL Server 2008 Express with Advanced Services;此外,您還可以透過這套工具,利用功能強大的內建報告與全文檢索搜尋功能,快速且輕鬆開發及管理資料驅動應用程式。
下載項目大小: 560.1 MB - 607.4 MB


建議:
(1)若你是要開發資料庫程式,可以選用SQL Server 2008 Express with Tools版本。
(2)若你除了開發資料庫程式,還會包含開發Reporting Services 報表時,請選用SQL Server 2008 Express with Advanced Services版本。
(3)若是要佈署資料庫程式(無需使用Reporting Services 報表)到客戶電腦上,可以使用SQL Server 2008 Express版本。


要提醒您的是:免費版本的SQL Server 2008 Management Studio Basic工具,與其他版本的SQL Server Management Studio管理工具,可能相容性的問題,請您擇一安裝即可。

關於CPU數量與SQL Server Express
SQL Server Express 只計算電腦中的實體處理器晶片。SQL Server Express 會將單核心 CPU、雙核心 CPU 和超執行緒 CPU 都視為單一 CPU。
請參考以下的文章:
多核心 CPU 與 使用 SQL Server 版本(Multicore CPUs ; Standard Edition)

http://sharedderrick.blogspot.com/2007/12/cpu-sql-server-multicore-cpus-standard.html


以下是各版本的細部功能比較:

SQL Server Express 2008支援的主要功能和元件


¹ SQL Server Express 支援 Service Broker,但是不支援在兩部 SQL Server Express 伺服器之間直接進行通訊。
²追蹤旗標 7806 支援 SQL Server Express 的專用管理員連接功能。

SQL Server Express 2008中不支援的 SQL Server 功能


下列清單是 SQL Server Express 中不支援的元件:
Reporting Services、Notification Services 、Integration Services 、Analysis Services 、全文檢索搜尋、OLAP Services/資料採礦。


SQL Server Express with Advanced Services支援的 SQL Server 功能

¹SQL Server Express 支援 Service Broker,但是不支援在兩部執行 SQL Server Express 的伺服器之間直接進行通訊。
²追蹤旗標 7806 支援 SQL Server 2008 Express 的專用管理員連接功能。

SQL Server Express with Advanced Services不支援的 SQL Server 功能

下列清單是 SQL Server Express with Advanced Services 中不支援的元件:
Integration Services、Analysis Services 、OLAP Services (Analysis Services)/資料採礦


--2008/12/09 更新

感謝同好的提醒,筆者這邊補充關於 SQL Server 2008 Express 的硬體限制:

基本上,與 SQL Server 2008/2005 Express 版本的硬體限制,十分類似,一樣是支援:
一顆「實體」 CPU,記憶體:1 GB,每個資料庫的最大大小限制為:4GB。所以即便是四核心的CPU,SQL Server Express 也是可以完全支援使用。


可惜的是 SQL Server Express 沒有 SQL Agent Service,有關於定期排程的部分,可能要搭配 Windows 作業系統的「Task Scheduler」。


請您參考以下的文件:
Compare Editions–Compact and Express
http://www.microsoft.com/sqlserver/2008/en/us/compare-specialized.aspx

SQL Server 版本所支援的最大處理器數目
http://msdn.microsoft.com/zh-tw/library/ms143760.aspx

SQL Server 版本支援的記憶體
http://msdn.microsoft.com/zh-tw/library/ms143685.aspx

SQL Server Express supports 1 physical processor, 1 GB memory, and 4 GB storage.
http://www.microsoft.com/sqlserver/2008/en/us/express.aspx

SQL Server 2005 功能比較
http://www.microsoft.com/taiwan/sql/prodinfo/features/compare-features.mspx

下載網址:
SQL Server 2008 Express
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=58ce885d-508b-45c8-9fd3-118edd8e6fff

SQL Server 2008 Express with Tools
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=7522a683-4cb2-454e-b908-e805e9bd4e28

SQL Server 2008 Express with Advanced Services
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=b5d1b8c3-fda5-4508-b0d0-1311d670e336

參考資料:
SQL Server Express 的概觀
http://msdn.microsoft.com/zh-tw/library/ms165588.aspx

SQL Server Express 功能
http://msdn.microsoft.com/zh-tw/library/ms165636.aspx

SQL Server Express with Advanced Services 功能
http://msdn.microsoft.com/zh-tw/library/ms365248.aspx

SQL Server Express with Advanced Services 中的 Reporting Services
http://technet.microsoft.com/zh-tw/library/ms365166.aspx

SQL Server Express 中 Reporting Services 所支援的功能
http://technet.microsoft.com/zh-tw/library/cc281020.aspx

SQL Server 2008 的版本和元件
http://msdn.microsoft.com/zh-tw/library/ms144275.aspx

SQL Server 2008 版本支援的功能
http://msdn.microsoft.com/zh-tw/library/cc645993.aspx

2008-09-29

TechEd 2008 研討會:DAT309_打造資料庫金鐘罩- SQL Server 2008 安全功能再進階


筆者非常榮幸有能參與TechEd 2008 Taiwan...^_^

時間:2008年9月25日 13:30~14:40
地點:台北國際會議中心 (台北市信義區信義路五段一號)


根據National Vulnerability Database(NIST)機構的報告,過去四年Oracle資料庫超過330個重大安全性修正,相同這段期間相同的SQL Server產品,卻以0個安全性問題,遠遠勝出其他資料庫產品。新版SQL Server 2008在產品設計階段即對安全的要求作嚴密的把關,「系統預設為安全狀態」設定的增強以及強化的安全性模型,更可確保企業關鍵任務系統的安全性,本場次將一步步帶領您體會 SQL Server 2005 到 SQL Server 2008 安全性加強及能力。
筆者的主題是:DAT309_打造資料庫金鐘罩- SQL Server 2008 安全功能再進階。

投影片下載:


2008-09-24

如何查詢 SQL Server version 版本號碼



每項 SQL Server 產品 (包括 Service Pack) 都有它自己的版本號碼。有幾種方法可以檢視 SQL Server 執行個體的版本號碼:
1. 當連接到執行個體時,在 SQL Server Management Studio 的 [物件總管] 中檢視。
2. 對 Database Engine 執行個體執行以下的程式碼查詢。

/*
SERVERPROPERTY(propertyname )

propertyname 屬性資訊之說明:

ProductVersion:SQL Server 執行個體的版本,格式為 'major.minor.build'。

ProductLevel:SQL Server 執行個體的版本層級。

傳回下列項目之一:
'RTM' = 原始發行版本
'SPn' = Service Pack 版本
'CTP', = Community Technology Preview 版本

--
@@VERSION
傳回目前安裝之 SQL Server 的版本、處理器架構、建置日期和作業系統。
*/
SELECT SERVERPROPERTY('ProductVersion') N'版本編號',
SERVERPROPERTY('ProductLevel') N'版本層級',
@@VERSION N'SQL Server 的版本、處理器架構、建置日期和作業系統'



請參考下圖所示:查詢 SQL Server 2008 相關的版本資訊:



請參考以下的表格整理:



注意:
如果您在安裝產品或安裝舊版的 Service Pack 後套用了 Hotfix,則您的產品版本可能會與這些值有所不同。
例如:套用安全性修正檔 MS03-031 至 SQL Server 2000 SP3a 後,@@VERSION 會傳回值 8.00.818。


下表顯示對應於 SQL Server 2008 版本的版本號碼:
版本號碼 SQL Server 2008 版本
10.0.1600.22 初始版本,RTM

下表顯示對應於 SQL Server 2005 版本的版本號碼:
版本號碼 SQL Server 2005 版本
9.00.1399 初始版本,RTM
9.00.2047 SP1
9.00.3042 SP2

下表顯示對應於 SQL Server 2000 版本的版本號碼:
版本號碼 SQL Server 2000 版本
8.00.194 初始版本,RTM
8.00.384 SP1
8.00.534 SP2
8.00.760 SP3
8.00.2039 SP4


參考前述的表格,可以協助你快速一覽目前 SQL Server 2000、2005、2008 的版本資訊。

希望對你有所幫助...^_^

參考資料:
如何識別 SQL Server 的版本
http://support.microsoft.com/kb/321185/zh-tw



Microsoft SQL Server 2005 Service Pack 2
http://www.microsoft.com/downloads/details.aspx?familyid=D07219B2-1E23-49C8-8F0C-63FA18F26D3A&displaylang=zh-tw

Microsoft SQL Server 2005 Service Pack 2 讀我檔案
http://download.microsoft.com/download/f/3/e/f3e566fc-100a-4cb4-9ab0-5893abf6b057/ReadmeSQL2005SP2.htm

Microsoft SQL Server 2000 Service Pack 4
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=8e2dfc8d-c20e-4446-99a9-b7f0213f8bc5

Service Pack 4 for Microsoft SQL Server 2000
http://download.microsoft.com/download/f/0/a/f0ae2894-f5a4-4393-8dec-ce8d69f5319c/ReadmeSql2k32sp4.htm

查詢是否有啟用 XACT_ABORT 選項


Reference





查詢是否有啟用 XACT_ABORT 選項

在設計交易程式時,可以利用 XACT_ABORT 選項,指定當 Transact-SQL 陳述式產生執行階段錯誤時,SQL Server 是否自動回復目前的交易。
依據預設值,每個連線並未啟用 XACT_ABORT。

所以有朋友詢問,要如何檢視是否有啟用 XACT_ABORT 呢?
建議:可以利用 DBCC USEROPTIONS:傳回目前連接在使用中 (已設定) 的 SET 選項。

請參考以下的範例碼:
USE master
GO

/*
DBCC USEROPTIONS
傳回目前連接在使用中 (已設定) 的 SET 選項。
*/
-- 預設僅顯示有啟用的SET 選項。未啟用的選項,並不會顯示出來。
DBCC USEROPTIONS;

-- 啟用 SET XACT_ABORT ON
/*
當 SET XACT_ABORT 是 ON 時,如果 Transact-SQL 陳述式產生執行階段錯誤,就會終止和回復整個交易。

當 SET XACT_ABORT 是 OFF 時,在某些情況下,只會回復產生錯誤的 Transact-SQL 陳述式,交易會繼續進行。
隨著錯誤嚴重性而不同,即使 SET XACT_ABORT 是 OFF,也有可能回復整個交易。OFF 是預設值。

SET XACT_ABORT 不會影響到如語法錯誤之類的編譯錯誤。
*/
SET XACT_ABORT ON

-- 多增加一筆記錄,有顯示 XACT_ABORT。
DBCC USEROPTIONS;


請參考下圖所示:檢查已經啟用 XACT_ABORT 選項。

查詢資料庫物件何時被修改


剛好有朋友問到:想要知道資料庫是否有被修改,例如:預存程序何時被修改過?
筆者的建議是:
可以利用:sys.objects ,針對在資料庫內建立的每個使用者自訂結構描述範圍的物件,各包含一個資料列。
請參考以下的範例碼:
USE pubs
GO

-- 建立預存程序
CREATE PROC uspA1
AS
SELECT '原始資料'
GO 

--
SELECT * FROM sys.objects
WHERE name='uspA1'

-- 檢視預存程序的建立日期與修改日期,都是相同
SELECT name N'物件名稱', create_date N'建立日期',modify_date N'修改日期'
FROM sys.objects
WHERE name='uspA1'

-- 修改預存程序的程式碼
ALTER PROC uspA1
AS
SELECT '原始資料'
SELECT '修改資料'
GO

-- 檢視預存程序的被修改日期,已經不同了
SELECT name N'物件名稱', create_date N'建立日期',modify_date N'修改日期'
FROM sys.objects
WHERE name='uspA1'


請參考下圖所示:檢視預存程序的被修改日期,已經不同了。

2008-09-23

台灣IT人員的工作職場:新挑戰--承認大陸學歷

台灣IT人員的工作職場:新挑戰--承認大陸學歷

請參考以下的新聞資料:
承認學歷開放招生 馬:陸生明年登台
http://news.chinatimes.com/2007Cti/2007Cti-News/2007Cti-News-Content/0,4521,110501+112008092300081,00.html

這對於台灣IT人員的工作職場,相信是一個新挑戰。

2008-09-18

SQL Server XML Schemas 的 XSD 檔案



先前有朋友詢問,在 SQL Server 中,在 XML 資料部分,常有使用到 XML Schema Namespace。
但是卻不知道其 XSD 的結構為何?


其實 SQL Server 中,有提供一個網址,就包含了各個 XML Schema Namespace 所使用的 XSD。

請參考以下的資訊:
Microsoft SQL Server XML Schemas
Links to directories containing Microsoft SQL Server XML Schemata

http://schemas.microsoft.com/sqlserver/


下圖是 Microsoft SQL Server XML Schemas 網站:


下圖是 AdventureWorks Customer Contact Information Schema 的網頁資訊:



下圖是 ContactInfo的 xsd 檔案之內容:
希望對您有所幫助...^_^

2008-09-04

資料庫快照集 (Database Snapshot) 壞了、損毀,對於原本資料庫的影響?



分享一個朋友詢問的問題:
資料庫快照集(Database Snapshot) 壞了、損毀,對於原本資料庫的影響?

參考的答案是:
資料庫快照集若是損毀,原來的資料庫仍是可以正常運作,僅資料庫快照集功能無法使用。

請參考以下的範例:

USE master

--01 檢視原始資料庫的磁碟空間
SELECT name, physical_name, state_desc, size*8.0 AS 'Size(KB)'
FROM DevAdventureWorks.sys.database_files

--02 建立第一份資料庫快照集
CREATE DATABASE DevAdventureWorks_0800
ON ( NAME = N'DevAdventureWorks',
FILENAME = N'C:\mydev\DB\DevAdventureWorks_0800.DS')
AS SNAPSHOT OF DevAdventureWorks

--03 建立第二份資料庫快照集
CREATE DATABASE DevAdventureWorks_1200
ON ( NAME = N'DevAdventureWorks',
FILENAME = N'C:\mydev\DB\DevAdventureWorks_1200.SS')
AS SNAPSHOT OF DevAdventureWorks

--04 檢視第二份資料庫快照集的磁碟空間與實體檔案大小
SELECT DB_NAME(DBID) AS '資料庫', BytesOnDisk/1024.0 AS '實體檔案大小(KB)'
FROM fn_virtualfilestats(DB_ID(N'DevAdventureWorks_1200'), NULL);
GO

--05 檢視原始資料庫的磁碟空間
SELECT name N'邏輯檔案',physical_name N'實體檔案' ,size*8.0/1024 N'檔案大小(MB)'
FROM DevAdventureWorks.sys.database_files

--06 刪除第一份資料庫快照集
DROP DATABASE DevAdventureWorks_0800

--07 檢視資料庫快照集與來源資料庫之關係,使用:source_database_id,資料庫快照集的來源資料庫識別碼
SELECT *
FROM sys.databases
ORDER BY source_database_id DESC

/*************************************************************************************************/
-- Undeleting rows

-- 檢視原始資料庫的資料
SELECT COUNT(*)
FROM DevAdventureWorks.Production.WorkOrderRouting

--
SELECT *
FROM DevAdventureWorks.Production.WorkOrderRouting

-- 發生意外,刪除了全部資料 Accidental
TRUNCATE TABLE DevAdventureWorks.Production.WorkOrderRouting

-- 檢視原始資料庫的資料
SELECT COUNT(*)
FROM DevAdventureWorks.Production.WorkOrderRouting

-- 檢視資料庫快照集,資料表內的資料
SELECT *
FROM DevAdventureWorks_1200.Production.WorkOrderRouting

-- 復原因故被刪除的資料
INSERT INTO DevAdventureWorks.Production.WorkOrderRouting
SELECT *
FROM DevAdventureWorks_1200.Production.WorkOrderRouting

-- 檢視已經復原的資料,Congratulation
SELECT COUNT(*)
FROM DevAdventureWorks.Production.WorkOrderRouting

--
SELECT *
FROM DevAdventureWorks.Production.WorkOrderRouting

/*************************************************************************************************/
--01 停止SQL Server後,請破壞DevAdventureWorks_1200的檔案。

--02 重新啟動SQL Server。

--03 檢視資料庫內的資料,沒有任何影響
SELECT *
FROM DevAdventureWorks.Production.WorkOrderRouting
WHERE WorkOrderID=5281

--04 修改資料,也不受影響
DELETE DevAdventureWorks.Production.WorkOrderRouting
WHERE WorkOrderID=5281

--05 檢視被破壞的資料庫快照集:DevAdventureWorks_1200,無法檢視資料
SELECT *
FROM DevAdventureWorks_1200.Production.WorkOrderRouting

/*
訊息 945,層級 14,狀態 2,行 1
檔案無法存取、記憶體或磁碟空間不足,因此無法開啟資料庫 'DevAdventureWorks_1200'。
詳細資訊請參閱 SQL Server 錯誤記錄檔。
*/

-- 刪除資料庫快照集
DROP DATABASE DevAdventureWorks_1200



請參考下圖:01_SQLServer記錄檔內的資訊



請參考下圖:02_物件總管_無法展開_無法檢視其資料庫物件



請參考下圖:03_檢視被破壞的資料庫快照集的檔案



何謂資料庫快照集?
在 SQL Server 2005 Enterprise Edition 和更新版本中,才能使用資料庫快照集。所有復原模式都支援資料庫快照集。

資料庫快照集是資料庫 (來源資料庫) 的唯讀、靜態檢視。來源資料庫中可以存在多個快照集,而且永遠位於和資料庫相同的伺服器執行個體。每個資料庫快照集會與快照集建立時的來源資料庫維持交易的一致性。快照集會一直保存,直到資料庫擁有者明確卸除為止。

與使用者資料庫的預設行為不同,資料庫快照集建立時,ALLOW_SNAPSHOT_ISOLATION 資料庫選項是設為 ON (不管主要資料庫或模型系統資料庫上這個選項的設定值如何)。

快照集可以用於報表用途。此外,在來源資料庫發生使用者錯誤的情況下,您可以將來源資料庫還原為它在建立快照集時所處於的狀態。您只會失去建立快照集之後的資料庫更新資料。


參考文件:
資料庫快照集

http://technet.microsoft.com/zh-tw/library/ms175158.aspx