locked
Confusion about implementing Versions on MDS... RRS feed

  • Question

  • Hello,
    New to MS Master Data Services, starting to set up  a system, and I'm  a little confused regarding its Versioning feature.
    Our process is based on nightly ETL, so, every morning a new set of data arrives and there may or may not be new Master Data members.
    Should we be creating a new version for everyday's data processing, or should we not process Master Data on a daily basis but rather weekly, or on a longer period, and create version based on those imports instead? I don't believe our master data records change that often.
    However, if it ends up that we necessarily have to process MD nightly regardless (for whatever reasons,) is there a way to control Versions so that we're not creating a new version every day?
    Sorry if the question is unclear, I'm just beginning to understand MDS :)
    Thanks!

    -Björn Türoque
    Friday, January 20, 2012 3:26 PM

Answers

  • Hi Björn

    My apologies for the confusion. Calling the staging stored procedures and putting data into the staging tables (basically anything under the stg schema) is FULLY supported. I got the impression you were asking about doing a version copy using a SPROC. While that is possible, it is not supported. The steps in your versioning scenario are correct.

    Regards

    Arun


    Arunjeet Singh (Microsoft SQL Server Master Data Services)
    Friday, January 27, 2012 8:19 PM

All replies

  • Hi Björn

    Welcome to the world of MDS! I'd like to highlight two things here:

    1. Creating a new version for a model causes a whole new copy of ALL the data in the model to be created.

    2. If you turn transaction logging on while staging, every change to the entity will be logged as a transaction. Transaction logging is on by default when you use Excel or the web UI to add/edit members.

    In light of this, it seems like creating a new version every night might not be the best idea (since it would be very storage intensive). However, you might have your own reasons for creating nightly versions. At the end of the day it depends on how much data you have in total and why it is that you are trying to version the data. If you just want to be able to track changes to members, transactions do exactly that without having to create versions.

    I hope that helps your understanding

    Arun


    Arunjeet Singh (Microsoft SQL Server Master Data Services)
    Thursday, January 26, 2012 2:10 AM
  • Thank you Arunjeet.

     

    I have two further questions:

    1: If I use transactions to track changes then how can I key into those changes from one place as would be possible using Versions? For example I would want to subscribe to new changes, then I could use the Version key to get them all. How would that be done with just transactions? And what about applying business rules to transactions? This might not be the best way to go.

     

    2: Can Versions be created dynamically through an SP call I can create them whenever I want?

     

    Cheers!


    -Björn Türoque
    Thursday, January 26, 2012 12:21 PM
  • 1. To see transactions for a version, go into Version Management on the home page and click on the Transactions menu on the top. You can also use the TransactionsGet API to do the same thing programatically.

    2. They can, however calling SPROCS directly is not supported. A better way is to use the API to do this. The relevant API is called VersionCopy.

     

    Regards

    Arun


    Arunjeet Singh (Microsoft SQL Server Master Data Services)
    Thursday, January 26, 2012 9:44 PM
  • thx again arunjeet.

     

    I'm sorry, I'd like to get this clear. All the examples I've seen from MS' sqlblog.com say that we should use SPROCS to stage data, but you're saying that's not supported?

     

    And just to be clear on my versioning scenario...

    1: I have a situation where a daily version is required

    2: I make a call first to copyversion, to make a new version

    3: Then I stage the new data to that new version

    is this the correct coding workflow for versioning?

     

    BOL states the role and importance of Versions in the system but there aren't any practical laid out examples of using version mgmt from a coding perspective. This is why I'd like to know what the correct set of events is to code dynamic/programmativ versioning of mds data.

     

    thank you for your patience Arunjeet.


    -Björn Türoque
    Friday, January 27, 2012 1:13 PM
  • Hi Björn

    My apologies for the confusion. Calling the staging stored procedures and putting data into the staging tables (basically anything under the stg schema) is FULLY supported. I got the impression you were asking about doing a version copy using a SPROC. While that is possible, it is not supported. The steps in your versioning scenario are correct.

    Regards

    Arun


    Arunjeet Singh (Microsoft SQL Server Master Data Services)
    Friday, January 27, 2012 8:19 PM