我想在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>
下面来自Microsoft的链接使用2001-2003架构并更改超时秒数。我只想更改数据库源和服务器。
这是针对TFS的,但是要利用SSIS:
答案 0 :(得分:3)
转到SSMS ---> Analysis Services
脚本数据源->更改为--->新查询窗口
可以在此处更改数据源
将Alter Scripts命令复制到SSIS中的变量中,并使用“ Execute Analysis Services DDL任务”
答案 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>"