本文回答了有關 SQL Server
中的數據轉換服務的某些常見問題
特別回答了某些設計問題
這是關於
為什麼
而不是關於
如何
的常見問題
為什麼傳輸幾千個表的數據時向導會失敗? 當前的向導體系結構會創建一個 DTS 軟件包數據流以傳輸數據
但如果要處理幾千個表
則會遇到可伸縮性限制
我們認為這是合理的
因為軟件包設計人員不太可能在一個數據流中使用幾千個源和幾千個目標
Beta
中可能會針對此問題進行一些改進
為什麼我不能在導入/導出向導中復制對象? 導入/導出向導是為了讓用戶方便地將數據移入和移出 SQL Server 而設計的
在服務器之間復制數據庫對象實際上屬於管理操作而不是數據移動操作
即使實際上移動了數據
用戶可以使用 SQL Server
管理
工作區中的
復制數據庫向導
來復制數據庫對象
而且該向導是專門用於復制數據庫對象的
另一方面
DTS 導入/導出向導簡化了典型的 DTS 操作——從各種數據源(包括文本文件
電子表格和 OLEDB 數據源)加載數據
為什麼我不能在 SQL Server Management Studio 中設計軟件包? SQL Server Management Studio 是一個環境
用於管理已部署軟件包的存儲和執行
它提供了專門用來設計軟件包的特殊功能
包括與 DTS 服務的集成以及枚舉遠程服務器上的軟件包的能力
但它不是一個設計環境
Business Intelligence Design Studio 才是用於設計軟件包
在解決方案和項目中組織軟件包
調試軟件包並管理多用戶項目的源和版本控制的環境
所以
在 SQL Server
中
用戶分別在兩個獨立的專門化環境中設計和管理軟件包
有關設計和管理軟件包以及在環境之間部署軟件包的詳細信息
請參閱聯機圖書
什麼是數據源和數據源視圖?它們在我的軟件包中如何與連接相關? 數據源和數據源視圖不是 DTS 軟件包中的對象
而是存儲在 Business Intelligence Development Studio 的數據轉換項目中的單獨對象
由於它們位於項目中而不是位於 DTS 軟件包中
因此可以在 DTS 軟件包之間共享
從而允許為明星架構定義數據源視圖並由加載明星架構的每個軟件包一致地使用該視圖
數據源定義了如何連接到 OLEDB 或 ADO
NET 數據庫
它們包含連接字符串以及其他某些屬性
包括連接的友好名稱和描述字段
數據源視圖是數據源所指向的關系架構的子集
可以用命名查詢
計算列
虛擬關系和友好名稱詳細描述這些視圖
例如
在使用大型架構時
您可能只想使用數據源中的一小部分表
這種情況下
就可以使用數據源視圖來定義這樣一個子集
數據源和數據源視圖屬於設計時對象
只能在 BI Development Studio 項目中使用
在設計時
數據源可由項目中的一個或多個 DTS 軟件包使用
但在運行時
已部署的 DTS 軟件包將無法訪問這些設計時對象
DTS 軟件包包含多個連接
這使軟件包設計器能夠管理與數據庫
文件等的連接
在設計時
連接可以引用數據源或數據源視圖
但在運行時
DTS 連接將使所有必需的元數據能夠獨立使用
這樣
用戶可以設計能夠共享數據源引用和數據源視圖的不同軟件包
然後獨立運行並單獨部署每個軟件包
如果 DTS 連接引用了數據源
那麼使用該 DTS 連接的對象就可以使用也使用該數據源的任何數據源視圖
這樣
DTS 軟件包就可以很容易地只引用大型架構的一個小子集
最後
DTS 連接比數據源更通用
因為它們可以連接到文本文件
HTTP 連接
FTP 連接以及需要連接字符串的其他很多情形
而不只是連接到 OLEDB 和 ADO
NET 管理的提供程序
有關連接
數據源和數據源視圖的詳細信息
請參閱聯機圖書
為什麼沒有 Microsoft Excel 或 Microsoft Access 數據源? 要導入 Excel 和 Access 數據文件
可以使用經過適當配置的 OLEDB 連接管理器
還可以很輕松地使用 DTS 導入/導出向導
該向導將為您創建連接管理器
有關詳細信息
請在聯機圖書中搜索
Creating a Package Using the DTS Import/Export Wizard
為什麼默認情況下在數據流中不使用快速分析選項?
快速分析選項是在適當的情況下才能使用的選項它不支持特定於區域設置的分析或年月日以外的日期格式它只對有限的數據格式有用對於這些格式來說此選項的分析速度可能比默認的標准分析方式更快因此用戶必須基於自己的數據格式顯式選擇此選項
有關詳細信息請在聯機圖書中搜索Fast Parse
為什麼 WMI 數據任務和事件任務是相互獨立的?
系統管理數據可用於影響 DTS 控制流例如運行 ETL 流之前可以檢查 SQL Server 是否正在運行計算機上是否有可用的 C: 驅動器或者是否有足夠的可用磁盤空間WMI 數據任務用來檢索此類系統數據
系統管理事件可用於在 DTS 控制流中執行實時操作例如僅當內存使用量下降到 % 以下時才運行 ETL 流或者僅當文件系統上有可用的新源文件時才啟動數據流WMI 事件任務允許定義和處理此類系統事件
而且這兩種任務在所提供的功能方面也基本上是不同的在本發行版中我們可以更主動地根據任務提供的功能對任務進行拆分以創建更有針對性的軟件包這種拆分的另一個例子是文件系統任務和 FTP 任務在 DTS 中這兩個任務提供的功能被組合到一個任務中但在本發行版中這兩個任務被拆分開來從而使用戶更容易創建理解和支持軟件包
為什麼表達式語言既不是 SQL 也不是 Visual Basic?
因為 SQL 和 Visual Basic 都不能滿足 DTS 數據流的要求例如我們想支持一組運算符比如用於處理很多情況下作為標記使用的位掩碼的按位運算符此外為了更好地利用內存(從而獲得最佳性能)DTS 數據流對數據類型有著嚴格的限制這也反映在表達式語法中
DTS 表達式語法使您能夠設計出通過復雜的字符串和數據類型處理而獲得高性能的數據流如果表達式語言不支持您需要的某些函數或者您更喜歡使用 Visual Basic 語法那麼您可以使用腳本組件腳本組件允許您在數據流中使用 Visual Basic NET
為什麼有些函數不在表達式語言中?
由於資源限制無法實現目前可從 SQL Server TSQL 中找到的每個函數設置第一批函數時我們曾咨詢過客戶和開發人員我們會認真考慮收到的測試版反饋信息為以後的測試版和最終版本做好准備
為什麼必須在源適配器而不是在使用組件(例如合並)中配置排序順序?
行的順序是在源適配器中設置的並且無法通過大多數下游轉換進行更改(排序可能是一個例外)能夠識別源數據順序的源適配器無需用戶幫助即可設置此信息但在大多數情況下提供給源組件的元數據不充分使源組件無法設置輸出列排序信息因此用戶需要自行完成此操作
為什麼必須在軟件包中鎖定變量?
當適於改進並發性並且這樣可以提高性能和可伸縮性時DTS 運行時將使用多個線程來完成執行為了避免多個線程同時試圖訪問一個變量必須為您的操作鎖定變量從而使對變量的所有訪問都是安全的如果不這樣做可能會導致軟件包出現各種響應從有時不工作到返回完全不正確的結果即使軟件包是完全線性的這也可能是一個問題例如如果用戶要更改循環中的並發設置
為什麼分離輸出路徑時沒有向組件發出通知? DTS 設計器用戶應當能夠刪除路徑然後重新附著路徑
這樣才不會破壞軟件包或更改軟件包的行為
通過提供 OnOutputPathDetached 方法
我們允許行為不當的組件不遵守此規則
為了滿足希望提供多個輸出的組件作者的需要
DTS 對象模型提供了一個名為 DeleteOutputOnPathDetached 的輸出屬性
如果將此屬性設置為 true
當路徑被分離時
輸出將自動被刪除
為什麼有適用於 DTS 的 Windows 服務? 適用於 DTS 的新的 Windows 服務允許操作員查看並停止特定服務器上運行的 DTS 軟件包
此服務在 SQL Management Studio 中提供
注意
需要首先啟動 DTS 服務
因為默認情況下它是被禁用的
請參閱常見問題中的
為什麼在 Mgt Studio 中無法在 DTS 服務器下看到正在運行的軟件包?
主題
有關詳細信息
請在聯機圖書中搜索
DTS Service
和
Managing DTS Service
為什麼在 Mgt Studio 中無法在 DTS 服務器下看到正在運行的軟件包? 默認情況下 DTS 服務是被禁用的
這是故意設計的
目的是為了使系統管理員可以控制何時運行該服務
要啟動 DTS 服務
請右鍵單擊
我的電腦
並選擇
管理
(從
開始
按鈕或從桌面上均可)
然後在
計算機管理
窗口中雙擊
服務和應用程序
然後單擊
服務
即可看見在右側列出的所有 Windows 服務
在列表中找到
DTS 服務器
右鍵單擊並選擇
啟動
(如果您希望在每次啟動計算機時自動啟動該服務
還可以雙擊該服務以打開它的屬性
將
啟動類型
更改為
自動
)
有關詳細信息
請在聯機圖書中搜索
DTS Service
和
Managing DTS Service
為什麼默認情況下軟件包日志記錄不再位於系統數據庫 MSDB 中? SQL
DTS 為在日志中記錄有關數據庫的信息添加了很多新選項
這允許您為每個軟件包定義一個或多個不同類型的日志提供程序
日志提供程序類型包括文本文件
SQL Server
Windows 事件日志等等
在您的軟件包中
通過轉到
DTS
菜單並選擇
日志記錄
可以添加日志提供程序
有關詳細信息
請在聯機圖書中搜索
DTS Log Providers
和
Setting Logging Options in Packages
為什麼在源適配器中看不到 XML 文檔架構的變化? XML 文檔架構的變化將極大地影響數據流的元數據
這要求用戶顯式更改架構並在更改時考慮到元數據的變化
為什麼我在遷移引用 DTSGlobalVariables 父屬性的軟件包時會遇到問題? DTS
中發生更改的范圍要求完全重寫對象模型
作為遷移到 SQL Server
DTS 的結果
引用通過 DTSGlobalVariables 父屬性訪問的 SQL Server
DTS 對象的 ActiveX 腳本將不再有效
為什麼我在遷移數據泵任務時會遇到問題? DTS
數據流任務取代了 DTS
數據轉換任務
使功能有了很大的改進
但這樣的結果是
和
所提供的功能之間沒有明確的對應
為了確保以前的數據轉換任務能夠繼續正確操作
沒有將它們完全遷移到 SQL Server
遷移向導當前將這樣的任務包裝在專用的 SQL Server
軟件包中
並從執行 SQL Server
DTS 軟件包任務調用它
為什麼我不能遷移動態屬性任務? 因為此任務直接依賴於不再提供的 DTS
對象模型
遷移向導當前為此任務提供的支持很有限
此任務的實例被腳本任務取代
腳本任務中包含描述曾由此任務設置的屬性的注釋
要恢復以前的功能
必須進行手動修改
為什麼全局變量在 ActiveX 腳本任務中不可用? Beta
不支持訪問全局變量
為什麼不在 DTS 中包括數據轉換任務和數據驅動的查詢任務?
SQL Server 包括的數據流任務取代了這兩個 SQL 任務數據流任務對數據源目標和轉換的數量沒有限制而在 SQL 中用戶對每個任務只能使用一個數據源一個目標和一個轉換支持這項擴展功能所需的新對象模型無法容納這兩個功能不太強的任務
為什麼 DTS 不再是客戶端可再分發的?
DTS 已被重寫從 SQL Server 中有用的實用程序變成了 SQL Server 中功能豐富的應用程序和平台這種變化同時帶來為 DTS 用戶提供服務和支持的責任這些服務和支持最好通過管理和許可與其他 SQL 服務器應用程序類似的 DTS 引擎功能來處理因此雖然用戶可以使用部署向導輕松部署軟件包但他們必須在需要運行軟件包的每台計算機上運行 SQL Server 安裝程序並安裝 DTS這不僅有助於確保用戶/計算機使用正確版本的 DTS 可執行程序還有助於該軟件以後的更新
為什麼 DTS 不支持基於 MSI 的部署?
基於 MSI 的部署具有完全獨立安裝的優點但它需要再分發 DTS 二進制文件如果需要某個重要的安全修補程序那麼以托管方式將修補程序應用到每個部署目標是不可能的當前的部署實用程序要求目標服務器上已安裝 DTS因為這對管理員來說才是更有用的模型
有關詳細信息請在聯機圖書中搜索Deployment Utility
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22187.html