SSAS 2019 batch processing

Justin 1 Reputation point
2020-12-09T21:38:17.707+00:00

I get following error when I process my Cubes in two databases in same batch job. I include objects from both databases in same batch job. This used to work in SQL 2008 R2 but same job is failing after migrating Cubes to 2019 SSAS.

    <Error ErrorCode="3239314042" Description="Errors in the metadata manager. Processing of objects from multiple databases in a single processing request is not supported." Source="Microsoft Analysis Services" HelpFile="" />

Is that a limitation ? Or some settings issue?

Thanks
Justin

SQL Server Analysis Services
SQL Server Analysis Services
A Microsoft online analytical data engine used in decision support and business analytics, providing the analytical data for business reports and client applications such as Power BI, Excel, Reporting Services reports, and other data visualization tools.
1,344 questions
SQL Server | Other
0 comments No comments
{count} votes

4 answers

Sort by: Most helpful
  1. Lukas Yu -MSFT 5,826 Reputation points
    2020-12-21T02:08:35.533+00:00

    Try this :

    <Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">;
    <Parallel>
    <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">;
    <Object> <DatabaseID>MyDB1</DatabaseID>
    <CubeID>MyCube</CubeID>
    <MeasureGroupID>abcdefg1</MeasureGroupID>
    <PartitionID>Current abcdefg1</PartitionID>
    </Object>
    <Type>ProcessFull</Type>
    <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
    </Process>
    </Parallel>
    <Parallel>
    <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; >
    <Object> <DatabaseID>MyDB1</DatabaseID>
    <CubeID>MyCube</CubeID>
    <MeasureGroupID>abcdefg2</MeasureGroupID>
    <PartitionID>Current abcdefg2</PartitionID> </Object>
    <Type>ProcessFull</Type>
    <WriteBackTableCreation>UseExisting</WriteBackTableCreation> </Process>
    </Parallel>
    <Parallel>
    <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">;
    <Object> <DatabaseID>MyDB2</DatabaseID>
    <CubeID>MyCube</CubeID> <MeasureGroupID>xyzqwq3</MeasureGroupID>
    <PartitionID>Current xyzqwq3</PartitionID> </Object> <Type>ProcessFull</Type>
    <WriteBackTableCreation>UseExisting</WriteBackTableCreation> </Process>
    </Parallel>
    <Parallel>
    <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; > <Object> <DatabaseID>MyDB2</DatabaseID>
    <CubeID>MyCube</CubeID>
    <MeasureGroupID>xyzqwq4</MeasureGroupID>
    <PartitionID>Current xyzqwq4</PartitionID> </Object>
    <Type>ProcessFull</Type>
    <WriteBackTableCreation>UseExisting</WriteBackTableCreation> </Process>
    </Parallel>
    </Batch>
    
    1 person found this answer helpful.
    0 comments No comments

  2. Tom Jebo 2,336 Reputation points Microsoft Employee Moderator
    2020-12-11T22:38:51.487+00:00

    Hi Justin,

    The purpose of the openspecs-* tags is for discussing implementations of the Open Specification documents here:

    https://learn.microsoft.com/en-us/openspecs/main/ms-openspeclp/3589baea-5b22-48f2-9d43-f5bea4960ddb

    Since your question does not pertain to one of these specifications, I've removed the openspecs-sqlserver tag and added the sql-server-general tag. Hopefully this will get your post the proper attention.

    If I've misunderstood your question and you believe this is related to the Open Specifications documents, please clarify, providing the document name and section with which you have the question or issue.

    Best regards,
    Tom Jebo
    Sr Escalation Engineer
    Microsoft Open Specifications

    0 comments No comments

  3. Lukas Yu -MSFT 5,826 Reputation points
    2020-12-14T07:22:00.26+00:00

    Hi,

    I tested in my SSAS 2019 , I batch processed full two multidimensional database in one script.

    It seems works fine.

    Check in your script that for each database session there need to be one "<Parallel>" session.

    You could try remake the script in new environment . Follow : Schedule SSAS Administrative Tasks with SQL Server Agent. If it still not work , you could share the code with us, we could check it with you.

    Besides batch process, you can create an SSIS Package to launch them in parallel. There is a component to process cubes. Then, run the package from SQL Server Agent

    Regards,
    Lukas


    If the answer is helpful, please click "Accept Answer" and upvote it.

    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.
    What can I do if my transaction log is full?--- Hot issues November
    How to convert Profiler trace into a SQL Server table -- Hot issues November

    0 comments No comments

  4. Justin 1 Reputation point
    2020-12-18T00:49:09.293+00:00

    I generate XML file like below and input to ProceeeCube.
    You can see I have two databases MyDB1 and MyDB2, both are deployed to same SSAS instance in 2019. It used to work in 2008 R, after migration, I have to generate two separate xml and create two Cubes process

    <Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
    <Parallel>
    <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Object> <DatabaseID>MyDB1</DatabaseID>
    <CubeID>MyCube</CubeID>
    <MeasureGroupID>abcdefg1</MeasureGroupID>
    <PartitionID>Current abcdefg1</PartitionID>
    </Object>
    <Type>ProcessFull</Type>
    <WriteBackTableCreation>UseExisting</WriteBackTableCreation>
    </Process>
    <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
    <Object> <DatabaseID>MyDB1</DatabaseID>
    <CubeID>MyCube</CubeID>
    <MeasureGroupID>abcdefg2</MeasureGroupID>
    <PartitionID>Current abcdefg2</PartitionID> </Object>
    <Type>ProcessFull</Type>
    <WriteBackTableCreation>UseExisting</WriteBackTableCreation> </Process>
    <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Object> <DatabaseID>MyDB2</DatabaseID>
    <CubeID>MyCube</CubeID> <MeasureGroupID>xyzqwq3</MeasureGroupID>
    <PartitionID>Current xyzqwq3</PartitionID> </Object> <Type>ProcessFull</Type>
    <WriteBackTableCreation>UseExisting</WriteBackTableCreation> </Process>
    <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <Object> <DatabaseID>MyDB2</DatabaseID>
    <CubeID>MyCube</CubeID>
    <MeasureGroupID>xyzqwq4</MeasureGroupID>
    <PartitionID>Current xyzqwq4</PartitionID> </Object>
    <Type>ProcessFull</Type>
    <WriteBackTableCreation>UseExisting</WriteBackTableCreation> </Process>
    </Parallel>
    </Batch>

    0 comments No comments

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.