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;
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
add a comment |
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
add a comment |
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
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
sql-server ssis database-connection
asked Mar 21 at 22:52
user45867user45867
3891616
3891616
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
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.
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.
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.
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
add a comment |
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.
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
add a comment |
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
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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.
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.
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.
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
add a comment |
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.
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.
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.
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
add a comment |
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.
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.
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.
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.
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.
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.
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
add a comment |
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
add a comment |
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.
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
add a comment |
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.
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
add a comment |
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.
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.
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
add a comment |
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
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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