在Sql Server Intergration Service中設置Catalog下所部署所有項目的參數值


在Sql Server 2012開始,微軟給SSIS添加了Project Model這種新的項目類型,與之對應的是在Sql Server數據庫引擎中引入了Intergration Services Catalog這種新的部署方式。

 

當你在Sql Server中啟用Intergration Service Catalog后,就會在Intergration Services Catalog下多出一個系統文件夾叫SSISDB,如下圖所示我們已經發布了一個SSIS項目SSIS_LOG_TESTING到子文件夾Demo_Project_Folder下:

 

而在數據庫中,我們也可以看到Sql Server自動生成了一個名叫SSISDB的數據庫,該數據庫就是用來存儲Intergration Services Catalog下的項目數據的,請不要亂動其中的數據。

 

用過SSIS Project Model的開發人員應該都知道,這種新的項目類型相比老的Package Model有很多好處,其中一個好處就是可以在項目級別上定義全局參數,SSIS項目中的所有dtsx包都可以訪問項目參數,如下圖所示:

 

而當項目發布到Intergration Services Catalog后,也可以在Intergration Services Catalog上直接修改這些項目參數的值:

 

但是隨之而來的問題是,隨着在Intergration Services Catalog部署的SSIS項目越來越多,有沒有什么辦法能過統一管理這些SSIS項目的參數呢?因為Project Model的項目參數有個很大的缺點,那就是沒有辦法將其值存儲在數據庫中,而老的Pakacge Model是可以將SSIS項目中Configuration中的值存儲在數據庫表中的。所以導致了Project Model的項目參數沒法集中管理,設想一下你的Intergration Services Catalog下如果有100個SSIS項目,假如這100項目都有一個同名的項目參數叫UserName,你現在想更改這100個項目的UserName項目參數,你只有手動打開每個項目的配置去設置UserName項目參數,是一件很耗時的操作。

 

而Intergration Services Catalog生成的數據庫SSISDB中提供了一系列視圖和存儲過程,可以讓我們用Sql語句來操作每個SSIS項目的項目參數,如下圖所示:

 

其中有一個視圖和存儲過程特別有用,這里列出來:

 

視圖catalog.object_parameters

 


 

該視圖可以返回在Intergration Services Catalog中發布所有SSIS項目的項目參數信息,官方介紹如下:

Displays the parameters for all packages and projects in the  Integration Services catalog.

Column name Data type Description
parameter_id bigint The unique identifier (ID) of the parameter.
project_id bigint The unique ID of the project.
object_type smallint The type of parameter. The value is 20 for a project parameter and the value is 30 for a package parameter.
object_name sysname The name of the corresponding project or package.
parameter_name sysname(nvarchar(128)) The name of the parameter.
data_type nvarchar(128) The data type of the parameter.
required bit When the value is 1, the parameter value is required in order to start the execution. When the value is 0, the parameter value is not required to start the execution.
sensitive bit When the value is 1, the parameter value is sensitive. When the value is 0, the parameter value is not sensitive.
description nvarchar(1024) An optional description of the package.
design_default_value sql_variant The default value for the parameter that was assigned during the design of the project or package.
default_value sql_variant The default value that is currently used on the server.
value_type char(1) Indicates the type of parameter value. This field displays V when parameter_value is a literal value and R when the value is assigned by referencing an environment variable.
value_set bit When the value is 1, the parameter value has been assigned. When the value is 0, the parameter value has not been assigned.
referenced_variable_name nvarchar(128) The name of the environment variable that is assigned to the value of the parameter. The default value is NULL.
validation_status char(1) Identified for informational purposes only. Not used in  SQL Server 2017.
last_validation_time datetimeoffset(7) Identified for informational purposes only. Not used in  SQL Server 2017.

 

 

 

 

 

 

 

 

 

 

 

 

Permissions

To see rows in this view, you must have one of the following permissions:  +

  • READ permission on the project 

  • Membership to the ssis_admin database role 

  • Membership in the sysadmin server role. 

    Row-level security is enforced; only rows that you have permission to view are displayed.

 

MSDN鏈接

該視圖查詢結果截圖如下:

 

 

 

 

 

存儲過程catalog.set_object_parameter_value

 


 

該存儲過程可以設置在Intergration Services Catalog中部署SSIS項目的項目參數,官方介紹如下:

Sets the value of a parameter in the  Integration Services catalog. Associates the value to an environment variable or assigns a literal value that is used by default when no other values are assigned.

Syntax

catalog.set_object_parameter_value [@object_type =] object_type   
    , [@folder_name =] folder_name   
    , [@project_name =] project_name   
    , [@parameter_name =] parameter _name   
    , [@parameter_value =] parameter_value   
 [  , [@object_name =] object_name ]  
 [  , [@value_type =] value_type ]  

Arguments

[@object_type =] object_type The type of parameter. Use the value 20 to indicate a project parameter or the value 30 to indicate a package parameter. The object_type is smallInt.   

[@folder_name =] folder_name The name of the folder that contains the parameter. The folder_name is nvarchar(128).   

[@project_name =] project_name The name of the project that contains the parameter. The project_name is nvarchar(128).  

[@parameter_name =] parameter_name The name of the parameter. The parameter_name is nvarchar(128).   

[@parameter_value =] parameter_value The value of the parameter. The parameter_value is sql_variant.  

[@object_name =] object_name The name of the package. This argument required when the parameter is a package parameter. The object_name is nvarchar(260).  

[@value_type =] value_type The type of parameter value. Use the character V to indicate that parameter_value is a literal value that is used by default when no other values are assigned prior to execution. Use the character R to indicate that parameter_value is a referenced value and has been set to the name of an environment variable. This argument is optional, the character V is used by default. The value_type is char(1)

Return Code Value

0 (success) 

 

Result Sets

None 

 

Permissions

This stored procedure requires one of the following permissions:  

    • READ and MODIFY permissions on the project 

    • Membership to the ssis_admin database role 

    • Membership to the sysadmin server role  

Errors and Warnings

The following list describes some conditions that may cause the stored procedure to raise an error:  

    • The parameter type is not valid 

    • The project name is not valid 

    • For package parameters, the package name is not valid 

    • The value type is not valid 

    • The user does not have the appropriate permissions  

Remarks

  • If no value_type is specified, a literal value for parameter_value is used by default. When a literal value is used, the value_set in the object_parameters view is set to 1. A NULL parameter value is not allowed. 

  • If value_type contains the character R, which denotes a referenced value, parameter_value refers to the name of an environment variable. 

  • The value 20 may be used for object_type to denote a project parameter. In this case, a value for object_name is not necessary, and any value specified for object_name is ignored. This value is used when the user wants to set a project parameter. 

  • The value 30 may be used for object_type to denote a package parameter. In this case, a value for object_name is used to denote the corresponding package. If object_name is not specified, the stored procedure returns an error and terminates.

MSDN鏈接

該存儲過程的執行結果如下:

EXEC catalog.set_object_parameter_value 20,N'Demo_Project_Folder',N'SSIS_LOG_TESTING',N'ProjectVersion',N'2.0.0.0'

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM