【问题标题】:Change the cube Data source username and password dynamically in SSAS在 SSAS 中动态更改多维数据集数据源用户名和密码
【发布时间】:2017-01-27 02:41:58
【问题描述】:

我已经在 SSAS 服务器中创建并部署了带有 windows 身份验证的多维数据集。

但是每 45 天,根据客户的要求,oracle 源数据库密码将被更改并存储在审计表中的密码信息。

现在,我需要每 45 天自动更改部署在服务器中的现有多维数据集的密码。不影响进程。

请帮助我。

【问题讨论】:

  • .netssis跟这个问题有什么关系?
  • 可以使用 SSIS 编写脚本任务。这就是标记 SSIS 和 .Net 的原因

标签: .net ssis ssas


【解决方案1】:

好的,解决此问题的一种方法是向处理您的多维数据集的作业添加一个步骤。

该步骤将出现在多维数据集处理步骤之前,它将执行一个应用程序(控制台或 ssis),该应用程序将读取审计表以查看当前的 oracle 密码,然后修改多维数据集的数据源节点以使用oracle 连接的当前密码。

【讨论】:

    【解决方案2】:

    是的,您可以使用 SSIS 做到这一点。
    假设您在启动 SSIS 包时知道密码。创建一个包,使用足够的用户权限定义与您的 SSAS 服务器的连接。使用以下表达式创建一个带密码的字符串用户变量和一个字符串用户变量 XMLA_Change_Pwd:

        "<Alter AllowCreate=""true"" ObjectExpansion=""ObjectProperties"" xmlns=""http://schemas.microsoft.com/analysisservices/2003/engine"">
      <Object>
        <DatabaseID>You_SSAS_DB</DatabaseID>
        <DataSourceID>Your_DataSource</DataSourceID>
      </Object>
      <ObjectDefinition>
        <DataSource xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:ddl2=""http://schemas.microsoft.com/analysisservices/2003/engine/2"" xmlns:ddl2_2=""http://schemas.microsoft.com/analysisservices/2003/engine/2/2"" xmlns:ddl100_100=""http://schemas.microsoft.com/analysisservices/2008/engine/100/100"" xmlns:ddl200=""http://schemas.microsoft.com/analysisservices/2010/engine/200"" xmlns:ddl200_200=""http://schemas.microsoft.com/analysisservices/2010/engine/200/200"" xmlns:ddl300=""http://schemas.microsoft.com/analysisservices/2011/engine/300"" xmlns:ddl300_300=""http://schemas.microsoft.com/analysisservices/2011/engine/300/300"" xmlns:ddl400=""http://schemas.microsoft.com/analysisservices/2012/engine/400"" xmlns:ddl400_400=""http://schemas.microsoft.com/analysisservices/2012/engine/400/400"" xsi:type=""RelationalDataSource"">
          <ID>DataSource ID</ID>
          <Name>DataSource Name</Name>
          <Description>Description</Description>
          <ConnectionString>...Put your connection string here...</ConnectionString>
          <ImpersonationInfo>
            <ImpersonationMode>ImpersonateAccount</ImpersonationMode>
            <Account>domain\login</Account>
              <Password>"+@[User::Password]+"</Password>
          </ImpersonationInfo>
          <Timeout>PT10M</Timeout>
          <MaxActiveConnections>120</MaxActiveConnections>
        </DataSource>
      </ObjectDefinition>
    </Alter>"  
    

    修改此示例以匹配您自己的数据源,或者更好地 - 从 SSMS 为 DataSource 生成 Alter XMLA 并使用表达式 +@[User::Password]+ 对其进行修改,如上所示。 然后添加Analysis Services DDL Task 并指定 SourceType - 变量和 Source - User::XMLA_Change_Pwd。

    【讨论】:

    • 感谢您的回复 Ferdipux。我没有更改 ImpersonationInfo,我必须更改 ConnectionString 参数(用户 ID 和密码)。这可以做同样的事情还是任何元数据表都可以做。
    • @jay,SSAS 不会将密码保存在连接字符串中。因此,如果您使用特定帐户访问 Oracle,则必须使用 ImpersonationInfo - ImpersonateAccount。即使您只想更改连接字符串 - 您也必须指定 DataSource 的所有属性。这是由于 XMLA 设计。
    • @Ferdipux 您可以按照上面的建议进行操作,但将密码放在连接字符串上。即使您为数据源编写脚本,这条信息也不会显示,但它会被保存。
    猜你喜欢
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 1970-01-01
    相关资源
    最近更新 更多