2009-02-27

使用「資料庫發行精靈」:Visual Studio 2008、SQL Server 2008、SQL Database Publishing Wizard

目前可分為兩個版本:
1. 額外下載安裝版本:SQL Server 資料庫發行精靈
Microsoft SQL Server Database Publishing Wizard 1.1
可連線的版本:SQL Server 2000、2005

安裝環境部分:
需先安裝「SQL Server 2005 管理物件集合」
SQL Server 2005 Feature Pack - 2006 年 4 月
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=df0ba5aa-b4bd-4705-aa0a-b477ba72a9cb

2. Visual Studio 2008 內建的「資料庫發行精靈」
請升級到 Visual Studio 2008 SP1 版本,即可連線 SQL Server 2008。

請參考下圖1所示:

圖1:使用Visual Studio 2008連線SQL Server 2008的工具版本



功能說明:
可將資料庫內的各項物件產生成單一的 Transact-SQL 指令碼檔案(.sql 檔案),方便讓你重新將此資料庫進行重建。產生的物件包含有:重新建立資料庫結構描述 (資料表、檢視、預存程序、觸發程序 (Trigger)、全文檢索目錄、角色、規則等等) 的命令,而且還可以包含資料表上的資料列。

若你有使用 MySQL Administrator 工具對 MySQL 資料庫執行備份的經驗,就可以知道「資料庫發行精靈」的這項功能於其十分類似。

使用「資料庫發行精靈」,可以使用在以下的幾個情境:
1. 將指定資料表,「一次完整」佈署新到目的地(例如:資料庫)
雖然現行有很多方法,但都不能「一次完整」的將資料表上的「物件」與「資料」,佈署新目的地。

2. 產生向下相容的指令碼
目前「資料庫發行精靈」支援:SQL Server 2000、2005、2008 版本,但不支援 Compact Edition。

注意事項:
大部分的資料庫物件指令碼都會依照原樣來撰寫。
但也有一些例外。來源資料庫中,任何未以 Windows 登入為基礎的非系統使用者帳戶將會撰寫為角色實體的指令碼。
此外,您無法針對任何加密的物件撰寫其指令碼。如果來源資料庫包含加密物件,則精靈不會建立指令碼。



實作練習:使用 Visual Studio 2008 SP1 的「資料庫發行精靈」連線 SQL Server 2008

任務1:使用「伺服器總管」
步驟01. 執行 Visual Studio 2008 SP1。
步驟02. 點選上方的工具選單:「檢視」、「伺服器總管」。請參考圖2所示:

02_伺服器總管

圖2:伺服器總管

任務2:設定連接到 SQL Server 2008
步驟01. 在「伺服器總管」,點選「資料連接」節點,滑鼠右鍵,選擇「加入資料連接」。
步驟02. 在「加入連接」視窗,輸入以下的參數,請參考圖3、4、5、所示:
在「資料來源」區域,點選「變更」。
在「變更資料來源」視窗,在「資料來源」方塊,選擇:「Microsoft SQL Server」,點選「確定」。
在「加入連接」視窗,在「資料來源」方塊,確認選取的是:Microsoft SQL Server (SqlClient)。
在「伺服器名稱」方塊,選取指定的伺服器名稱,例如:localhost,連線到本機伺服器上。
在「連接至資料庫」區域,在「選取或輸入資料庫名稱」方塊,選取指定的資料庫名稱,例如:選取:Northwind。點選「確定」。

03_「變更資料來源」視窗

圖3:設定「變更資料來源」視窗

04_「加入連接」視窗

圖4:設定「加入連接」視窗

05_設定完成後的「伺服器總管」之畫面

圖5:設定完成後的「伺服器總管」之畫面

任務3:執行產生指令碼作業
步驟01. 選取先前新增加的連接,滑鼠右鍵,選取「發行至提供者」。請參考圖6所示:

06_選取「發行至提供者」

圖6:選取「發行至提供者」

步驟02. 在「資料庫發行精靈」視窗,點選「下一步」。請參考圖7所示:

07_在「資料庫發行精靈」視窗

圖7:在「資料庫發行精靈」視窗

步驟03. 在「選取資料庫」頁面,選取指定的資料庫,例如:選取:Northwind。點選「下一步」。
若需要編寫整個資料庫的指令碼,請勾選「為選取資料庫中的所有物件編寫指令碼」。
在本次實作練習中,將採選取指定的資料表,故不勾選此選項。請參考圖8所示:

08_在「選取資料庫」頁面

圖8:在「選取資料庫」頁面

步驟04. 在「選擇物件類型」頁面,勾選「資料表」,點選「下一步」。請參考圖9所示:

09_在「選擇物件類型」頁面

圖9:在「選擇物件類型」頁面

步驟05. 在「選擇資料表」頁面,勾選「Orders」、「Products」,點選「下一步」。請參考圖10所示:

10_在「選擇資料表」頁面

圖10:在「選擇資料表」頁面

步驟06. 在「選取輸出位置」頁面,點選「編寫指令碼至檔案」,在「檔案名稱」方塊,輸入指定的路徑與檔案名稱,例如:C:\Northwind.sql,點選「下一步」。請參考圖11所示:

11_在「選取輸出位置」頁面

圖11:在「選取輸出位置」頁面

步驟07. 在「選取發行選項」頁面,輸入以下的選項,請參考圖12所示:
在「目標資料庫指令碼」方塊,選擇:SQL Server 2008,可選擇產生 SQL Server 2000、2005、2008 的版本。
在「在指令碼中卸除現有物件」方塊,選擇:True,將可產生先卸除目標物件,在建立此物件的指令碼。
在「要發行的資料類型」方塊,選擇:「結構描述和資料」。此處的選項有:「僅限資料」、「僅限結構描述」、「結構描述和資料」。結構描述指的是資料庫中的物件定義,而資料指的是資料庫中資料表的資料列。
在「結構描述限定」方塊,選擇:True,可選擇是否需要產生不以結構描述(schema)名稱限定物件名稱的指令碼。

12_在「選取發行選項」頁面

圖12:在「選取發行選項」頁面

步驟07. 點選「下一步。
步驟08. 在「檢閱摘要」頁面,點選「完成」。請參考圖13所示:

13_在「檢閱摘要」頁面

圖13:在「檢閱摘要」頁面

任務4:檢視產生的指令碼作業
步驟01. 開啟其先所產生的指令碼:C:\Northwind.sql。
步驟02. 所產生的指令碼具備幾個特性,請參考圖14所示:
先刪除目標物件,在建立目標物件。
資料表上的相關物件也會一併產生,例如:主索引鍵、外部索引鍵、CHECK限制條件、索引等等。
資料值部分,將會產生 INSERT 陳述式來進行新增。

14_檢視產生的指令碼

圖14:檢視產生的指令碼



參考網址:
發行 SQL 資料庫
http://msdn.microsoft.com/zh-tw/library/bb907585.aspx

Connecting to Microsoft SQL Server 2008 from Microsoft Visual Studio 2005 and 2008
http://msdn.microsoft.com/en-us/library/cc440724.aspx

Microsoft SQL Server Database Publishing Wizard 1.1
http://www.microsoft.com/downloads/details.aspx?familyid=56E5B1C5-BF17-42E0-A410-371A838E570A&displaylang=en
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=56e5b1c5-bf17-42e0-a410-371a838e570a

2009-02-19

64 位元系統使用經驗分享,以 ThinkPad T61、Windows Server 2008 Enterprise x64 版本為例



筆者使用 64 位元作業系統已經有一段時間了,分享一下使用經驗給各位參考,也歡迎各位提供建議與指教,謝謝。

使用 64 位元系統的幾個想法:

1. 善用記憶體資源。不受限於 32 位元的 4GB 之瓶頸。
2. 可以使用 Hyper-V。
3. 不只是作業系統使用 64 位元,期望使用的應用程式也是 64 位元。
若在 64 位元系統上,雖然可以執行 32 位元的應用程式,但卻係利用 Windows 32-bit on Windows 64-bit (WoW64) 所模擬執行:
WOW64 之最佳作法
http://www.microsoft.com/taiwan/whdc/system/platform/64bit/WoW64_bestprac.mspx
64 位元應用程式
http://msdn.microsoft.com/zh-tw/library/ms241064.aspx

所以,能夠使用純 64 位元的應用程式,會是比在 WOW64 上執行 32 位元的應用程式來的有效率。



若以 x64 作業系統為例:
安裝的 64 位元的應用程式,預設是存放在資料夾:C:\Program Files。
所安裝的 32 位元的應用程式,預設是存放在資料夾:C:\Program Files (x86)。

請參考圖1所示:



圖1:在檔案總管,檢視 32 與 64 位元的應用程式之存放路徑

在「Windows 工作管理員」的「處理程序」頁面部分,可以識別應用程式是否為 32 或 64 位元:
在應用程式名稱之後有標示: *32 部分,就是為 32 位元的應用程式。沒有標示的,則為 64 位元的應用程式。
Micorosft 發行的客戶端應用程式,多半都是 32 位元版本,像是:Office 系列。

請參考圖2所示:



圖2:在「Windows 工作管理員」的「處理程序」頁面,檢視 32 或 64 位元的應用程式



使用 Notebook 的硬體配備如下:

型號:Lenovo ThinkPad T61
CPU:Intel(R) Core(TM)2 Extreme CPU X7900 @ 2.80GHz
Memory:Kingston DDR2 SDRAM 2048 MB * 2 =Dual Channel 4 GB
Hard Disk:
Hitachi HTS722020K9SA00 (200 GB, 7200 RPM)
WDC WD3200BEVT-22ZCT0 (298 GB, 5400 RPM)

作業系統:Microsoft Windows Server 2008 Enterprise x64 版本,中文版

已安裝的軟體,可分成 64 與 32 bit(位元):

64 bit(位元)版本:

1. 取代「記事本( Notepad)」
EmEditor Text Editor Version 8.02 64-bit,有中文版
http://www.emeditor.com/

2. 壓縮軟體
7-Zip 4.65 x64,有中文版
http://www.7-zip.org/

3. 取代「檔案總管」
SpeedCommander 12.42 x64 Edition
http://www.speedproject.de/enu/index.html

本來是使用 Total Commander ,但是好像沒有 64 位版本。
http://www.ghisler.com/

4. 輸入法軟體
Yahoo!奇摩輸入法 1.0 正式版 64 bit
http://tw.download.yahoo.com/keykey/

雖然奇摩輸入法是 64 位元,但其常駐的程式卻是 32 位元。

本來是使用 自然輸入法 ,但是好像沒有 64 位版本。
http://www.iq-t.com/MAIN/main.asp

5. 資料庫軟體
Microsoft SQL Server 2008 Enterprise x64 版本,有中文版
http://www.microsoft.com/taiwan/sql/default.mspx
http://www.microsoft.com/sqlserver/2008/en/us/default.aspx

SQL Server Compact 3.5 SP1 64 位元,有中文版
SQL Server Compact 3.5 Service Pack 1 和適用於 Windows 桌上型電腦的 Synchronization Services for ADO.NET 1.0 版 Service Pack 1
http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=dc614aee-7e1c-4881-9c32-3a6ce53384d9

6. 防毒軟體
Forefront Client Security x64 版本,有中文版
http://technet.microsoft.com/zh-tw/forefront/clientsecurity/default.aspx
http://www.microsoft.com/forefront/clientsecurity/en/us/default.aspx


7. PDA 手機同步:
Windows Mobile Device Center 6.1
Windows Mobile 裝置中心 6.1 Windows Vista 版 (64 位元)

http://www.microsoft.com/downloads/details.aspx?displaylang=zh-tw&FamilyID=4f68eb56-7825-43b2-ac89-2030ed98ed95



32 bit(位元)版本:

1. 閱讀 PDF
還是使用 Adobe Reader 8

雖然 PDF-XChange 有提供x64 版本,但在中文使用上,好像怪怪的。
http://www.docu-track.com/

2. 瀏覽器
Internet Explorer
雖然有 Internet Explorer (64 位元) ,但有部分可功能沒辦法使用,所以只好用 32 位元版本的瀏覽器。

Firefox 3
http://www.moztw.org/

3. 光碟燒錄軟體
Nero 8 可以安裝使用,但是 Nero 9 卻無法安裝在 Windows Server 2008 Enterprise x64 版本的系統上。
http://www.nero.com/

4. DVD 複製軟體
DVDFab 5
http://www.dvdfab.com/zh/index.htm

... 還有很多軟體,例如:看圖、聽音樂、抓圖、燒錄DVD、網路銀行的元件、證券下單等等,看來都是在 32 bit(位元)版本上。



目前遇到問題:

1. 舊型印表機,會遇到驅動程式相容性的問題。

2. 播放影片、看照片時,不知為何特別遲緩,會先延遲數十秒,CPU使用量突然滿載後,才能執行。

3. 64 位元的應用程式仍不多,中文化的版本更是稀少,看來多半都要用 32 位元的應用程式來先頂著用。



相關資料的參考網址:
(1)ThinkPad T61 安裝 64 位元作業系統
Installing Windows Server 2008 EE on a Lenovo ThinkPad T61p
http://blogs.technet.com/keithcombs/archive/2008/02/01/installing-windows-server-2008-ee-on-a-lenovo-thinkpad-t61p.aspx

10 things you should know about 64-bit Windows Server
http://blogs.techrepublic.com.com/10things/?p=293

(2) 查詢有那些 64 位元的軟體可以使用
64bit and x64
http://www.start64.com/index.php

2009-02-18

新手學 SQL Server 2008 「中央管理伺服器(Central Management Servers,CMS)」(2):技術文章



利用:「中央管理伺服器(Central Management Servers,CMS)」與「本機伺服器群組(Local Server Groups)」可以讓你輕鬆管理多台伺服器,能執行以下的功能:

「多伺服器查詢(Multiserver Queries)」、搭配使用「物件總管」、「評估原則」、匯入原則等等。
在本期文章中,我們將討論帶領各位實作練習,初探:「中央管理伺服器」。

...
實作其各項功能,包含:執行「多伺服器查詢」、自訂「多伺服器查詢」回傳的結果集、搭配使用物件總管、移動伺服器群組與伺服器等等主題。

這項SQL Server 2008新功能對於在多台伺服器的管理上,十分方便與有效率,建議各位善加運用在企業環境內。

完整的文章,請參考:第84期之三《新手學中央管理伺服器(2)》




更多相關的技術文章,請參考:
DB World 資料庫專家電子雜誌
http://www.dbworld.com.tw/





新手學 SQL Server 2008 「中央管理伺服器(Central Management Servers,CMS)」(1):技術文章
http://sharedderrick.blogspot.com/2009/02/sql-server-2008-central-management.html

2009-02-17

SSMS管理工具之基本操作:「重設視窗配置」



若你已經將SSMS(SQL Server Management Studio)管理工具之視窗拖曳的一團亂,這時即便是關閉再重新啟動SSMS管理工具,也是不會恢復原狀。


這是因為SSMS管理工具會自動記憶前次關閉時的視窗位置。


所以若需要復原回初始化的位置時,請參考以下的步驟:


點選SSMS工具上方的功能選單:「視窗」\「重設視窗配置」。


就可以復原工具視窗預設的配置位置,請參考圖1所示:




上述的作法,一併可以應用到 Visual Studio 開發工具上。

認識 SQL Server Database 資料庫選項:AUTO_CLOSE(自動關閉)



資料庫 AUTO_CLOSE 選項
選項值說明
ON(True)當設定為:ON 時,資料庫會完全關閉,並在最後一個使用者結束之後釋放其資源。當使用者試圖重新使用資料庫時,會自動重新開啟資料庫。例如,藉由發出 USE database_name 陳述式。
這個選項可能會造成經常存取之資料庫的效能降低,因為在每一個連接之後都會增加開啟和關閉資料庫的負擔。
而且在每一個連接之後,啟用此選項也會排清程序快取。

對於桌面資料庫而言,啟用此選項非常有用,因為它可讓您將資料庫檔案當做一般檔案來管理。您可以移動它們、複製它們來建立備份,甚至可以用電子郵件將它們傳給其他使用者。
在舊版 SQL Server 中,AUTO_CLOSE 是同步處理序,當有重複建立和中斷與 Database Engine 之連接的應用程式存取資料庫時,該處理序可能會降低效能。從 SQL Server 2005 開始,AUTO_CLOSE 處理序是非同步的;重複開啟和關閉資料庫不再降低效能。
當啟用此選項時,sys.databases 目錄檢視中的某些資料行及 DATABASEPROPERTYEX 函數會傳回 NULL,因為資料庫無法擷取資料。若要解決這個問題,請執行 USE 陳述式來開啟資料庫。
此啟用使選項也會造成,當資料庫關閉的作業執行時,會自動清除 SQL Server 執行個體的計畫快取。
若清除計畫快取會導致重新編譯所有後續執行計畫,而且可能會導致查詢效能突然暫時下降。在 SQL Server 2005 Service Pack 2 中,針對每次清除計畫快取的快取存放區,SQL Server 錯誤記錄檔會包含下列參考訊息:「由於某些資料庫維護或重新設定作業,SQL Server 的 '%s' 快取存放區 (計畫快取的一部分) 發生 %d 次快取存放區排清。」只要快取發生排清,這個訊息就會每五分鐘記錄一次。
OFF(False)當設定為:OFF 時,則在最後一個使用者結束之後資料庫仍為開啟。
資料庫鏡像需要 AUTO_CLOSE OFF。
預設值:
不論作業系統為何,當使用 SQL Server 2000 Desktop Engine 或 SQL Server Express 時,這個選項對所有資料庫是設為:ON(True);其他版本的 SQL Server 則是設為:OFF(False)。

最佳作法建議
如果經常存取資料庫,請將此資料庫的 AUTO_CLOSE 選項設定為 OFF。



啟用資料庫選項:AUTO_CLOSE的方式如下:
任務1:建立資料庫
步驟01. 執行以下範例程式碼:
USE [master]
GO
IF  EXISTS (SELECT name FROM sys.databases WHERE name = N'DB01')
DROP DATABASE [DB01]
GO
CREATE DATABASE [DB01] ON  PRIMARY
( NAME = N'DB01', FILENAME = N'C:\DB01.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB )
LOG ON
( NAME = N'DB01_log', FILENAME = N'C:\DB01_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)
GO

任務2:啟用資料庫選項:AUTO_CLOSE
步驟01. 執行以下範例程式碼:
USE [master]
GO
-- 設定資料庫DB01的AUTO_CLOSE屬性為ON
ALTER DATABASE [DB01]
SET AUTO_CLOSE ON WITH NO_WAIT
GO

請參考圖1所示:



圖1:設定資料庫選項:AUTO_CLOSE

或是使用SSMS(SQL Server Management Studio)管理工具
步驟01. 執行SSMS管理工具,在「物件總管」,展開「資料庫」,點選指定的資料庫,滑鼠右鍵,選取:「屬性」。
步驟02. 在「資料庫屬性」視窗,輸入以下的選項:
在左邊「選取頁面」窗格,點選「選項」。
在右邊窗格,在「其他選項」區域,在「自動」區域下,在「自動關閉」方塊部分,下拉選取「True」。
步驟03. 點選「關閉」,完成設定。

任務3:測試資料庫選項:AUTO_CLOSE
步驟01. 執行以下範例程式碼數次後:
USE DB01
GO
USE master
GO
USE DB01
GO
USE tempdb
GO
USE DB01
GO
USE master
GO

任務4. 檢視「SQL Server 記錄檔」
步驟01. 執行SSMS管理工具,在「物件總管」,展開「管理」\「SQL Server 記錄檔」。
步驟02. 滑鼠雙擊,開啟最新的記錄檔。
步驟03. 在「記錄檔檢視器」,可以看到有數筆啟動此資料庫的訊息:
Starting up database 'DB01'.


請參考圖2所示:


圖2:訊息:啟動資料庫Starting up database

任務5. 直接複製此資料庫的資料檔案
步驟01. 使用檔案總管,在 C: 碟根目錄下,建立資料夾 C:\ArchiveDB。
步驟02. 使用檔案總管,在 C: 碟根目錄下,選取此資料庫的檔案:DB01.mdf 與 DB01_log.ldf。
步驟03. 複製此兩個檔案到 C:\ArchiveDB  資料夾內。

由上,將資料庫選項:AUTO_CLOSE設定為:ON,在確認關閉後,就可以執行複製檔案。也類似於將此資料庫設定為「離線(OFFLINE)」。

提醒您:
若資料庫選項:AUTO_CLOSE是設定為OFF(false)時,資料庫引擎將鎖定資料庫檔案,也無法複製或是刪除。

請參考圖3所示:


圖3:檔案已經開啟,無法複製或是刪除

2009-02-09

新手學 SQL Server 2008 「中央管理伺服器(Central Management Servers,CMS)」(1):技術文章



一般而言,資料庫管理師(DBA)在管理SQL Server時,所面對的不是單台的伺服器,而是面對一大群的機海。

以此為例,在過往,若是需要將Transact-SQL程式佈署到企業內的資料庫伺服器時,可能需要採取土法煉鋼的方式:一台一台地執行SSMS來進行部署;或是將撰寫好的程式,利用SQLCMD命令提示列工具來進行部署等等方式。


但是這些作法都十分不便,並且需要額外撰寫輔助的程式。

在SQL Server 2008上,我們可以利用:「中央管理伺服器(Central Management Servers,CMS)」與「本機伺服器群組(Local Server Groups)」,更輕鬆地管理這群機海。


完整的文章,請參考:





第84期之二《新手學中央管理伺服器(1)》

更多相關的技術文章,請參考:
DB World 資料庫專家電子雜誌

http://www.dbworld.com.tw/