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>"