SSIS - best practices for connection managers — compose out of parameters?Passing connection string from C# to SSIS packageSSIS connection manager login failsConfiguring SSIS Package to fetch connection string from the database instead of hardcoding in the connection managerSSIS 2012 Passing Parameters / Passwords with Dont Save SensitiveCannot configure OLE DB connection manager using a sensitive parameter in SSIS 2012Cannot reference or call a SSIS project level parameter from Script TaskSSAS “MSOLAP100” Connection managerSSIS connection parameter based on parameter/variableSSIS Connection Managers - SQL Auth in development, Integrated in ProductionAzure SQL Database Connection Manager in On-Premises SSIS Package

Was any UN Security Council vote triple-vetoed?

Why "Having chlorophyll without photosynthesis is actually very dangerous" and "like living with a bomb"?

Codimension of non-flat locus

Theorems that impeded progress

Why doesn't H₄O²⁺ exist?

How to format long polynomial?

Roll the carpet

Today is the Center

Accidentally leaked the solution to an assignment, what to do now? (I'm the prof)

meaning of に in 本当に?

Is it inappropriate for a student to attend their mentor's dissertation defense?

Watching something be written to a file live with tail

Can a Cauchy sequence converge for one metric while not converging for another?

RSA: Danger of using p to create q

Why do I get two different answers for this counting problem?

How is it possible to have an ability score that is less than 3?

Why can't I see bouncing of a switch on an oscilloscope?

NMaximize is not converging to a solution

Rock identification in KY

Doing something right before you need it - expression for this?

What's the output of a record needle playing an out-of-speed record

Do infinite dimensional systems make sense?

LWC SFDX source push error TypeError: LWC1009: decl.moveTo is not a function

Important Resources for Dark Age Civilizations?



SSIS - best practices for connection managers — compose out of parameters?


Passing connection string from C# to SSIS packageSSIS connection manager login failsConfiguring SSIS Package to fetch connection string from the database instead of hardcoding in the connection managerSSIS 2012 Passing Parameters / Passwords with Dont Save SensitiveCannot configure OLE DB connection manager using a sensitive parameter in SSIS 2012Cannot reference or call a SSIS project level parameter from Script TaskSSAS “MSOLAP100” Connection managerSSIS connection parameter based on parameter/variableSSIS Connection Managers - SQL Auth in development, Integrated in ProductionAzure SQL Database Connection Manager in On-Premises SSIS Package






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








3















I've worked a lot with Pentaho PDI so some obvious things jump out at me.



I'll call Connection Managers "CMs" from here on out.



Obvious, Project CMs > Package CMs, for extensability/ re-usability. Seems a rare case indeed where you need a Package-level CM.



But I'm wondering another best practice. Should each Project CM itself be composed of variables? (or parameters I guess).



Let's talk in concrete terms. There are specific database sources. Let's call two of them in use Finance2000 and ETL_Log_db. These have specific connection strings (password, source, etc).



Now if you have 50 packages pulling from Finance2000 and also using ETL_Log_db ... well ... what happens if the databases change? (host, name, user, password?)



Say it's now Finance3000.



Well I guess you can go into Finance2000 and change the source, specs, and even the name itself --- everything should work then, right?



Or should you simply build a project level database called "FinanceX" or whatever and make it comprised of parameters so the connectoin string is something like @Source + @ credentials + @ whatever?



Or is that simply redundant?



I can see one benefit of the parameter method is that you can change the "logging database" on the fly even within the package itself during execution, instead of passing parameters merely at runtime. I think. I don't know. I don't have a mountain of experience with SSIS yet.










share|improve this question




























    3















    I've worked a lot with Pentaho PDI so some obvious things jump out at me.



    I'll call Connection Managers "CMs" from here on out.



    Obvious, Project CMs > Package CMs, for extensability/ re-usability. Seems a rare case indeed where you need a Package-level CM.



    But I'm wondering another best practice. Should each Project CM itself be composed of variables? (or parameters I guess).



    Let's talk in concrete terms. There are specific database sources. Let's call two of them in use Finance2000 and ETL_Log_db. These have specific connection strings (password, source, etc).



    Now if you have 50 packages pulling from Finance2000 and also using ETL_Log_db ... well ... what happens if the databases change? (host, name, user, password?)



    Say it's now Finance3000.



    Well I guess you can go into Finance2000 and change the source, specs, and even the name itself --- everything should work then, right?



    Or should you simply build a project level database called "FinanceX" or whatever and make it comprised of parameters so the connectoin string is something like @Source + @ credentials + @ whatever?



    Or is that simply redundant?



    I can see one benefit of the parameter method is that you can change the "logging database" on the fly even within the package itself during execution, instead of passing parameters merely at runtime. I think. I don't know. I don't have a mountain of experience with SSIS yet.










    share|improve this question
























      3












      3








      3








      I've worked a lot with Pentaho PDI so some obvious things jump out at me.



      I'll call Connection Managers "CMs" from here on out.



      Obvious, Project CMs > Package CMs, for extensability/ re-usability. Seems a rare case indeed where you need a Package-level CM.



      But I'm wondering another best practice. Should each Project CM itself be composed of variables? (or parameters I guess).



      Let's talk in concrete terms. There are specific database sources. Let's call two of them in use Finance2000 and ETL_Log_db. These have specific connection strings (password, source, etc).



      Now if you have 50 packages pulling from Finance2000 and also using ETL_Log_db ... well ... what happens if the databases change? (host, name, user, password?)



      Say it's now Finance3000.



      Well I guess you can go into Finance2000 and change the source, specs, and even the name itself --- everything should work then, right?



      Or should you simply build a project level database called "FinanceX" or whatever and make it comprised of parameters so the connectoin string is something like @Source + @ credentials + @ whatever?



      Or is that simply redundant?



      I can see one benefit of the parameter method is that you can change the "logging database" on the fly even within the package itself during execution, instead of passing parameters merely at runtime. I think. I don't know. I don't have a mountain of experience with SSIS yet.










      share|improve this question














      I've worked a lot with Pentaho PDI so some obvious things jump out at me.



      I'll call Connection Managers "CMs" from here on out.



      Obvious, Project CMs > Package CMs, for extensability/ re-usability. Seems a rare case indeed where you need a Package-level CM.



      But I'm wondering another best practice. Should each Project CM itself be composed of variables? (or parameters I guess).



      Let's talk in concrete terms. There are specific database sources. Let's call two of them in use Finance2000 and ETL_Log_db. These have specific connection strings (password, source, etc).



      Now if you have 50 packages pulling from Finance2000 and also using ETL_Log_db ... well ... what happens if the databases change? (host, name, user, password?)



      Say it's now Finance3000.



      Well I guess you can go into Finance2000 and change the source, specs, and even the name itself --- everything should work then, right?



      Or should you simply build a project level database called "FinanceX" or whatever and make it comprised of parameters so the connectoin string is something like @Source + @ credentials + @ whatever?



      Or is that simply redundant?



      I can see one benefit of the parameter method is that you can change the "logging database" on the fly even within the package itself during execution, instead of passing parameters merely at runtime. I think. I don't know. I don't have a mountain of experience with SSIS yet.







      sql-server ssis database-connection






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Mar 21 at 22:52









      user45867user45867

      3891616




      3891616






















          2 Answers
          2






          active

          oldest

          votes


















          1














          SSIS, starting from version 2012, has SSIS Catalog DB. You can create all your 50 packages in one Project, and all these packages share the same Project Connection Managers.

          Then you deploy this Project into the SSIS Catalog; the Project automatically exposes Connection Manager parameters with CM prefix. The CM parameters are parts of the Connection Manager definition.
          enter image description here



          In the SSIS Catalog you can create so called Environments. In the Environment you define variables with name and datatype, and store its value.

          Then - the most interesting part - you can associate the Environment and the uploaded Project. This allows you to bind project parameter with environment variable.
          enter image description here



          At Package Execution - you have to specify which Environment to use when specifying Connection Strings. Yes, you can have several Environments in the Catalog, and choose when starting Package.

          Cool, isn't it?

          Moreover, passwords are stored encrypted, so none can copy it. Values of these Environment Variables can be configured by support engineers who has no knowledge of SSIS packages.

          More Info on SSIS Catalog and Environments from MS Docs.






          share|improve this answer

























          • Thanks for the info. This is probably one of those things where I just have a look and tinker to fully understand but makes sense.

            – user45867
            Mar 22 at 15:11


















          0














          I'll give my fair share of experience.



          I recently had a similar experience at work, our 2 main databases name's changed, and i had no issue, or downtime on the schedules.



          The model we use is not the best, but for this, and for other reasons, it is quite confortable to work with. We use BAT files to pass named parameters into a "Master" Job, and basically depending on 2 parameters, the Job runs on an alternate Database/Host.



          The model we use is, in every KTR/KJB we use a variable $host and $dbname, these parameters are passed with each BAT file. So when we had to change the names of the hosts and databases, it was a simple Replace All Text Match in NotePad++, and done, 2.000+ BAT Files fixed, and no downtime.



          Having a variable for the Host/DB Name for both Client Connection and Logging Connection lets you have that flexibility when things change radically.



          You can also use the kettle.properties file for the logging connection.






          share|improve this answer























          • Thanks for the info. To be clear, I understand the Pentaho system. Not as much SSIS. With Pentaho, yes you can initialize certain variables with the kettle.properties file (usually database connections). In Pentaho, I have definitely abstracted the database names "Internal BI DB" and filled them with variables host, username, password -- so if it changes (and it has) -- I either change kettle.properties or I just use a "set variable" job in the master job to apply all changes.

            – user45867
            Mar 22 at 15:14











          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55290416%2fssis-best-practices-for-connection-managers-compose-out-of-parameters%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          2 Answers
          2






          active

          oldest

          votes








          2 Answers
          2






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          1














          SSIS, starting from version 2012, has SSIS Catalog DB. You can create all your 50 packages in one Project, and all these packages share the same Project Connection Managers.

          Then you deploy this Project into the SSIS Catalog; the Project automatically exposes Connection Manager parameters with CM prefix. The CM parameters are parts of the Connection Manager definition.
          enter image description here



          In the SSIS Catalog you can create so called Environments. In the Environment you define variables with name and datatype, and store its value.

          Then - the most interesting part - you can associate the Environment and the uploaded Project. This allows you to bind project parameter with environment variable.
          enter image description here



          At Package Execution - you have to specify which Environment to use when specifying Connection Strings. Yes, you can have several Environments in the Catalog, and choose when starting Package.

          Cool, isn't it?

          Moreover, passwords are stored encrypted, so none can copy it. Values of these Environment Variables can be configured by support engineers who has no knowledge of SSIS packages.

          More Info on SSIS Catalog and Environments from MS Docs.






          share|improve this answer

























          • Thanks for the info. This is probably one of those things where I just have a look and tinker to fully understand but makes sense.

            – user45867
            Mar 22 at 15:11















          1














          SSIS, starting from version 2012, has SSIS Catalog DB. You can create all your 50 packages in one Project, and all these packages share the same Project Connection Managers.

          Then you deploy this Project into the SSIS Catalog; the Project automatically exposes Connection Manager parameters with CM prefix. The CM parameters are parts of the Connection Manager definition.
          enter image description here



          In the SSIS Catalog you can create so called Environments. In the Environment you define variables with name and datatype, and store its value.

          Then - the most interesting part - you can associate the Environment and the uploaded Project. This allows you to bind project parameter with environment variable.
          enter image description here



          At Package Execution - you have to specify which Environment to use when specifying Connection Strings. Yes, you can have several Environments in the Catalog, and choose when starting Package.

          Cool, isn't it?

          Moreover, passwords are stored encrypted, so none can copy it. Values of these Environment Variables can be configured by support engineers who has no knowledge of SSIS packages.

          More Info on SSIS Catalog and Environments from MS Docs.






          share|improve this answer

























          • Thanks for the info. This is probably one of those things where I just have a look and tinker to fully understand but makes sense.

            – user45867
            Mar 22 at 15:11













          1












          1








          1







          SSIS, starting from version 2012, has SSIS Catalog DB. You can create all your 50 packages in one Project, and all these packages share the same Project Connection Managers.

          Then you deploy this Project into the SSIS Catalog; the Project automatically exposes Connection Manager parameters with CM prefix. The CM parameters are parts of the Connection Manager definition.
          enter image description here



          In the SSIS Catalog you can create so called Environments. In the Environment you define variables with name and datatype, and store its value.

          Then - the most interesting part - you can associate the Environment and the uploaded Project. This allows you to bind project parameter with environment variable.
          enter image description here



          At Package Execution - you have to specify which Environment to use when specifying Connection Strings. Yes, you can have several Environments in the Catalog, and choose when starting Package.

          Cool, isn't it?

          Moreover, passwords are stored encrypted, so none can copy it. Values of these Environment Variables can be configured by support engineers who has no knowledge of SSIS packages.

          More Info on SSIS Catalog and Environments from MS Docs.






          share|improve this answer















          SSIS, starting from version 2012, has SSIS Catalog DB. You can create all your 50 packages in one Project, and all these packages share the same Project Connection Managers.

          Then you deploy this Project into the SSIS Catalog; the Project automatically exposes Connection Manager parameters with CM prefix. The CM parameters are parts of the Connection Manager definition.
          enter image description here



          In the SSIS Catalog you can create so called Environments. In the Environment you define variables with name and datatype, and store its value.

          Then - the most interesting part - you can associate the Environment and the uploaded Project. This allows you to bind project parameter with environment variable.
          enter image description here



          At Package Execution - you have to specify which Environment to use when specifying Connection Strings. Yes, you can have several Environments in the Catalog, and choose when starting Package.

          Cool, isn't it?

          Moreover, passwords are stored encrypted, so none can copy it. Values of these Environment Variables can be configured by support engineers who has no knowledge of SSIS packages.

          More Info on SSIS Catalog and Environments from MS Docs.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Mar 22 at 15:45

























          answered Mar 22 at 14:37









          FerdipuxFerdipux

          2,95511021




          2,95511021












          • Thanks for the info. This is probably one of those things where I just have a look and tinker to fully understand but makes sense.

            – user45867
            Mar 22 at 15:11

















          • Thanks for the info. This is probably one of those things where I just have a look and tinker to fully understand but makes sense.

            – user45867
            Mar 22 at 15:11
















          Thanks for the info. This is probably one of those things where I just have a look and tinker to fully understand but makes sense.

          – user45867
          Mar 22 at 15:11





          Thanks for the info. This is probably one of those things where I just have a look and tinker to fully understand but makes sense.

          – user45867
          Mar 22 at 15:11













          0














          I'll give my fair share of experience.



          I recently had a similar experience at work, our 2 main databases name's changed, and i had no issue, or downtime on the schedules.



          The model we use is not the best, but for this, and for other reasons, it is quite confortable to work with. We use BAT files to pass named parameters into a "Master" Job, and basically depending on 2 parameters, the Job runs on an alternate Database/Host.



          The model we use is, in every KTR/KJB we use a variable $host and $dbname, these parameters are passed with each BAT file. So when we had to change the names of the hosts and databases, it was a simple Replace All Text Match in NotePad++, and done, 2.000+ BAT Files fixed, and no downtime.



          Having a variable for the Host/DB Name for both Client Connection and Logging Connection lets you have that flexibility when things change radically.



          You can also use the kettle.properties file for the logging connection.






          share|improve this answer























          • Thanks for the info. To be clear, I understand the Pentaho system. Not as much SSIS. With Pentaho, yes you can initialize certain variables with the kettle.properties file (usually database connections). In Pentaho, I have definitely abstracted the database names "Internal BI DB" and filled them with variables host, username, password -- so if it changes (and it has) -- I either change kettle.properties or I just use a "set variable" job in the master job to apply all changes.

            – user45867
            Mar 22 at 15:14















          0














          I'll give my fair share of experience.



          I recently had a similar experience at work, our 2 main databases name's changed, and i had no issue, or downtime on the schedules.



          The model we use is not the best, but for this, and for other reasons, it is quite confortable to work with. We use BAT files to pass named parameters into a "Master" Job, and basically depending on 2 parameters, the Job runs on an alternate Database/Host.



          The model we use is, in every KTR/KJB we use a variable $host and $dbname, these parameters are passed with each BAT file. So when we had to change the names of the hosts and databases, it was a simple Replace All Text Match in NotePad++, and done, 2.000+ BAT Files fixed, and no downtime.



          Having a variable for the Host/DB Name for both Client Connection and Logging Connection lets you have that flexibility when things change radically.



          You can also use the kettle.properties file for the logging connection.






          share|improve this answer























          • Thanks for the info. To be clear, I understand the Pentaho system. Not as much SSIS. With Pentaho, yes you can initialize certain variables with the kettle.properties file (usually database connections). In Pentaho, I have definitely abstracted the database names "Internal BI DB" and filled them with variables host, username, password -- so if it changes (and it has) -- I either change kettle.properties or I just use a "set variable" job in the master job to apply all changes.

            – user45867
            Mar 22 at 15:14













          0












          0








          0







          I'll give my fair share of experience.



          I recently had a similar experience at work, our 2 main databases name's changed, and i had no issue, or downtime on the schedules.



          The model we use is not the best, but for this, and for other reasons, it is quite confortable to work with. We use BAT files to pass named parameters into a "Master" Job, and basically depending on 2 parameters, the Job runs on an alternate Database/Host.



          The model we use is, in every KTR/KJB we use a variable $host and $dbname, these parameters are passed with each BAT file. So when we had to change the names of the hosts and databases, it was a simple Replace All Text Match in NotePad++, and done, 2.000+ BAT Files fixed, and no downtime.



          Having a variable for the Host/DB Name for both Client Connection and Logging Connection lets you have that flexibility when things change radically.



          You can also use the kettle.properties file for the logging connection.






          share|improve this answer













          I'll give my fair share of experience.



          I recently had a similar experience at work, our 2 main databases name's changed, and i had no issue, or downtime on the schedules.



          The model we use is not the best, but for this, and for other reasons, it is quite confortable to work with. We use BAT files to pass named parameters into a "Master" Job, and basically depending on 2 parameters, the Job runs on an alternate Database/Host.



          The model we use is, in every KTR/KJB we use a variable $host and $dbname, these parameters are passed with each BAT file. So when we had to change the names of the hosts and databases, it was a simple Replace All Text Match in NotePad++, and done, 2.000+ BAT Files fixed, and no downtime.



          Having a variable for the Host/DB Name for both Client Connection and Logging Connection lets you have that flexibility when things change radically.



          You can also use the kettle.properties file for the logging connection.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Mar 22 at 13:47









          Cristian CurtiCristian Curti

          493410




          493410












          • Thanks for the info. To be clear, I understand the Pentaho system. Not as much SSIS. With Pentaho, yes you can initialize certain variables with the kettle.properties file (usually database connections). In Pentaho, I have definitely abstracted the database names "Internal BI DB" and filled them with variables host, username, password -- so if it changes (and it has) -- I either change kettle.properties or I just use a "set variable" job in the master job to apply all changes.

            – user45867
            Mar 22 at 15:14

















          • Thanks for the info. To be clear, I understand the Pentaho system. Not as much SSIS. With Pentaho, yes you can initialize certain variables with the kettle.properties file (usually database connections). In Pentaho, I have definitely abstracted the database names "Internal BI DB" and filled them with variables host, username, password -- so if it changes (and it has) -- I either change kettle.properties or I just use a "set variable" job in the master job to apply all changes.

            – user45867
            Mar 22 at 15:14
















          Thanks for the info. To be clear, I understand the Pentaho system. Not as much SSIS. With Pentaho, yes you can initialize certain variables with the kettle.properties file (usually database connections). In Pentaho, I have definitely abstracted the database names "Internal BI DB" and filled them with variables host, username, password -- so if it changes (and it has) -- I either change kettle.properties or I just use a "set variable" job in the master job to apply all changes.

          – user45867
          Mar 22 at 15:14





          Thanks for the info. To be clear, I understand the Pentaho system. Not as much SSIS. With Pentaho, yes you can initialize certain variables with the kettle.properties file (usually database connections). In Pentaho, I have definitely abstracted the database names "Internal BI DB" and filled them with variables host, username, password -- so if it changes (and it has) -- I either change kettle.properties or I just use a "set variable" job in the master job to apply all changes.

          – user45867
          Mar 22 at 15:14

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55290416%2fssis-best-practices-for-connection-managers-compose-out-of-parameters%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

          Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

          Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript