SSISDB5:使用TSQL腳本執行Package

来源:http://www.cnblogs.com/ljhdo/archive/2017/12/06/4954186.html
-Advertisement-
Play Games

通常情況下,ETL工程師創建一個Agent Job來周期性地執行Package,Agent底層調用SSISDB的存儲過程(catalog.start_execution)以同步模式來啟動執行實例,這就意味著,我們可以模擬Agent Job的行為,使用TSQL腳本執行Package。SSIS引擎每執行 ...


通常情況下,ETL工程師創建一個Agent Job來周期性地執行Package,Agent底層調用SSISDB的存儲過程(catalog.start_execution)以同步模式來啟動執行實例,這就意味著,我們可以模擬Agent Job的行為,使用TSQL腳本執行Package。SSIS引擎每執行一次Package,都會創建一個執行實例(Execution Instance),每個執行實例都有唯一的標識 ExecutionID,數據類型是bigint。

執行實例可以包含參數,使用存儲過程(catalog.set_execution_parameter_value)向執行實例傳遞參數。執行實例的參數分為兩種類型:系統參數和Package參數,系統參數共有7個,用於控制日誌記錄、執行方式(非同步/同步)等行為,而Package參數,用於向Package傳遞動態的參數值。為了控制執行實例的行為,需要向執行實例傳遞系統參數;有些Package包含參數,在開始執行實例之前,必須賦值。

一,創建執行實例

執行Package的第一步是創建Package的執行實例,並保存執行實例的ID。使用 catalog.create_execution 存儲過程創建一個執行實例,創建成功之後,通過輸出參數返回唯一的實例ID(Execution_ID)。

declare @Execution_ID bigint
exec catalog.create_execution @package_name=N'Test.dtsx',
    @Execution_ID=@Execution_ID output,
    @folder_name=N'MyProjectFloder',
    @project_name=N'MyProject',
    @use32bitruntime=FALSE,
    @reference_id=null

該SP創建Package的執行實例,以輸出(output)參數返回執行實例的ID。

二,傳遞參數

向執行實例傳遞參數是可選的步驟,參數分為Package參數和系統參數,系統參數控制Packag的行為,如果參數@object_type的值為50,表示為執行實例設置系統參數。

--set package parameter
declare @var0 sql_variant=N'Package_Parameter_value';
exec catalog.set_execution_parameter_value 
    @Execution_ID=@Execution_ID,
    @object_type=30,        --Package parameter
    @parameter_name=N'Package_Parameter_Name',
    @parameter_value=@var0

--set system parameter
declare @var1 smallint = 1
exec [SSISDB].[catalog].[set_execution_parameter_value] 
    @execution_id=@execution_id,  
    @object_type=50,        --system parameter
    @parameter_name=N'LOGGING_LEVEL', 
    @parameter_value=@var1
exec [SSISDB].[catalog].[start_execution] @execution_id

使用存儲過程 catalog.set_execution_parameter_value 來修改參數的執行值(Execution Value):

catalog.set_execution_parameter_value 
      [ @execution_id = execution_id
    , [ @object_type = ] object_type
    , [ @parameter_name = ] parameter_name
    , [ @parameter_value = ] parameter_value

參數 @object_type的值是20、30 和50,分別表示工程級別的參數(Project Parameter),包級別的參數(Package Parameter),以及系統參數;

參數 @parameter_name 是參數的名稱,對於系統參數,共有以下7個:

  • LOGGING_LEVEL
  • CUSTOMIZED_LOGGING_LEVEL
  • DUMP_ON_ERROR
  • DUMP_ON_EVENT
  • DUMP_EVENT_CODE
  • CALLER_INFO
  • SYNCHRONIZED

參數@parameter_value是參數的值,例如,設置@object_type=50,@parameter_name=‘SYNCHRONIZED’,@parameter_value為1,表示以同步方式啟動執行實例。

三,開始執行實例

為執行實例傳遞相應的參數之後,可以調用SP運行Package的執行實例。在實例的腳本中,由於沒有啟用同步模式(設置系統參數:SYNCHRONIZED為1),因此,該SP以非同步方式執行Package,不等Package執行完成,該SP就立即返回。

exec catalog.start_execution @Execution_ID=@Execution_ID
go

四,執行實例的運行模式

SSIS 引擎預設以非同步方式執行Package,這意味著,在調用SP:catalog.start_execution 開始執行實例之後,SP不等待package執行完成,立即返回,返回的結果值表示調用Package的結果。如果後續執行的Package必須在前一個Package執行完成之後才能開始運行,那麼,必須以同步方式執行Package,所謂同步模式,就是說,在調用sp:catalog.start_execution 之後,SP不會立即返回,而是等package執行完成之後,SP才會返回,將控制權傳遞到下一條TSQL 語句。

參數 SYNCHRONIZED 控制Package的執行模式,是以同步,還是以非同步方式執行,該參數的預設值是0,也就是說,禁用同步模式,通過把參數:SYNCHRONIZED 的執行值(Execution Value)修改為1,使SSIS Engine以同步方式執行Package:

exec catalog.set_execution_parameter_value 
                @execution_id=@package_execution_instance_id, 
                @object_type= 50, 
                @parameter_name = N'SYNCHRONIZED', 
                @parameter_value = 1;

SYNCHRONIZED是一個系統參數,參數@object_type必須設置為50,當設置參數SYNCHRONIZED的執行值(Execution Value)為1,存儲過程:catalog.start_execution 等到Package執行完成之後返回。

 

參考文檔:

Quick Tip – Run SSIS 2012 packages synchronously and other execution parameters

catalog.create_execution (SSISDB Database)

catalog.start_execution (SSISDB Database)

catalog.set_execution_parameter_value (SSISDB Database)

catalog.executions (SSISDB Database)


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本節學習目的 1)分析printk()函數 2)使用prink()調試驅動 1.在驅動調試中,使用printk(),是最簡單,最方便的辦法 當uboot的命令行里的“console=tty1”時,表示printk()輸出在開發板的LCD屏上 當uboot的命令行里的“console=ttySA0,1 ...
  • 安裝環境: linux版本: ubuntu-16.04.3-desktop-amd64 mysql版本:mysql-boost-5.7.20.tar.gz 下載地址:https://dev.mysql.com/downloads/mysql/ mysql安裝前的準備工作: 1,安裝cmake工具 s ...
  • Linux重要目錄,以思維導圖Xmind方式展現,附帶Xmind文件下載地址。 ...
  • @echo off&color 3a&set c=0123456789abcdefghijklmnopqrstuvwxyz title 批量替換文件(文件夾)名 echo. echo 此批處理可批量替換本文件所在文件夾下所有文件的文件名。 echo.echo.&set /p strtemp1= 請輸 ...
  • 企業級緩存系統varnish應用與實戰 環境背景:隨著公司業務快速發展,公司的電子商務平臺已經聚集了很多的忠實粉絲,公司也拿到了投資,這時老闆想通過一場類似雙十一的活動,進行一場大的促銷,屆時會有非常多的粉絲訪問網站,你的總監與市場部門開完會後,確定活動期間會有平常10倍以上的訪問請求,總監要求大幅 ...
  • Innodb中的鎖 共用鎖和排它鎖(Shared and Exclusive Locks) 共用鎖和排它鎖是行級鎖,有兩種類型的行級鎖 共用鎖(s lock)允許持有鎖的事務對行進行讀取操作 排它鎖(x lock)允許持有鎖的事務對行進行更新和刪除操作 事務a在行r上擁有共用鎖,則其他事務可以獲得r ...
  • 1.mongodb下載地址: https://www.mongodb.com/dr/fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-ssl-3.6.0-signed.msi 2.安裝後文件夾結構如下圖所示 2、在D:\MongoDB下新建 ...
  • 對這個游戲我想大家都不陌生 不管新手還是老手都會遇到難題基本上是處於不會玩的狀態下去亂押註又或者是被某某某帶著跟計劃玩一是直接拉你進群讓你去跟計 劃(沒有長期的計 劃跟計劃死的人很多,你也不例外)二是在微 信 群里發神經的亂下註(或許看到別人買什麼你也跟著買,微信群基本都是托) 那該如何對待這個游戲 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...