blog.Toby

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            130 隨筆 :: 2 文章 :: 150 評論 :: 0 Trackbacks
           

          SSIS中ExecuteSQL TASK組件
          基于2005 CTP 4月版

          在此文中將讓你明白ExecuteSQL task組件在SSIS中的功能和作用,我將介紹下面內容:
            關于任務
            關于任務的屬性
          看完這些介紹后我將舉出下面例子:
           從一個有2個輸入參數的SQL查詢中返回一個簡單的值
           從一個SQL查詢中返回一個記錄集
           執行一個存儲過程并接收一個記錄集、返回值、輸出參數和傳送一個輸入參數
           從SQL查詢中返回XML
           從一個變量中執行SQL句子
           從一個文件中執行SQL句子

          關于任務:
           我們可以從下圖中找到ExecuteSQL TASK組件
           
           現在我們拖曳它在設計器上,可以看出它會提示你“當前組件沒有指定連接”,如圖
           
           我們可以很容易的給它指定連接,雙擊它,如圖
           
           這樣我們可以選擇不同的連接類型
           和2000的DTS不同,SSIS有能力把XML作為結果集返回,如圖
           
           然后你可以指定你要執行SQL的來源類型,比如是直接輸入還是來自文件還是變量
           
           如果是來源是直接輸入的話,你可以輸入SQL語句在 SQLStatement 屬性中(點擊旁邊的省略號彈出輸入窗口)
           
           
          任務的常見屬性說明 
           BypassPrepare
            是否在在發送到連接前分析SQL句子
           Connection
            指定執行SQL的連接
           DelayValidation  
            是否延遲驗證SQL的有效性,如果使用了只有在當前任務中產生的表(或其他對象)的話,則可啟用當前屬性
           Description
            中文描述
           Disable
            是否禁止當前任務
           DisableEventHandlers
            是否禁止事件觸發
           ExecValueVariable
            如果任務來源為變量的話,則需要設置該屬性
           Expressions
            用于給某些屬性設置一個動態的表達式,這樣可以使任務更加靈活,如圖
            
           FailPackageOnFailure
            是否設置如果當前任務執行故障則整個包執行失敗
           FailParentOnFailure
            是否設置如果當前任務執行故障則其父容器執行失敗
           IsolationLevel
            事務隔離級別
           IsStoredProcedure
            是否為存儲過程
           TimeOut
            超時設置

          使用例子
            1、從一個有2個輸入參數的SQL查詢中返回一個簡單的值      
             首先我們要添加一些變量到包中,并為這些變量指定初始值,如圖
             
             CountOfEmployees 為輸出參數
             EndDate 和StartDate 為輸入參數
             在上圖中你可以看得定義的變量有一個作用范圍,父容器定義的變量子可以使用,反之不行(可以把包看出容器)
             確定了變量后,我們需要為任務指定連接
             然后我們選擇SQLSourceType 屬性為直接輸入,然后在SQLStatement屬性中輸入如下句子,并指定返回結果為簡單行
              SELECT COUNT(*) AS CountOfEmployees FROM HumanResources.Employee WHERE (HireDate BETWEEN ? AND ?)
             設置后的結果如圖
              
             現在把指定的輸入參數映射到變量,如圖
                
             然后把SQL產生的輸出也映射到變量,如圖
              
             OK,就這樣,第一個例子完成了,調試運行把, 可以看得下面的結果
              
             看到了么,CountOfEmployees 變量的值由初始的0變成了2
             
            2、返回一個記錄集
             這個例子中我們將返回一個記錄集到一個變量(rsProducts),沒有輸入參數,有個返回的是一個記錄集,故變量的類型需定義為object類型,初始值當然也為system.object了,如圖
             
             然后在SQLStatement 屬性中輸入如下SELECT語句返回一個記錄集,并指定返回結果為記錄集
             
             
             之后當然也是參數映射了,如圖
             
             好了,運行調試把,我們將看得結果集被作用一個COM對象返回
             
             
            3、執行一個存儲過程并接收一個記錄集、返回值、輸出參數和傳送一個輸入參數  
             在這個例子中,我們將需要4個變量,一個為返回值,一個為輸入,一個為輸出,一個為記錄集,我們將輸入如下SQL句子
             EXEC ?=dbo.sp_showAccountinCity ?,?output
             然后進行參數映射,如圖
             
             
             可以看出上面操作是非常簡單,比2000的DTS強多了
            
            4、從SQL查詢中返回XML
             從SQL中返回XML其實也大同小異,只需要稍微改一下即可
             首先變量的類型依然是object,然后只需指定返回類型為XML即可
             
            5、從一個變量中執行SQL句子
             這也非常簡單,首先定義一個變量,如user::statemenet,其為字符型,如圖
             
             然后設置SQL來源類型為變量,在SQLStatement屬性輸入 user::statemenet即可
             
            
            6、從一個文件中執行SQL句子 
             基本上同5差不多
             但首先應該建立一個文件類型的來源
             
             然后指定SQL來源類型為文件,然后指定文件來源就行了
             
          總結
           好了,就寫到此了,希望你能夠喜歡
           該文的英文來源于 http://www.sqlis.com/default.aspx?58
           
              
             
            
             
              
                
             
             
                  
           
              
              
            

              
                
            


          作者Blog:http://blog.csdn.net/AnyJack/
          posted on 2007-09-27 14:03 渠上月 閱讀(479) 評論(0)  編輯  收藏 所屬分類: VS 2005
          主站蜘蛛池模板: 鹿邑县| 肃宁县| 景洪市| 临夏县| 潢川县| 蒙阴县| 上思县| 梁河县| 绵阳市| 屏山县| 凤台县| 页游| 扶风县| 天等县| 湘潭县| 铅山县| 桃园县| 钟山县| 玉龙| 陆川县| 霍城县| 正阳县| 高尔夫| 青浦区| 平武县| 拜城县| 鸡东县| 天峨县| 巴青县| 裕民县| 乌恰县| 海兴县| 木里| 华亭县| 泾阳县| 湟源县| 民权县| 嘉定区| 丰宁| 黄冈市| 凤台县|