SSIS 任务:处理 SSAS 多维数据集和参数化连接字符串
SSIS Task: Process SSAS Cube and Parametrize Connection Strings
我想在 SSIS 中处理 SSAS 多维数据集。有没有办法为 Datamart SQL 服务器数据源参数化连接字符串?我希望能够 set/configure SQL DevOps 中 SSAS 开发、测试和生产环境的服务器连接字符串。
目前,数据集市多维数据集在 SSAS 中具有硬编码的连接,SSAS 似乎没有像 SSIS 这样的项目连接字符串。
更新:
我在 SSIS 中听说过 ---> Analysis Services 执行 DDL 任务 --> 运行 一个用于更改数据库连接字符串的 XMLA 脚本。不确定如何执行此操作。
有人可以提供指导或 trim 了解此 XMLA 脚本以仅更改连接字符串(Sql 服务器和数据库名称)吗?只想改变必要的东西。我正在使用 SSAS 2016,因此可能需要更新架构 xmlns。
还收到此错误:有 SQL Server 2016 和 2016 SSAS
Errors in the metadata manager. The object definition supplied for the ALTER statement is of a different type that the object reference to be altered.
我该如何解决这个问题?
<Alter ObjectExpansion="ObjectProperties" xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>Adventure Works DW Multidimensional 2012</DatabaseID>
<DataSourceID>AdventureWorksDW2012</DataSourceID>
</Object>
<ObjectDefinition>
<DataSource xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="RelationalDataSource">
<ID>AdventureWorksDW2012</ID>
<Name>AdventureWorksDW2012</Name>
<ConnectionString>Data Source=fr-dwk-02;Initial Catalog=AdventureWorksDW2008R2;Integrated Security=True</ConnectionString>
<ManagedProvider>System.Data.SqlClient</ManagedProvider>
<Timeout>PT30S</Timeout>
</DataSource>
</ObjectDefinition>
</Alter>
以下来自 Microsoft 的 link 使用 2001-2003 架构并更改超时秒数。我只想更改数据库源和服务器。
这是针对 TFS,但要使用 SSIS:
转到 SSMS ---> 分析服务
脚本数据源 --> 更改为 ---> 新查询 Window
可以在这里更改数据源
将 Alter Scripts 命令复制到 SSIS 中的变量中,然后使用 'Execute Analysis Services DDL Task'
这可以通过将连接字符串 DDL 存储为 SSIS 字符串变量中的表达式并使用其中的参数(或变量)来保存更新的连接字符串来完成。在 Analysis Services 执行 DDL 任务上,将 SourceType
属性 更改为 Variable
和 select Source
字段中保存连接字符串表达式的变量。在下面的示例表达式中,包参数 ($Package::ConnectionString
) 在表达式中使用 +
符号连接。通过单击 SSDT 中 Variables
窗格的 Expression
字段下方的省略号,然后在双引号内输入表达式,可以为变量定义表达式。表达式中的所有双引号和反斜杠 (\
),不包括开始和结束双引号, 需要用反斜杠字符 进行转义。如果您以前没有在 SSIS 中使用过表达式,我建议您使用表达式生成器上的“评估表达式”按钮来验证表达式的结果。这将显示在执行期间如何解析表达式,但是这可能会根据表达式中的 parameters/variables 及其值而改变。
"<Alter ObjectExpansion=\"ObjectProperties\" xmlns=\"http://schemas.microsoft.com/analysisservices/2003/engine\">
<Object>
<DatabaseID>Adventure Works DW Multidimensional 2012</DatabaseID>
<DataSourceID>AdventureWorksDW2012</DataSourceID>
</Object>
<ObjectDefinition>
<DataSource xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"RelationalDataSource\">
<ID>AdventureWorksDW2012</ID>
<Name>AdventureWorksDW2012</Name>
<ConnectionString>" + @[$Package::ConnectionString] + "</ConnectionString>
<ManagedProvider>System.Data.SqlClient</ManagedProvider>
<Timeout>PT30S</Timeout>
</DataSource>
</ObjectDefinition>
</Alter>"
我想在 SSIS 中处理 SSAS 多维数据集。有没有办法为 Datamart SQL 服务器数据源参数化连接字符串?我希望能够 set/configure SQL DevOps 中 SSAS 开发、测试和生产环境的服务器连接字符串。
目前,数据集市多维数据集在 SSAS 中具有硬编码的连接,SSAS 似乎没有像 SSIS 这样的项目连接字符串。
更新:
我在 SSIS 中听说过 ---> Analysis Services 执行 DDL 任务 --> 运行 一个用于更改数据库连接字符串的 XMLA 脚本。不确定如何执行此操作。
有人可以提供指导或 trim 了解此 XMLA 脚本以仅更改连接字符串(Sql 服务器和数据库名称)吗?只想改变必要的东西。我正在使用 SSAS 2016,因此可能需要更新架构 xmlns。
还收到此错误:有 SQL Server 2016 和 2016 SSAS
Errors in the metadata manager. The object definition supplied for the ALTER statement is of a different type that the object reference to be altered.
我该如何解决这个问题?
<Alter ObjectExpansion="ObjectProperties" xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>Adventure Works DW Multidimensional 2012</DatabaseID>
<DataSourceID>AdventureWorksDW2012</DataSourceID>
</Object>
<ObjectDefinition>
<DataSource xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="RelationalDataSource">
<ID>AdventureWorksDW2012</ID>
<Name>AdventureWorksDW2012</Name>
<ConnectionString>Data Source=fr-dwk-02;Initial Catalog=AdventureWorksDW2008R2;Integrated Security=True</ConnectionString>
<ManagedProvider>System.Data.SqlClient</ManagedProvider>
<Timeout>PT30S</Timeout>
</DataSource>
</ObjectDefinition>
</Alter>
以下来自 Microsoft 的 link 使用 2001-2003 架构并更改超时秒数。我只想更改数据库源和服务器。
这是针对 TFS,但要使用 SSIS:
转到 SSMS ---> 分析服务
脚本数据源 --> 更改为 ---> 新查询 Window
可以在这里更改数据源
将 Alter Scripts 命令复制到 SSIS 中的变量中,然后使用 'Execute Analysis Services DDL Task'
这可以通过将连接字符串 DDL 存储为 SSIS 字符串变量中的表达式并使用其中的参数(或变量)来保存更新的连接字符串来完成。在 Analysis Services 执行 DDL 任务上,将 SourceType
属性 更改为 Variable
和 select Source
字段中保存连接字符串表达式的变量。在下面的示例表达式中,包参数 ($Package::ConnectionString
) 在表达式中使用 +
符号连接。通过单击 SSDT 中 Variables
窗格的 Expression
字段下方的省略号,然后在双引号内输入表达式,可以为变量定义表达式。表达式中的所有双引号和反斜杠 (\
),不包括开始和结束双引号, 需要用反斜杠字符 进行转义。如果您以前没有在 SSIS 中使用过表达式,我建议您使用表达式生成器上的“评估表达式”按钮来验证表达式的结果。这将显示在执行期间如何解析表达式,但是这可能会根据表达式中的 parameters/variables 及其值而改变。
"<Alter ObjectExpansion=\"ObjectProperties\" xmlns=\"http://schemas.microsoft.com/analysisservices/2003/engine\">
<Object>
<DatabaseID>Adventure Works DW Multidimensional 2012</DatabaseID>
<DataSourceID>AdventureWorksDW2012</DataSourceID>
</Object>
<ObjectDefinition>
<DataSource xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"RelationalDataSource\">
<ID>AdventureWorksDW2012</ID>
<Name>AdventureWorksDW2012</Name>
<ConnectionString>" + @[$Package::ConnectionString] + "</ConnectionString>
<ManagedProvider>System.Data.SqlClient</ManagedProvider>
<Timeout>PT30S</Timeout>
</DataSource>
</ObjectDefinition>
</Alter>"