2009-10-29

附加(attach)包含 FILESTREAM 的資料庫,以 AdventureWorks2008 範例資料庫為例


在 AdventureWorks2008 範例資料庫內包含了 FILESTREAM 資料類型。
若使用 SSMS 管理工具,直接採取卸離(Detach),再附加(attach) 資料庫的作法,可能在執行附加(attach)作業時,遇到以下的錯誤訊息:

訊息 5120,層級 16,狀態 105,行 1
無法開啟實體檔案 "C:\SQLDB\AdventureWorks2008_2.Documents"。作業系統錯誤 2: "2(系統找不到指定的檔案。)"。
訊息 5105,層級 16,狀態 14,行 1
發生檔案啟動錯誤。實體檔案名稱 'C:\SQLDB\AdventureWorks2008_2.Documents' 可能不正確。請診斷並校正其他錯誤,然後重試一次作業。
訊息 1813,層級 16,狀態 2,行 1
無法開啟新資料庫 'AdventureWorks2008'。CREATE DATABASE 已經中止。







這可能是因為,目前 SSMS 管理工具尚未提供附加包含 FILESTREAM 的資料庫的功能,但您可以利用以下的範例碼來執行附加(attach)作業:

/*
1. 在  FILEGROUP [DocumentFileStreamGroup] CONTAINS FILESTREAM  DEFAULT 這句話的意思是指:
設定用來存放 FILESTREAM 的預設檔案群組:[DocumentFileStreamGroup]

2. ( NAME = N'FileStreamDocuments', FILENAME = N'C:\SQLDB\AdventureWorks2008_2.Documents' ), 這句話是指:
NAME :是設定包含 FILESTREAM 的邏輯檔案名稱。
FILENAME :設定包含 FILESTREAM 的實體資料夾之路徑。
--
CONTAINS FILESTREAM
指定檔案群組會將 FILESTREAM 二進位大型物件 (BLOB) 儲存在檔案系統中。

DEFAULT
指定具名的檔案群組必須是資料庫中的預設檔案群組。
--
在本範例中,是將資料庫的實體檔案存放在:C:\SQLDB 資料夾。
包含 FILESTREAM 的實體資料夾之路徑,則是為於:C:\SQLDB\AdventureWorks2008_2.Documents 資料夾。
*/
USE [master]
GO
CREATE DATABASE [AdventureWorks2008] ON
( FILENAME = N'C:\SQLDB\AdventureWorks2008.mdf' ),
FILEGROUP [DocumentFileStreamGroup] CONTAINS FILESTREAM  DEFAULT
( NAME = N'FileStreamDocuments', FILENAME = N'C:\SQLDB\AdventureWorks2008_2.Documents' ),
( FILENAME = N'C:\SQLDB\AdventureWorks2008_1.ldf' )
FOR ATTACH
GO


參考資料:
啟用 Enable FILESTREAM ,下載安裝 AdventureWorks2008 範例資料庫(Installing Sample Databases)
http://sharedderrick.blogspot.com/2009/06/enable-filestream-adventureworks2008.html

SQL Server 2008 線上叢書 (2009 年 7 月) CREATE DATABASE (Transact-SQL)
http://technet.microsoft.com/zh-tw/library/ms176061.aspx

2009-10-28

新手學 SQL Server 2008 「以原則為基礎的管理(Policy-Based Management,PBM)」(4):技術文章


在前一篇:「新手學以原則為基礎的管理(3)」文章中,我們討論了手動評估原則、檢視執行評估作業後的歷史紀錄、增加違反原則的錯誤訊息之可讀性、利用「類別目錄」分類管理各個原則主題等等。

在本期文章中,我們將繼續介紹相關主題:如何檢視原則的健全狀態、匯出與匯入原則、匯入與使用「SQL Server最佳作法」以及排程定期評估指定的原則等主題。

完整的文章,請參考:第92期之二《新手學以原則為基礎的管理(4)》





相關參考資料:
新手學 SQL Server 2008 「以原則為基礎的管理(Policy-Based Management,PBM)」(1):技術文章
http://sharedderrick.blogspot.com/2009/03/sql-server-2008-policy-based.html

新手學 SQL Server 2008 「以原則為基礎的管理(Policy-Based Management,PBM)」(2):技術文章
http://sharedderrick.blogspot.com/2009/03/sql-server-2008-policy-based_18.htm

新手學 SQL Server 2008 「以原則為基礎的管理(Policy-Based Management,PBM)」(3):技術文章
http://sharedderrick.blogspot.com/2009/06/sql-server-2008-policy-based.html

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


2009-10-26

在 SQL Server 2008 Agent x64 版本的作業中,執行 32 位元或 64 位元版本的封裝


在 SQL Server 2008 x64 版本上,利用 SQL Server Agent 的作業來執行封裝時,需要注意以下的事情:
當您使用 [SQL Server Integration Services 封裝] 的作業步驟類型來設定 SQL Server Agent 作業時,該作業會叫用 dtexec 公用程式。
不過,該作業所叫用的 dtexec 公用程式版本,是依 64 位元電腦上已安裝且正在執行的 SQL Server 和 SQL Server Agent 版本而定:


(1)已在電腦上安裝且正在執行 SQL Server 和 SQL Server Agent 的 64 位元版本。
然後,[SQL Server Integration Services 封裝] 的作業步驟類型會叫用 dtexec 公用程式的 64 位元版本,而且該封裝會以 64 位元模式執行。
附註:
若要從 64 位元版本的 SQL Server Agent 中以 32 位元模式執行封裝,請在 [新增作業步驟] 對話方塊的 [執行選項] 索引標籤上選取 [使用 32 位元執行階段]。

請參考下圖所示




(2)已在電腦上安裝且正在執行 SQL Server 和 SQL Server Agent 的 32 位元版本。
然後,[SQL Server Integration Services 封裝] 的作業步驟類型會叫用 dtexec 公用程式的 32 位元版本,而且該封裝會以 32 位元模式執行。

參考資料:
Integration Services 的 64 位元考量

http://msdn.microsoft.com/zh-tw/library/ms141766.aspx

2009-10-21

設定 SSMS 2008 管理工具,可以使用 DTS 設計師



在 SQL Server 2008 的 SQL Server Management Studio(SSMS) 管理工具上,若要編修與執行 SQL Server 2000 版本的 DTS 封裝,需要執行以下的工作:
一、下載與安裝功能套件。
二、設定 SSMS 管理工具可以使用 DTS 設計師




一、下載與安裝功能套件

(1) Microsoft SQL Server 2005 回溯相容性元件
SQL Server 回溯相容性封裝包括最新版的 Data Transformation Services 2000 執行階段 (DTS)、SQL Distributed Management Objects (SQL-DMO)、決策支援物件 (DSO) 及 SQL 虛擬裝置介面 (SQLVDI)。
這些版本已更新為可與 SQL Server 2005 及 SQL Server 2008 相容,且包括所有利用 SQL Server 2000 Service Pack 4 (SP4) 和 SQL Server 2005 SP2 來傳送的修正程式。

下載網址:
Microsoft SQL Server 2008 Feature Pack (2009 年 4 月)
http://www.microsoft.com/downloads/details.aspx?FamilyID=b33d2c78-1059-4ce2-b80d-2343c099bcb4&DisplayLang=zh-tw

(2) Microsoft SQL Server 2000 DTS 設計師元件
Microsoft SQL Server 2000 Data Transformation Services (DTS) 封裝設計師是 SQL Server 2005 伺服器的開發人員和管理員用來編輯及維護現有 DTS 封裝的設計工具,直到這些現有的 DTS 封裝升級或採用 SQL Server 2005 Integration Services 封裝格式重新建立為止。

安裝這個下載項目之後,SQL Server 2005 使用者就可以從 SQL Server 2005 Management Studio 中的物件總管,或從 Business Intelligence Development Studio 中的「執行 DTS 2000 封裝」工作編輯器,繼續編輯及維護現有的 DTS 封裝,而不必重新安裝 SQL Server 2000 工具。

以前是從 SQL Server 2000 Enterprise Manager 中的 Data Transformation Services 節點存取這個下載項目中的 DTS 封裝設計師。

注意:
SQL Server 2000 Data Transformation Services (DTS) 是 32 位元版本才有的功能。
DTS 在 WOW 的 x64 平台中受到支援,Itanium 平台則不支援。

下載網址:
Microsoft SQL Server 2005 Feature Pack - 2008 年 12 月 -- SQL Server 2005 SP3
http://www.microsoft.com/downloads/details.aspx?FamilyID=536fd7d5-013f-49bc-9fc7-77dede4bb075&DisplayLang=zh-tw

若是沒有安裝「SQL Server 2000 DTS 設計師元件」,則在 SSMS 管理工具上執行「開啟封裝檔案」時,將會遭遇到以下的錯誤訊息:
需要有 SQL Server 2000 DTS 設計師元件,才能編輯 DTS 封裝。
請安裝特殊的 Web 下載項目: "SQL Server 2000 DTS 設計師元件",以使用此功能。 (Microsoft.SqlServer.DtsObjectExplorerUI)






二、設定 SSMS 管理工具可以使用 DTS 設計師

1.
將位於 %ProgramFiles%\Microsoft SQL Server\80\Tools\Binn 資料夾內的三個檔案:
SEMSFC.DLL、SQLGUI.DLL 和 SQLSVC.DLL
複製到以下的資料夾內:
%ProgramFiles%\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE

2.
將位於 %ProgramFiles%\Microsoft SQL Server\80\Tools\Binn\Resources 資料夾內的三個檔案:
SEMSFC.RLL、SQLGUI.DLL 和 SQLSVC.DLL
複製到以下的資料夾內:
%ProgramFiles%\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Resources\%lang_id%

例如,若為 U.S. English,lang_id 子資料夾就是 "1033"。正體中文的子資料夾是 "1028"

在 64 位元電腦上,請改以 %ProgramFiles(x86)% 代替 %ProgramFiles%。



由上,已經完成設定,可以在 SSMS 2008 管理工具內使用 DTS 設計師。





若要設定 Business Intelligence Development Studio 中可以使用 DTS 設計師,請參考線上說明文件:如何:安裝 Data Transformation Services 封裝的支援。

32 位元與 64 位元的 SSIS 執行程式之路徑:
32 位元版本的 SSIS
C:\Program Files (x86)\Microsoft SQL Server\100\DTS

64 位元版本的 SSIS
C:\Program Files\Microsoft SQL Server\100\DTS



SQL Server 2000 的 DTS 封裝,請先升級到 SP3 以上的版本,才能正確存取。



參考資料:
如何:安裝 Data Transformation Services 封裝的支援
http://msdn.microsoft.com/zh-tw/library/ms143755.aspx

如何:確定 Data Transformation Services 封裝的支援
http://msdn.microsoft.com/zh-tw/library/ms143755%28SQL.90%29.aspx

SQL Server 2000 的 DTS 該如何正確在 SQL Server 2005 上正常執行?
http://social.msdn.microsoft.com/Forums/zh-TW/240/thread/40a4c6ec-20a9-44b7-adff-ab4c7e4cf615

2009-10-08

64 位元版本的 SSIS 2008,無法對「指令碼工作(Script Task)」執行「偵錯(Debug)」功能;設定 Run64BitRuntime 屬性


使用 64位元版本的 SSIS 2008,的確是有其在記憶體等使用上的優勢。
但卻有數項問題,例如:資料庫連線驅動程式(Driver)支援的問題,有許多異質平台的資料庫系統仍只有 32 位元驅動程式。

而在使用「指令碼工作(Script Task)」上也會碰到以下的問題:
64 位元版本的 SSIS 2008,無法對「指令碼工作(Script Task)」執行「偵錯(Debug)」功能。


會發生這樣的問題,是因為負責執行偵錯功能的工具:Visual Studio Tools for Applications (VSTA),目前僅有 32 位元版本。

Visual Studio 開發工具的團隊要加油,作業系統都已經是 64 位元版本,但是開發工具仍停留在 32 位元版本。

請參考下圖所示:




可能的解決方案:
設定專案的屬性:Run64BitRuntime 為 False。
請參考下圖所示:







在 64 位元電腦上執行 Integration Services 封裝


有時候,您可能想要在 64 位元的電腦上以 32 位元模式執行封裝。
以 32 位元模式執行封裝的可能原因如下:

•執行 SQL Server 2000 DTS 封裝。

•使用無法用於 64 位元版本的 Managed .NET Framework Data Provider 或原生 OLE DB 提供者。

•使用指令碼工作或指令碼元件,參考不提供或未安裝 64 位元版本的其他組件或 COM 元件。


在 SSIS 設計師中的設定 32 位元或 64 位元封裝執行:
在 Integration Services 封裝的 [專案屬性] 中,您可以透過在 [偵錯] 頁面中設定 Run64BitRuntime 屬性的值,以選取 32 位元或 64 位元的執行模式。

依預設,此屬性的值為 True。
如果未安裝 64 位元版本的 Integration Services 執行階段,則會忽略此設定。

附註:
Run64BitRuntime 專案屬性只會在設計階段套用。


更新日期:2011/05/10

使用環境:
1. Windows Server 2008 R2 x64
2. SQL Server 2008 R2 x64
3. Office 2010 x64


在「執行結果」視窗,顯示的錯誤訊息如下:
警告: 在以 Integration Services 執行階段的 64 位元版本執行時,無法偵錯指令碼工作。

Warning: Cannot debug script tasks when running under the 64 bit version of the Integration Services runtime.
--P01

--P02



設定「Run64BitRuntime」屬性為:False。

--P03


--P04


經過上述的調整,應該就可以執行指令碼的偵錯作業:

--P05




參考資料:
Integration Services 的 64 位元考量
http://msdn.microsoft.com/zh-tw/library/ms141766.aspx


並感謝熊爺的協助。

2009-10-01

新手學 SQL Server 2008「記錄傳送(Log Shipping)」(2):技術文章



在前一篇文章中:第90期之一《新手學SQL Server 2008「記錄傳送(Log Shipping)」(1)》,我們討論了「記錄傳送」的整體架構,包含有:認識「記錄傳送」、認識「主要伺服器」、「次要伺服器」、「監視伺服器」、設計「記錄傳送」的拓撲、「記錄傳送」的作業方式、所需的權限、注意事項等等。

在本期文章中,我們將討論帶領各位按部就班的來建置「記錄傳送」。

完整的文章,請參考:第91期之三《新手學SQL Server 2008「記錄傳送(Log Shipping)」(2)》





相關的參考文章:
新手學SQL Server 2008「記錄傳送(Log Shipping)」(1):技術文章
http://sharedderrick.blogspot.com/2009/08/sql-server-2008log-shipping1.html

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