SQL Server 2005數(shù)據(jù)轉(zhuǎn)換服務設(shè)計問題集錦
當前的向?qū)w系結(jié)構(gòu)會創(chuàng)建一個 DTS 軟件包數(shù)據(jù)流以傳輸數(shù)據(jù)。但如果要處理幾千個表,則會遇到可伸縮性限制。我們認為這是合理的,因為軟件包設(shè)計人員不太可能在一個數(shù)據(jù)流中使用幾千個源和幾千個目標。Beta 3 中可能會針對此問題進行一些改進。
為什么我不能在導入/導出向?qū)е袕椭茖ο螅?
導入/導出向?qū)菫榱俗層脩舴奖愕貙?shù)據(jù)移入和移出 SQL Server 而設(shè)計的。在服務器之間復制數(shù)據(jù)庫對象實際上屬于管理操作而不是數(shù)據(jù)移動操作,即使實際上移動了數(shù)據(jù)。
用戶可以使用 SQL Server“管理”工作區(qū)中的“復制數(shù)據(jù)庫向?qū)А眮韽椭茢?shù)據(jù)庫對象,而且該向?qū)菍iT用于復制數(shù)據(jù)庫對象的。
另一方面,DTS 導入/導出向?qū)Ш喕说湫偷?DTS 操作——從各種數(shù)據(jù)源(包括文本文件、電子表格和 OLEDB 數(shù)據(jù)源)加載數(shù)據(jù)。
為什么我不能在 SQL Server Management Studio 中設(shè)計軟件包?
SQL Server Management Studio 是一個環(huán)境,用于管理已部署軟件包的存儲和執(zhí)行。它提供了專門用來設(shè)計軟件包的特殊功能,包括與 DTS 服務的集成以及枚舉遠程服務器上的軟件包的能力。但它不是一個設(shè)計環(huán)境。
Business Intelligence Design Studio 才是用于設(shè)計軟件包、在解決方案和項目中組織軟件包、調(diào)試軟件包并管理多用戶項目的源和版本控制的環(huán)境。
所以,在 SQL Server 2005 中,用戶分別在兩個獨立的專門化環(huán)境中設(shè)計和管理軟件包。
什么是數(shù)據(jù)源和數(shù)據(jù)源視圖?它們在我的軟件包中如何與連接相關(guān)?
數(shù)據(jù)源和數(shù)據(jù)源視圖不是 DTS 軟件包中的對象,而是存儲在 Business Intelligence Development Studio 的數(shù)據(jù)轉(zhuǎn)換項目中的單獨對象。由于它們位于項目中而不是位于 DTS 軟件包中,因此可以在 DTS 軟件包之間共享,從而允許為明星架構(gòu)定義數(shù)據(jù)源視圖并由加載明星架構(gòu)的每個軟件包一致地使用該視圖。
數(shù)據(jù)源定義了如何連接到 OLEDB 或 ADO.NET 數(shù)據(jù)庫。它們包含連接字符串以及其他某些屬性,包括連接的友好名稱和描述字段。
數(shù)據(jù)源視圖是數(shù)據(jù)源所指向的關(guān)系架構(gòu)的子集。可以用命名查詢、計算列、虛擬關(guān)系和友好名稱詳細描述這些視圖。例如,在使用大型架構(gòu)時,您可能只想使用數(shù)據(jù)源中的一小部分表。這種情況下,就可以使用數(shù)據(jù)源視圖來定義這樣一個子集。
數(shù)據(jù)源和數(shù)據(jù)源視圖屬于設(shè)計時對象,只能在 BI Development Studio 項目中使用。在設(shè)計時,數(shù)據(jù)源可由項目中的一個或多個 DTS 軟件包使用,但在運行時,已部署的 DTS 軟件包將無法訪問這些設(shè)計時對象。DTS 軟件包包含多個連接,這使軟件包設(shè)計器能夠管理與數(shù)據(jù)庫、文件等的連接。在設(shè)計時,連接可以引用數(shù)據(jù)源或數(shù)據(jù)源視圖,但在運行時,DTS 連接將使所有必需的元數(shù)據(jù)能夠獨立使用。這樣,用戶可以設(shè)計能夠共享數(shù)據(jù)源引用和數(shù)據(jù)源視圖的不同軟件包,然后獨立運行并單獨部署每個軟件包。
如果 DTS 連接引用了數(shù)據(jù)源,那么使用該 DTS 連接的對象就可以使用也使用該數(shù)據(jù)源的任何數(shù)據(jù)源視圖。這樣,DTS 軟件包就可以很容易地只引用大型架構(gòu)的一個小子集。
最后,DTS 連接比數(shù)據(jù)源更通用,因為它們可以連接到文本文件、HTTP 連接、FTP 連接以及需要連接字符串的其他很多情形,而不只是連接到 OLEDB 和 ADO.NET 管理的提供程序。
為什么沒有 Microsoft Excel 或 Microsoft Access 數(shù)據(jù)源?
要導入 Excel 和 Access 數(shù)據(jù)文件,可以使用經(jīng)過適當配置的 OLEDB 連接管理器。還可以很輕松地使用 DTS 導入/導出向?qū)В撓驅(qū)槟鷦?chuàng)建連接管理器。
為什么默認情況下在數(shù)據(jù)流中不使用“快速分析”選項?
“快速分析”選項是在適當?shù)那闆r下才能使用的選項。它不支持特定于區(qū)域設(shè)置的分析或“年-月-日”以外的日期格式。它只對有限的數(shù)據(jù)格式有用,對于這些格式來說,此選項的分析速度可能比默認的標準分析方式更快。因此,用戶必須基于自己的數(shù)據(jù)格式顯式選擇此選項。
為什么 WMI 數(shù)據(jù)任務和事件任務是相互獨立的?
系統(tǒng)管理數(shù)據(jù)可用于影響 DTS 控制流。例如,運行 ETL 流之前,可以檢查 SQL Server 是否正在運行、計算機上是否有可用的 C: 驅(qū)動器或者是否有足夠的可用磁盤空間。WMI 數(shù)據(jù)任務用來檢索此類系統(tǒng)數(shù)據(jù)。
系統(tǒng)管理事件可用于在 DTS 控制流中執(zhí)行實時操作。例如,僅當內(nèi)存使用量下降到 50% 以下時才運行 ETL 流,或者僅當文件系統(tǒng)上有可用的新源文件時才啟動數(shù)據(jù)流。WMI 事件任務允許定義和處理此類系統(tǒng)事件。
而且,這兩種任務在所提供的功能方面也基本上是不同的。在本發(fā)行版中,我們可以更主動地根據(jù)任務提供的功能對任務進行拆分,以創(chuàng)建更有針對性的軟件包。這種拆分的另一個例子是文件系統(tǒng)任務和 FTP 任務。在 DTS 2000 中,這兩個任務提供的功能被組合到一個任務中,但在本發(fā)行版中,這兩個任務被拆分開來,從而使用戶更容易創(chuàng)建、理解和支持軟件包。
為什么表達式語言既不是 SQL 也不是 Visual Basic?
因為 SQL 和 Visual Basic 都不能滿足 DTS 數(shù)據(jù)流的要求。例如,我們想支持一組運算符,比如用于處理很多情況下作為標記使用的位掩碼的按位運算符。此外,為了更好地利用內(nèi)存(從而獲得最佳性能),DTS 數(shù)據(jù)流對數(shù)據(jù)類型有著嚴格的限制,這也反映在表達式語法中。
DTS 表達式語法使您能夠設(shè)計出通過復雜的字符串和數(shù)據(jù)類型處理而獲得高性能的數(shù)據(jù)流。如果表達式語言不支持您需要的某些函數(shù),或者您更喜歡使用 Visual Basic 語法,那么您可以使用腳本組件,腳本組件允許您在數(shù)據(jù)流中使用 Visual Basic .NET。
為什么有些函數(shù)不在表達式語言中?
由于資源限制,無法實現(xiàn)目前可從 SQL Server TSQL 中找到的每個函數(shù)。設(shè)置第一批函數(shù)時我們曾咨詢過客戶和開發(fā)人員,我們會認真考慮收到的測試版反饋信息,為以后的測試版和最終版本做好準備。
為什么必須在源適配器,而不是在使用組件(例如合并)中配置排序順序?
行的順序是在源適配器中設(shè)置的,并且無法通過大多數(shù)下游轉(zhuǎn)換進行更改(排序可能是一個例外)。能夠識別源數(shù)據(jù)順序的源適配器無需用戶幫助即可設(shè)置此信息,但在大多數(shù)情況下,提供給源組件的元數(shù)據(jù)不充分,使源組件無法設(shè)置輸出列排序信息,因此用戶需要自行完成此操作。
為什么必須在軟件包中鎖定變量?
當適于改進并發(fā)性并且這樣可以提高性能和可伸縮性時,DTS 運行時將使用多個線程來完成執(zhí)行。為了避免多個線程同時試圖訪問一個變量,必須為您的操作鎖定變量,從而使對變量的所有訪問都是“安全的”;如果不這樣做,可能會導致軟件包出現(xiàn)各種響應,從“有時不工作”到返回完全不正確的結(jié)果。即使軟件包是完全線性的,這也可能是一個問題:例如,如果用戶要更改循環(huán)中的并發(fā)設(shè)置。
為什么分離輸出路徑時沒有向組件發(fā)出通知?
DTS 設(shè)計器用戶應當能夠刪除路徑然后重新附著路徑,這樣才不會破壞軟件包或更改軟件包的行為。通過提供 OnOutputPathDetached 方法,我們允許行為不當?shù)慕M件不遵守此規(guī)則。為了滿足希望提供多個輸出的組件作者的需要,DTS 對象模型提供了一個名為 DeleteOutputOnPathDetached 的輸出屬性,如果將此屬性設(shè)置為 true,當路徑被分離時,輸出將自動被刪除。
適用于 DTS 的新的 Windows 服務允許操作員查看并停止特定服務器上運行的 DTS 軟件包。此服務在 SQL Management Studio 中提供。注意:需要首先啟動 DTS 服務,因為默認情況下它是被禁用的。
為什么在 Mgt Studio 中無法在 DTS 服務器下看到正在運行的軟件包?
默認情況下 DTS 服務是被禁用的。這是故意設(shè)計的,目的是為了使系統(tǒng)管理員可以控制何時運行該服務。要啟動 DTS 服務,請右鍵單擊“我的電腦”并選擇“管理”(從“開始”按鈕或從桌面上均可),然后在“計算機管理”窗口中雙擊“服務和應用程序”,然后單擊“服務”,即可看見在右側(cè)列出的所有 Windows 服務。在列表中找到“DTS 服務器”,右鍵單擊并選擇“啟動”。(如果您希望在每次啟動計算機時自動啟動該服務,還可以雙擊該服務以打開它的屬性,將“啟動類型”更改為“自動”。)
為什么默認情況下軟件包日志記錄不再位于系統(tǒng)數(shù)據(jù)庫 MSDB 中?
SQL 2005 DTS 為在日志中記錄有關(guān)數(shù)據(jù)庫的信息添加了很多新選項。這允許您為每個軟件包定義一個或多個不同類型的日志提供程序。日志提供程序類型包括文本文件、SQL Server、Windows 事件日志等等。在您的軟件包中,通過轉(zhuǎn)到“DTS”菜單并選擇“日志記錄”,可以添加日志提供程序。
為什么在源適配器中看不到 XML 文檔架構(gòu)的變化?
XML 文檔架構(gòu)的變化將極大地影響數(shù)據(jù)流的元數(shù)據(jù)。這要求用戶顯式更改架構(gòu)并在更改時考慮到元數(shù)據(jù)的變化。
為什么我在遷移引用 DTSGlobalVariables 父屬性的軟件包時會遇到問題?
DTS 2005 中發(fā)生更改的范圍要求完全重寫對象模型。作為遷移到 SQL Server 2005 DTS 的結(jié)果,引用通過 DTSGlobalVariables 父屬性訪問的 SQL Server 2000 DTS 對象的 ActiveX 腳本將不再有效。
為什么我在遷移數(shù)據(jù)泵任務時會遇到問題?
DTS 2005 數(shù)據(jù)流任務取代了 DTS 2000 數(shù)據(jù)轉(zhuǎn)換任務,使功能有了很大的改進。但這樣的結(jié)果是,2000 和 2005 所提供的功能之間沒有明確的對應。為了確保以前的數(shù)據(jù)轉(zhuǎn)換任務能夠繼續(xù)正確操作,沒有將它們完全遷移到 SQL Server 2005。遷移向?qū)М斍皩⑦@樣的任務包裝在專用的 SQL Server 2000 軟件包中,并從執(zhí)行 SQL Server 2000 DTS 軟件包任務調(diào)用它。
為什么我不能遷移動態(tài)屬性任務?
因為此任務直接依賴于不再提供的 DTS 2000 對象模型,遷移向?qū)М斍盀榇巳蝿仗峁┑闹С趾苡邢蕖4巳蝿盏膶嵗荒_本任務取代,腳本任務中包含描述曾由此任務設(shè)置的屬性的注釋。要恢復以前的功能,必須進行手動修改。
為什么全局變量在 ActiveX 腳本任務中不可用?
Beta 2 不支持訪問全局變量。
為什么不在 DTS 中包括數(shù)據(jù)轉(zhuǎn)換任務和數(shù)據(jù)驅(qū)動的查詢?nèi)蝿眨?
SQL Server 2005 包括的數(shù)據(jù)流任務取代了這兩個 SQL 2000 任務。數(shù)據(jù)流任務對數(shù)據(jù)源、目標和轉(zhuǎn)換的數(shù)量沒有限制,而在 SQL 2000 中,用戶對每個任務只能使用一個數(shù)據(jù)源、一個目標和一個轉(zhuǎn)換。支持這項擴展功能所需的新對象模型無法容納這兩個功能不太強的任務。
為什么 DTS 不再是客戶端可再分發(fā)的?
DTS 已被重寫,從 SQL Server 2000 中有用的實用程序變成了 SQL Server 2005 中功能豐富的應用程序和平臺。這種變化同時帶來為 DTS 用戶提供服務和支持的責任,這些服務和支持最好通過管理和許可與其他 SQL 服務器應用程序類似的 DTS 引擎功能來處理。因此,雖然用戶可以使用部署向?qū)лp松部署軟件包,但他們必須在需要運行軟件包的每臺計算機上運行 SQL Server 2005 安裝程序并安裝 DTS。這不僅有助于確保用戶/計算機使用正確版本的 DTS 可執(zhí)行程序,還有助于該軟件以后的更新。
為什么 DTS 不支持基于 MSI 的部署?
基于 MSI 的部署具有完全獨立安裝的優(yōu)點,但它需要再分發(fā) DTS 二進制文件。如果需要某個重要的安全修補程序,那么以托管方式將修補程序應用到每個部署目標是不可能的。當前的部署實用程序要求目標服務器上已安裝 DTS,因為這對管理員來說才是更有用的模型。
