SSIS任务:处理SSAS多维数据集和参数连接字符串

时间:2019-04-07 19:09:06

标签: sql-server ssis ssas sql-server-2016 xmla

我想在SSIS中处理SSAS多维数据集。有没有一种方法可以为Datamart SQL Server数据源参数化连接字符串?我希望能够为Devops中的SSAS开发,测试和生产环境设置/配置SQL Server连接字符串。

当前,数据集市多维数据集具有在SSAS中进行硬编码的连接,SSAS似乎没有像SSIS这样的项目连接字符串。

更新:

我在SSIS中听到了一些有关---> Analysis Services执行DDL任务->运行XMLA脚本来更改数据库连接字符串的信息。不确定如何执行此操作。

有人可以提供指导或缩减此XMLA脚本以仅更改连接字符串(SQL服务器和数据库名称)吗?只想只更改必要的内容。我正在使用SSAS 2016,因此可能需要更新架构xmlns。

也收到此错误:使用SQL Server 2016和2016 SSAS

  

元数据管理器中的错误。为ALTER语句提供的对象定义与要更改的对象引用的类型不同。

我该如何解决?

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

image

下面来自Microsoft的链接使用2001-2003架构并更改超时秒数。我只想更改数据库源和服务器。

这是针对TFS的,但是要利用SSIS:

2 个答案:

答案 0 :(得分:3)

转到SSMS ---> Analysis Services

脚本数据源->更改为--->新查询窗口

enter image description here

可以在此处更改数据源

enter image description here

将Alter Scripts命令复制到SSIS中的变量中,并使用“ Execute Analysis Services DDL任务”

enter image description here

答案 1 :(得分:3)

这可以通过将连接字符串DDL作为表达式存储在SSIS字符串变量中并在其中使用参数(或变量)来保存更新的连接字符串来完成。在Analysis Services的执行DDL任务上,将SourceType属性更改为Variable,然后在Source字段中选择包含连接字符串表达式的变量。在下面的示例表达式中,使用$Package::ConnectionString符号将包参数(+)串联在表达式中。可以通过以下方式为变量定义表达式:单击SSDT中Expression窗格的Variables字段下方的省略号,然后在双引号中输入表达式。表达式中的所有双引号和反斜杠(\),不包括开头和结尾的双引号,都需要使用反斜杠字符进行转义。如果您以前从未在SSIS中使用过表达式,则建议使用“表达式构建器”上的“评估表达式”按钮来验证表达式的结果。这将显示在执行过程中如何解析表达式,但是它可以根据表达式中的参数/变量及其值而改变。

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