熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

SQL Server 2005數據轉換服務常見設計問題

2022-06-13   來源: SQL Server 

  本文回答了有關 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 或 ADONET 數據庫它們包含連接字符串以及其他某些屬性包括連接的友好名稱和描述字段
  
  數據源視圖是數據源所指向的關系架構的子集可以用命名查詢計算列虛擬關系和友好名稱詳細描述這些視圖例如在使用大型架構時您可能只想使用數據源中的一小部分表這種情況下就可以使用數據源視圖來定義這樣一個子集
  
  數據源和數據源視圖屬於設計時對象只能在 BI Development Studio 項目中使用在設計時數據源可由項目中的一個或多個 DTS 軟件包使用但在運行時已部署的 DTS 軟件包將無法訪問這些設計時對象DTS 軟件包包含多個連接這使軟件包設計器能夠管理與數據庫文件等的連接在設計時連接可以引用數據源或數據源視圖但在運行時DTS 連接將使所有必需的元數據能夠獨立使用這樣用戶可以設計能夠共享數據源引用和數據源視圖的不同軟件包然後獨立運行並單獨部署每個軟件包
  
  如果 DTS 連接引用了數據源那麼使用該 DTS 連接的對象就可以使用也使用該數據源的任何數據源視圖這樣DTS 軟件包就可以很容易地只引用大型架構的一個小子集
  
  最後DTS 連接比數據源更通用因為它們可以連接到文本文件HTTP 連接FTP 連接以及需要連接字符串的其他很多情形而不只是連接到 OLEDB 和 ADONET 管理的提供程序
  
  有關連接數據源和數據源視圖的詳細信息請參閱聯機圖書
  
  為什麼沒有 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 ServiceManaging DTS Service
  
  為什麼在 Mgt Studio 中無法在 DTS 服務器下看到正在運行的軟件包?
  
  默認情況下 DTS 服務是被禁用的這是故意設計的目的是為了使系統管理員可以控制何時運行該服務要啟動 DTS 服務請右鍵單擊我的電腦並選擇管理(從開始按鈕或從桌面上均可)然後在計算機管理窗口中雙擊服務和應用程序然後單擊服務即可看見在右側列出的所有 Windows 服務在列表中找到DTS 服務器右鍵單擊並選擇啟動(如果您希望在每次啟動計算機時自動啟動該服務還可以雙擊該服務以打開它的屬性啟動類型更改為自動
  
  有關詳細信息請在聯機圖書中搜索DTS ServiceManaging DTS Service
  
  為什麼默認情況下軟件包日志記錄不再位於系統數據庫 MSDB 中?
  
  SQL DTS 為在日志中記錄有關數據庫的信息添加了很多新選項這允許您為每個軟件包定義一個或多個不同類型的日志提供程序日志提供程序類型包括文本文件SQL ServerWindows 事件日志等等在您的軟件包中通過轉到DTS菜單並選擇日志記錄可以添加日志提供程序
  
  有關詳細信息請在聯機圖書中搜索DTS Log ProvidersSetting 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
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.