Showing posts with label packages. Show all posts
Showing posts with label packages. Show all posts

Thursday, March 22, 2012

Deployment question: SQLDB - SSIS on different boxes with SQL Agent for scheduling

I am interested in how you guys are deploying your packages.
I am running SQL Server Integration Service(SSIS) and SQL Server Database Service (SQLDB) on different boxes. I can't have SSIS installed on SQLDB box because in my prod. environment, the DB box has *just* DB - no services or no other fancy stuff. So far so good.

Now, if I want to schedule the SSIS packages (deployed on MSDB) to run periodically, I need to create an SQL Agent job (or everyone else here is using a Windows scheduler instead?). SQL Agent has dependency on SQLDB and so it goes on the SQLDB box, correct? Can I run job steps to execute SSIS packages via remote SSIS service (on another box)? If not, I cannot separate SSIS and SQLDB on two boxes and have SQL Agent run the packages periodically, right?

What am I missing?

thanks,
Nitesh

Is there a reason you cannot install DB on the IS box? That would be best for your case as I understand it. You could also keep your packages on your IS box then as well.

To answer your question, there is no current IS feature for running packages remotely. Please see this thread:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=18177&SiteID=1

|||

KirkHaselden wrote:

Is there a reason you cannot install DB on the IS box? That would be best for your case as I understand it. You could also keep your packages on your IS box then as well.


There are two reasons:

Hard Reason --> Our production environment does not allow to install *ANYTHING* on the box that runs the database (i.e. SQL DB). This was the main reason we were not using DTS.

Soft Reason --> For deployment, we would like to have separate tiers for DB, app server components (i.e. SS*S), and presentation components (SPS etc). One may argue that SSIS is a component at DB tier and its scaling, clustering etc will be dependent on the DB tier.

KirkHaselden wrote:

To answer your question, there is no current IS feature for running packages remotely. Please see this thread:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=18177&SiteID=1

I guess I did not put the question correctly.
What I want to know is if I can configure SQL Agent running on machineA to execute SSIS packages using the SSIS Service running on machineB. Note that machineA does not have SSIS Service running (only machineB). The packages themselves can be stored locally on machineB, if needed (but I am hopeful that it should not be an issue and msdb of machineA should work just fine).
Thanks,
Nitesh

|||

If a process on machineA calls a package, then it will run a A, so you need IS installed on A. You can load the package from B or wherever, but the package runs on the same machine as the process which called it and hosts it. You would need a layer of abstraction, which is not currently available in IS itself, that is really remote execution.

Simplest method is to have SQLAgent on B, and call the job, since this is just saying start a job, which means the process runs on B.

|||<quote>
Simplest method is to have SQLAgent on B, and call the job, since this is just saying start a job, which means the process runs on B.
</quote>

The problem with having SQLAgent on B is that I will need to have SQLDB also on B (because SQLAgent has a dependency on SQLDB). This defeats the original plan of having SQLDB on machine A and SSIS on machine B separately.|||In my opinion it is the simplest, but not the only way. You can do any form of remote call, such that the server/listener on the remote machine hosts the SSIS process.

You can use any scheduler you like, it is just that SQL Agent can easily be controlled remotely, through T-SQL which most of us are quite happy with already.

I don't see what the issue is with having another SQL instance on the SSIS machine, after all would it not be nice to have a local working store, in fact don't some tasks want a SQL store, and therefore having it locally makes much more sense. I think your network costs could get excessive, just for the sake of keeping things separate. By all means keep server A clean, and have your main data there, but what is the harm in having SQL on server B as well. You like to have separate tiers, but is it so strict you cannot mix applications, should it not be functions really, in which case where is the issue? Having a no SQL and IS on the same machine at all, regardless of the use of SQL seems rather artificial and just making life hard for the sake of it. Offloading IS onto a separate machine makes sens as well for large volumes, to reduce impact on your main production SQL server, but I woudl argue that the IS box should be the controller of the IS based processes, and not the other way around.

Saying all that remote execution would be cool to have too.|||

DarrenSQLIS wrote:

In my opinion it is the simplest, but not the only way. You can do any form of remote call, such that the server/listener on the remote machine hosts the SSIS process.


Unfortunately, my prod environment doesn't allow for the simplest solution, that I would love to have.

DarrenSQLIS wrote:


You can use any scheduler you like, it is just that SQL Agent can easily be controlled remotely, through T-SQL which most of us are quite happy with already.


I would love to use SQL Agent. Since it has a dependency on SQLDB, I cannot have it on SSIS box. If SQL Agent could invoke SSIS remotely, I would have take n that.

DarrenSQLIS wrote:


I don't see what the issue is with having another SQL instance on the SSIS machine, after all would it not be nice to have a local working store, in fact don't some tasks want a SQL store, and therefore having it locally makes much more sense.

Issue is simple - it won't be supported by our database group. Our DB group controlls all the DB instances, and they have nothing at all on those boxes which they support. So, SQLDB on SSIS box won't be supported. I don't want to get calls in the middle of the night for that and neither do I want to start doing backups, maintenance etc.

DarrenSQLIS wrote:


I think your network costs could get excessive, just for the sake of keeping things separate.


I know lot many enterprises that enforce such policy of having clean DB boxes.
I thought that network costs for such configurations will not adversely impact performance too much. Am I wrong?

DarrenSQLIS wrote:


By all means keep server A clean, and have your main data there, but what is the harm in having SQL on server B as well. You like to have separate tiers, but is it so strict you cannot mix applications, should it not be functions really, in which case where is the issue? Having a no SQL and IS on the same machine at all, regardless of the use of SQL seems rather artificial and just making life hard for the sake of it. Offloading IS onto a separate machine makes sens as well for large volumes, to reduce impact on your main production SQL server, but I woudl argue that the IS box should be the controller of the IS based processes, and not the other way around.

Saying all that remote execution would be cool to have too.

Bottomline is -> It is not important what I could do to get around the issue, it is more important that the product should be deployable in a layered/tiered fashion on separate boxes with support for scheduling packages on whatever is the preferred scheduling mechanism (i.e. SQLAgent). Please understand that there exist network deployment scenarios in enterprises that might not work with having a side-kick SQLDB instance on SSIS box.

Thanks for your suggestions though.

Nitesh

|||

Nitesh Ambastha wrote:

Issue is simple - it won't be supported by our database group. Our DB group controlls all the DB instances, and they have nothing at all on those boxes which they support. So, SQLDB on SSIS box won't be supported.


Somewhat of a retorical question or point, but if your DB group does not understand SSIS then they should not allow you to use it. Your use of it could adversely impact the avilability of the pure SQL systems, I would never allow any system to interact with my SQL systems that could have such an impact unless I had sufficient understanding of it. If they did understand it, then what is the problem :) This is my personal point, so no response required, but it seems an artificial rule.

Nitesh Ambastha wrote:


I thought that network costs for such configurations will not adversely impact performance too much. Am I wrong?


I was trying to highlight the time and bandwidth costs. The further away from your data your SSIS is, the slower it will be, although you could solve some of that by spending money on faster links. So for large amounts of data processing it could have an impact since you will be running across the two machines.

Nitesh Ambastha wrote:

...for scheduling packages on whatever is the preferred scheduling mechanism (i.e. SQLAgent).


SQL Agent is my preferred scheduler, and maybe yours too, but many organisations have their own standards. Many houses use IBM/Tivoli for example, and SQLAgent is not required for SSIS. If you would prefer to use it, then yes you are stuck. I think buyng SQL Server for SQLAgent is an overkill, but if you look at that SQL Instance in the same way as you look at MSDE, then it is no big deal. There are plenty of proucts our there that install DB engines. I saw a report that said Informix (I think that was the one) was one of the most widely deployed DBs, and that is because CA shoved it under the covers of ArcServe backup, probably for the scheduling :)

Deployment problem with protection level

Hi all,

I have a problem while trying to deploy my packages that are configured in ProtectionLevel=EncryptSensitiveWithUserPassword

I use the Deployment Utility to deploy my packages. I set the password when deploying and the deplyment works fine. But I run the packages I have the following error : " Failed to decrypt an encrypted XML node because the password was not specified or not correct."

Did I miss something ?

Why not use protectionlevel = 'DontSaveSensitive"?|||

Because I'm deploying to a Test Environment and the Data on the Test Env are different so sometimes I would like to debug on the Test Env which means I load the package in BIDS.

What's wrong about using EncryptSensitiveWithUserPassword ?

|||

Sbastien Nunes wrote:

Because I'm deploying to a Test Environment and the Data on the Test Env are different so sometimes I would like to debug on the Test Env which means I load the package in BIDS.

What's wrong about using EncryptSensitiveWithUserPassword ?

Are you providing the password when executing the package? you have to provide password each time you execute the package. See Setting the Protection Level of Packages

I don't think there is nothing wrong with using EncryptSensitiveWithUserPassword; it's just that it adds and extra step to the deployment process making it more prone to error. If you use a combination of DonSaveSensitive as protection level with package configurations things get simpler; and you still will be able to debug o any environment.

I am suggesting the DonSaveSensite option; because that is what I use and I know it works I have never used EncryptSensitiveWithUserPassword.

|||

Well yeah you can still debug but you have to open each package to set the sensitive data back as they were removed when saved with ProtectionLevel=DontSaveSensitive

Indeed I'm not providing the password when the package is called for execution. I thought I had to give the password only when I open the package not when I run it. I'll fix that. Thanks for your help.

It's not very clear in BOL! They are talking about providing a password each time the package is loaded in BIDS but when talking about running the package it's not clear if they are still talking about executing the package within BIDS or outside.

sql

Wednesday, March 21, 2012

Deployment Error

After creating a my project which has several dts packages.

I want to deploy and place them in different sql servers to run automatically.

I do the following:

After building my project.I select project ->properties ->deployment utility->i set create deployment to true.

Then within deployment folder i double click .projectdeploymentmanifest file

where package installation i select sql server instead of file system.

and i get the following error.

TITLE: Package Installation Wizard

Could not save the package "C:\Program Files\Microsoft SQL Server\SSIS\bin\Deployment\Procedure.dtsx" to SQL Server "SQL-DEV".


ADDITIONAL INFORMATION:

The SaveToSQLServer method has encountered OLE DB error code 0x80004005 (Client unable to establish connection). The SQL statement that was issued has failed.

The SaveToSQLServer method has encountered OLE DB error code 0x80004005 (Client unable to establish connection). The SQL statement that was issued has failed.

BUTTONS:

OK

It would be great if some one guides me with this.Is this anything to deal with security.please let me know

Open up Management Studio and try to connect to "Integration Services" on SQL-DEV.|||

It says Access Denied.

Do i need to be under sysadmin role to do this?

Please let me know.

Thanks

|||

See this link from my blog:

http://www.ssistalk.com/2007/04/13/ssis-access-is-denied-when-connection-to-remote-ssis-service/

|||

I have worked with the steps from this site.I still have the same problem.

Access denied when i connect to integration services on a particular server from i local machine.

Do i have any other options?

|||The answers are all right there, but need to be done on the server, not the local machine.|||

Thanks,I was working on my local machine instead of server.

Monday, March 19, 2012

Deploying SSIS pkgs

Hi,

I have some questions.

Regarding SQL Server deployment, it says to use this option if sharing packages between servers. Does this mean sharing packages between development, test, and production environments? Or just sharing among production servers?

That is, I am trying to determine if I should deploy my packages on SQL Server, or just store them on the local file system. These packages will NOT be used on any other production server. So should I just keep them on the file system?

Another question. I see that I have a package stored in the "sysdtspackages90" table in the msdb database. Since I have not done any SQL Server deployment yet, I don't understand how this particular package ended up in this table. Is it OK to remove? I think this is a previous version of a package that I have since re-written. Are there any dependencies on this "sysdtspackages90" table that I should be aware of?

Thanks!

Sharing between servers, in this case, refers to sharing between production servers. So you're probably fine sticking with the file system.

Not 100% sure about dependencies on the sysdtspackages90, but if you remove it by connecting to the Integration Service in SSMS, it should be fine.

|||

Thanks for your reply!

Is there any advantage whatsoever for deploying to SQL Server if you are not sharing packages?

Also, where do I delete the package stored in the "syspackages90" (or whatever it's called) table... I have another package by the very same name stored in the file system. But I don't think they are the same package. Is that possible?

|||

Opinion varies - personally I prefer the file system, because I find it easier to deploy there.

To delete the package, connect SSMS to the Integration Services on the server you are working on. It's one of the Server Type options when you choose File..Connect Object Explorer. You should be able to browse to the package from there.

|||As John indicates, opinions do vary. I for one love deploying to MSDB because I get to use SQL Server roles and security to control access to my packages and in my packages. So once I set up a user account in a connection inside of a package, I don't have to worry about SSIS stripping the password off of that connection when I deploy. A nice feature, I should say, and probably the method that was envisioned as being "standard." (I don't know that for sure, it's just a guess, what with all of the integration that MS tries to achieve.)|||

Thank you for your reply. Yes, that makes sense.

However, I am a little nervous about deploying to SQL Server - for one, I've never done it. Are there any caveats I need to be aware of? For example, what if I need to change something? Do I need to "re-deploy" if any of the packages change? Or are the changes saved to SQL Server automatically when changes to the packages are saved?

Also, what is this "magic folder" (the folder where dependent files go) Is there a "standard" place for this folder? My book on SSIS mentions it, but does not indicate where to put it.

One more thing, I am clueless about configuration files. Are these important? I realize this is a vague question. But the packages I am working on now are tested and working... they are not going to be migrated anywhere. So should I bother with a configuration file? That is, when would I need a configuration file?

Thanks much!

|||I will try this, thanks

Deploying SSIS pkgs

Hi,

I have some questions.

Regarding SQL Server deployment, it says to use this option if sharing packages between servers. Does this mean sharing packages between development, test, and production environments? Or just sharing among production servers?

That is, I am trying to determine if I should deploy my packages on SQL Server, or just store them on the local file system. These packages will NOT be used on any other production server. So should I just keep them on the file system?

Another question. I see that I have a package stored in the "sysdtspackages90" table in the msdb database. Since I have not done any SQL Server deployment yet, I don't understand how this particular package ended up in this table. Is it OK to remove? I think this is a previous version of a package that I have since re-written. Are there any dependencies on this "sysdtspackages90" table that I should be aware of?

Thanks!

Sharing between servers, in this case, refers to sharing between production servers. So you're probably fine sticking with the file system.

Not 100% sure about dependencies on the sysdtspackages90, but if you remove it by connecting to the Integration Service in SSMS, it should be fine.

|||

Thanks for your reply!

Is there any advantage whatsoever for deploying to SQL Server if you are not sharing packages?

Also, where do I delete the package stored in the "syspackages90" (or whatever it's called) table... I have another package by the very same name stored in the file system. But I don't think they are the same package. Is that possible?

|||

Opinion varies - personally I prefer the file system, because I find it easier to deploy there.

To delete the package, connect SSMS to the Integration Services on the server you are working on. It's one of the Server Type options when you choose File..Connect Object Explorer. You should be able to browse to the package from there.

|||As John indicates, opinions do vary. I for one love deploying to MSDB because I get to use SQL Server roles and security to control access to my packages and in my packages. So once I set up a user account in a connection inside of a package, I don't have to worry about SSIS stripping the password off of that connection when I deploy. A nice feature, I should say, and probably the method that was envisioned as being "standard." (I don't know that for sure, it's just a guess, what with all of the integration that MS tries to achieve.)|||

Thank you for your reply. Yes, that makes sense.

However, I am a little nervous about deploying to SQL Server - for one, I've never done it. Are there any caveats I need to be aware of? For example, what if I need to change something? Do I need to "re-deploy" if any of the packages change? Or are the changes saved to SQL Server automatically when changes to the packages are saved?

Also, what is this "magic folder" (the folder where dependent files go) Is there a "standard" place for this folder? My book on SSIS mentions it, but does not indicate where to put it.

One more thing, I am clueless about configuration files. Are these important? I realize this is a vague question. But the packages I am working on now are tested and working... they are not going to be migrated anywhere. So should I bother with a configuration file? That is, when would I need a configuration file?

Thanks much!

|||I will try this, thanks

deploying SSIS

Hi

We are storing our packages in File System.

Process:

BIDS->Right Click on soln file ->properties->Deployment Utility->DeploymentOutputPath--Bin\Deployment

So it creates a folder with the project name and all the packages in C:\Program Files\Microsoft SQL Server\90\DTS\Packages\Project

While executing the package on Server what should be thesource of the Package? I mean should it refer to the solution file->..dtsx

or

Bin\Deployment->packages

or

C:\Program Files\Microsoft SQL Server\90\DTS\Packages\Project

Moving from .NET Framework Data Access and Storage...|||

Paarul wrote:

Hi

We are storing our packages in File System.

Process:

BIDS->Right Click on soln file ->properties->Deployment Utility->DeploymentOutputPath--Bin\Deployment

So it creates a folder with the project name and all the packages in C:\Program Files\Microsoft SQL Server\90\DTS\Packages\Project

While executing the package on Server what should be thesource of the Package? I mean should it refer to the solution file->..dtsx

or

Bin\Deployment->packages

or

C:\Program Files\Microsoft SQL Server\90\DTS\Packages\Project

You need to point to the folder holding the .dtsx file in the server no matter hoe you deploy it.

Deploying SQL Express 2005

Hello,
I work for a company that manages computers and their software using Active Directory. One of our packages requires SQL Express 2005, and so far I've been unable to find a good resource online. All I need to do is find a .msi file or a batch script that will install it. Thanks!

Start here http://msdn.microsoft.com/vstudio/express/

Friday, March 9, 2012

Deploying packages with SQL Server based configuration

Hello,

We have been conducting some testing regarding package deployment and SQL Server based configuration. It seems there is a problem that was documented in an MS Feedback entry (

https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=126797

)

I searched for a viable answer, work-around, or hotfix that would address this issue but found none.

The jist is that a package that uses SQL Server based configuration must have an xml-based configuration entry to "re-point" the SQL Server based configuration connection manager to the deployment target server. We cannot use environment variable or registry as this is against internal policy. The problem is that even though the xml based config is specified first in the list of package configurations it does not get applied first at run-time. So, when the package runs from a SQL Server Agent job the package's connection manager for the configuration entries is not updated.

The package runs correctly through BIDS. You can change the connection string in the .dtsConfig file and the SQL Server based package configuration is obtained from the correct source.

Environment is SQL Server Enterprise Edition 64-bit w/ SP1, Windows Server 2003 Enterprise Ed. 64-bit.

Does anyone have any experience with this issue? Know any hotfixes, other work-arounds?

Thanks in advance!

In terms of environment, 64 bit SSIS (w/ post SP1 hotfix) and Windows 2003 x64 SP1, we have the same setup. I am also running this exact scenario and have no problem repointing the SQL server Configuration's connection manager's connection string via a previous direct XML configuration.

So, the only thing I can tell you is to look for configuration warnings (unable to read configuration), which is a dead giveaway that you'll be pointing back to your design time config. (e.g. Warning with a message "Unable to read configuration file...").

Another diagnostic is to print out ("fire info events") your connection strings, presuming these are part of your SQL Server configuration, as a preliminary script task. This information will tell you right away if configurations are being properly overlaid.

Public Sub Main()
Dts.TaskResult = Dts.Results.Success
Dim conn As ConnectionManager

For Each conn In Dts.Connections
Dts.Events.FireInformation(0, String.Empty, String.Format("Connection: {0} DataSource: {1}", conn.Name, conn.ConnectionString), String.Empty, 0, False)
Next conn

End Sub|||

I ran accross that as well and thought I was sunk. Turns out it must be an old error and fixed at some point. (I'm running 2005 SP1).

We use an XML configuration in C:\MSSQL to define where the Configuration connection points to and pull all other entries from Configuration source. We just deploy an XML file to each developer desktop (that points to development) and on each of the servers (pointing to themselves). We can move packages from development to test to production with no issues as well as run them in debug mode on our local desktop. In the off chance you HAVE to run a production job in debug from your desktop, just replace your local XML file (and make sure you run with appropriate permissions).

To be more clear, our configuration looks like:

XML Configuration File
SQL Server

This seems to work well for us. Hope this helps,

Larry C

|||

Larry & jaegd,

Thank you for replying to this thread.

Ok, the package has two connection managers, 1. ConfigurationConnection used for the SQL based configuration connection 2. DW_ETL is used for the DataFlow and other tasks in the package.

Using the script from jaegd to log the connection strings for all of the connection managers in the package I have found that the connection managers' connection strings are being changed appropriately to their configured values as stored in the SQL based configuration.

However, I am seeing, and this is the observation that caused me to post here, that a package variable User::TestConfig is not being changed appropriately. The script is listed below. The variable User::TestConfig is specified to get its value from the SQL based configuration.

Am I missing something here, shouldn't the variable's value be changed to what is specifed in the confguration table?

Public Sub Main()

Dim conn As ConnectionManager

Dts.Events.FireInformation(0, String.Empty, String.Format(Dts.Variables("User::TestConfig").Value.ToString()), String.Empty, 0, False)

For Each conn In Dts.Connections

Dts.Events.FireInformation(0, String.Empty, String.Format("CONNECTION: {0} DATASOURCE: {1}", conn.Name, conn.ConnectionString), String.Empty, 0, False)

Next conn

Dts.Events.FireInformation(0, String.Empty, String.Format(Dts.Variables("User::TestConfig").Value.ToString()), String.Empty, 0, False)

Dts.TaskResult = Dts.Results.Success

End Sub

-Eric

|||

Wanted to update this thread.

I have confirmed, that a user variable that has its Value stored in configuration is not being properly updated from SQL based configuration. This happens when the package is run via a SQL Server Agent job. However, the Value is changed correctly when the package is run interactively through BIDS.

Is there some sort of caching mechanism in SSIS (just a swag) that is causing the variable's Value to NOT change even though it is set up to be configured from SQL based configuration.

As a reminder other information such as connection string which are stored in SQL based configuration are changing based on their configured values, this happens correctly in a SQL Agent environment as well as BIDS.

Thanks!

-Eric

|||

Larry,

I am curious, what environment are you running on where the xml and SQL based configuration is working properly? The following is my environment.

SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')

(No column name) (No column name) (No column name)
9.00.2153.00 SP1 Enterprise Edition (64-bit)

I am asking because using xml config to point the table-based configuration's connection string is not working for me. Are there any gotcha's regarding the connection managers, or the job step configuration, or....

In the package I specified the order of the package configurations with the xml config listed first, then the sql based config. In the job step I had added the location of the xml-based configuration in the configurations tab. I did not have any check boxes checked on the Data Sources tab in the job step. The configuration data itself was correct. But, the sql based configuration was not being pointed to the connection string that is specified in the xml config. The logging output showed that the sql-based connection string was changed, however the values that were specified in the sql-based configuration were not being updated.

Any tips or help would be most appreciated.

-Eric

|||

Eric,

Here's the values you requested.

(No column name) (No column name) (No column name)
9.00.2047.00 SP1 Enterprise Edition (64-bit)

As a validation I did the following:
I created an SSIS package
I created a Connection called Configuration using integrated security pointing to the Development server and SSIS configuration database.
I created a variable called Test and set the value to Test
I Enabled configuration
I created an XML configuration file at C:\MSSQL\Configuration.xml (I'd recommend using a default extension)
I put Configuration data source in the XML file
I named the Configuration XML
I added a new SQL Server Configuration, specified server, table, and Key
I chose to store the configured Value of the Test variable
I enabled Logging to a file C:\MSSQL\Logs\Sample.log
I added a Script Task
I set ReadOnly variable to Test
In Design Script I put the following

Public Sub Main()

Dts.Log(Dts.Variables("User::Test").Value.ToString, 0, Nothing)

Dts.TaskResult = Dts.Results.Success

End Sub

I enabled logging for the Script Task and enabled the ScriptTaskLogEntry

Important items:
The XML configuration file must be on a local hard drive
The developer will need an XML configuration file pointing to development
Each server will need an XML configuration file pointing to itself and the configuration database.
The database and table the configurations are stored in, must be what is referenced in it's local XML configuration file.
When creating an XML configuration for a new package Reuse the existing XML file.

The output from running on my desktop and the development server was:
User:ScriptTaskLogEntry,IT-HQ4Z971,CHARLOTTE\lcharlton,Script Task,{E14E7D5F-F31C-4717-A7E2-31FA3A12E157},{2179265C-2855-4A02-962F-4D1D5E2F27E0},11/1/2006 2:22:47 PM,11/1/2006 2:22:47 PM,0,(null),Test

The output from running on the production server was
User:ScriptTaskLogEntry,xxx-xxx-xx,CHARLOTTE\xxxxxxxxxx,Script Task,{E14E7D5F-F31C-4717-A7E2-31FA3A12E157},{FC1A8FF0-B4D4-4604-98C6-F5BD60C2DEE3},11/1/2006 2:27:57 PM,11/1/2006 2:27:57 PM,0,(null),Production

The configuration connection is getting reset correctly and the variable from configuration is comming from the production server. We have equally good luck setting other connections to different databases. I even have a SSIS package that updates the configuration entries for another SSIS package and then executes it, allowing us to iterate through a list of servers collecting information. This works as expected in Development, Test, and Production with the only thing needing to change being the configuration values in the SSIS database.

|||

Larry,

Thank you for the time and response in the validation of this. The description of your implementation including the "Important items:" helps me validate that we are attempting to do the same thing.

So, your version is the SQL Server 2005 Service Pack 1 build, x64, while my version is the Cumulative hotfix package (build 2153) for SQL Server 2005 build, x64.

I thought I recalled that this issue was fixed in SP1. I am wondering if this was "un-fixed", for lack of a better word, in the cumulative hotfix package?

I am thinking this may be the case.

Any ideas beyond taking this to PSS?

-Eric

|||Sorry, nothing here. PSS is probabbly your best bet.

deploying packages

Error: 0xC0202009 at Package, Connection manager "Presup Dev sql_prov": An OLE DB error has occurred. Error code: 0x80040E4D.

An OLE DB record is available. Source: "Microsoft SQL Native Client" Hresult: 0x80040E4D Description: "Communication link failure".

An OLE DB record is available. Source: "Microsoft SQL Native Client" Hresult: 0x80040E4D Description: "TCP Provider: Se ha forzado la interrupción de una conexión existente por el host remoto.

WTF? ·%$·&$%%& i`m sure my connections are ok,, cause i prevoiusly checked them, the problem occurs when deploying the package.. it seems to be an error when connecting to the source but whyy?, and what about the package configurations ? should i use them,, and how?

Does the error message occur while you 'deploy' them or when you try to execute them after deployment. I am assuming 'deploy' at the least means they are now on another computer from where you created the package. Did you modify the package property 'protectionlevel' before you deployed? If not the default value may be causing your issues and you will want to read about the protectionlevel property in books online.

Hope that helps.

|||

in my solution proyect works fine.. so i have the deployment utility folder, then i copy it to the target computer, the error appears when i'm using the wizard to deploy it.. i`ve changed the protection level and it remains the same error... which is the correct option?

sorry if my english sucks..

|||

apparently i′ve found a possible solution.. in the project properties on the security tab.. i stablished a package password, then skept the prevalidation of the package during the deployment, once in my target server i run the package giving the password package and bingo!!! it worked.. i don`t know if this is the most viable solution but it worked anyway.. please can anybody tell me if this is the best option?

Deploying development packages to production

We have a system here where we develop SSIS packages on a development server. I am trying to figure out the cleanest way to promote these changes to a production server where stored procedures/tables that are used in the package are not deployed yet.

When I switch the connection in the package to the production server there are alot of objects in the package that are "invalidated" because they are trying to verify existence of tables/columns. One example is outputing the results of a query to a text file. The text file destination gets a red X on it because it cant grab the columns from the source query (because that stored procedure doesnt exist yet)

Is there a best practices or something on how to deploy packages to a production system? I have tried turning off "ValidateExternalMetaData" with no success.

Thanks!

I think you need to read up on configurations. Configurations allow you to change all sorts of properties/variables external to the ssis package itself.

-Try searching 'configurations' on this forum

-Read books on-line

-Or check many articles on Jamie Thompson's website

http://blogs.conchango.com/jamiethomson/

Hope this helps.

|||

CraigL77 wrote:

We have a system here where we develop SSIS packages on a development server. I am trying to figure out the cleanest way to promote these changes to a production server where stored procedures/tables that are used in the package are not deployed yet.

When I switch the connection in the package to the production server there are alot of objects in the package that are "invalidated" because they are trying to verify existence of tables/columns. One example is outputing the results of a query to a text file. The text file destination gets a red X on it because it cant grab the columns from the source query (because that stored procedure doesnt exist yet)

Is there a best practices or something on how to deploy packages to a production system? I have tried turning off "ValidateExternalMetaData" with no success.

Thanks!

If you use configurations (as Anthony suggested), you can set different connection strings for different environments. However, for the packages to run (and validate) in the production environment, the stored procs will have to be present.

If you change the connection strings in the package, you can ignore the validation errors and copy the packages to the server. They should run successfully as soon as the procs are created.

Saturday, February 25, 2012

Deployed files reduced size

I am wondering why deployed packages are so much smaller than built packages. What is removed and why isn't it removed when the packages are built?

I have a package that goes from 3Mb to 1.5Mb

Any answers|||We don't remove anything from package during deployment. The things that may affect package size:
1) XML encoding. UTF-16 (usually called just "Unicode") may take twice as much as UTF-8. I think we use UTF-8 in most places, but not sure.
2) Encryption. If you encrypt the whole package (instead of just sensitive information) it may noticeably increase package size.
How you do deploy, and to what location?|||

You're spot on with the unicode, which concerns me.

The package file in the bin folder is unicode with no directive in the xml clause i.e. <?xml version="1.0"?>, the deployed file is utf-8 but with the same xml directive.

The file is deployed by double clicking on the deployment manifest and selecting "file system".

Surely this is a problem if the package contains unicode, whats more it means the file being deployed isn't the file that is built. Thats not common practice

|||Interesting. Did you do anything special with the package?

I always get utf-8 encoded DTSX files (you are right, without encoding specified in XML clause): both the project folder and bin folder contain utf-8 encoded files. I don't know a way to make designer save utf-16 files.

Deploy to SQL Server or flat files

I'm in a quandry about how to deploy my SSIS packages and was hoping someone has some experience of the same.

There are 2 approaches: 1) Deploy to SQL Server. 2) Deploy to .dtsx files.

I suppose the default approach is to deploy to SQL Server however I have a problem with that. My packages contain Execute Package Tasks which use different connection managers depending on whether the package that they are calling is on SQL Server or in a .dtsx file.
That means that my packages have to contain 2 connection managers for each Execute Package Task - one for pointing to a package deployed to SQL Server and one for a package that is still in development and hence sitting in a .dtsx file. There is also the overhead of managing the deployment to make sure my Execute Package Tasks are pointing to the same place.

For this reason I am contemplating just leaving my packages as .dtsx files even when they are deployed to a production server.

Has anyone else encountered this problem? How have you dealt with it?
Has anyone found a distinct advantage of one approach over another?

Any comments welcome.

Thanks
Jamie

On a side note, what is the performance impact on FF deployment compared to DB?

|||Here were the responses I got from project REAL team. Wish they'd throw their stuff on the web for everyone to see how they did it.


From: Gary Cabana
Sent: Tuesday, September 06, 2005 04:13
To: Grant Dickinson
Subject:

Grant, for project REAL, you have one master workflow package that calls execute package tasks with file based connections, correct? How does this work for migrating the code from a development machine to the production box? In particular, when the package starts, are you using a configuration to set the connection string for the execute packages’ file based connection, or is it implemented such that the file locations of the packages being called cannot change?

thanks



From: Grant Dickinson
Sent: Tuesday, September 06, 2005 12:33 PM
To: Gary Cabana
Subject: RE:

Hi Gary

We originally had the file locations in the config as you have mentioned, but we realised that in our case we could use a convention of always having the files in the same place, eg c:\etl - thus the configs were redundant and I removed them. If you cannot use such a convention then the config worked fine and I'd recommend that - remember to secure the folder containing the packages if need be. I cannot comment on any experiences using the SQL store for the packages since we have not used that option in REAL.

Kind Regards

Grant Dickinson


From: Gary Cabana
Sent: Tuesday, July 26, 2005 13:44
To: Grant Dickinson
Subject: RE: Project REAL questions

One more question:

Did you use multiple packages or combine all the ETL into one giant package with multiple data flows? I’d like to use multiple packages so that development can be done in parallel.

If multiple packages, did you do the execute package in sql server or execute in the file system and why?

From: Grant Dickinson
Sent: Tuesday, July 26, 2005 5:09 PM
To: Gary Cabana
Subject: RE: Project REAL questions

Multiple - as with any code project I prefer modularity. As you say, this makes team development easier too. Currently I am using the file system, no particular reason except that it was easier since the VS project is file-based, as is SourceSafe. Let me know if you find any interesting reasons to use SQL instead.


From: Gary Cabana
Sent: Tuesday, July 26, 2005 5:13 PM
To: 'Grant Dickinson'
Subject: RE: Project REAL questions

The dev group said performance was the same.

One thing I don’t like about the file approach is that you need to create a new connection for each execute package you’re executing. Although, the current CTP 15 has the same problem for creating a new connection for each package that resides in the sql server (although Kirk said it’s a bug and I submitted it).

thanks

|||Gary,
That's superb stuff, thanks very much. If its good enough for Project REAL then its good enough for me!!

-Jamie|||The performance impact should be minimum.

The location of the package only affects the load time (i.e.
load from file vs. establish SQL connection and load from SQL table),
it does not matter during execution. For typical packages that run
several minutes to hours, the time to read package from file or
from database (less than a second, unless the server is really
overloaded) should not impact anything.

I think the decision should be driven by administative habits
and convinience. E.g. many people prefer SQL deployment
since they already backup SQL database regularly, and thus
get SSIS package backup for free. But many people backup
file system as well and prefer simplicity of file deployment.|||Package Access is another consideration when deciding the deployment option. Once Package is deployed on Sql server, User Access to the package is controlled at the database level. Whereas in the oher case its filesystem level.

For a scenario where many users are executing a package, having it on a centralized SQL server is just more simple. Esp. in case SSIS package connects to multiple databases. Its more secure rather than having connections set in a package saved on file system.|||

Suresh Bansal wrote:

Package Access is another consideration when deciding the deployment option. Once Package is deployed on Sql server, User Access to the package is controlled at the database level. Whereas in the oher case its filesystem level.

For a scenario where many users are executing a package, having it on a centralized SQL server is just more simple. Esp. in case SSIS package connects to multiple databases. Its more secure rather than having connections set in a package saved on file system.

All good reasons. However the issue regarding deployment that I mentioned earlier swings it.

Thanks all.

-Jamie

deploy SSIS package to server

Ok, I created SSIS packages on my local box. All of my packages are using config files for the db connections and other configurations that'll be changed per environment. My question is how do I deploy the .dstx file and the associated config file to the servers?

Right now I'm running the packages in BIDS as I create them. I now want to run them on an actual server

One way is to map a drive (or just open a remote folder) to the server, and then copy the files there.

I suggest you create a folder on the server to hold the SSIS stuff. From there you can create subfolders if you desire.|||

would I need to create folders for each package or no? How will the SSIS package now what config file is assocaited with it?

|||

IGotyourdotnet wrote:

would I need to create folders for each package or no? How will the SSIS package now what config file is assocaited with it?

You don't need to create a folder for each package, though that decision is up to you.

In the package (control flow, right click, package configurations), you specify which configuration file to use.

Friday, February 24, 2012

Deploy Packages To Folder Other Than MSDB

Is it possible to create a folder within the MSDB folder in Integration Services and deploy packages in it?

When connected to Integration Services via Management Studio, you can right click on the MSDB folder and chose New Folder...|||See http://technet.microsoft.com/en-us/library/ms137916(SQL.90).aspx for more details.

Deploy Packages To Folder Other Than MSDB

Is it possible to create a folder within the MSDB folder in Integration Services and deploy packages in it?

When connected to Integration Services via Management Studio, you can right click on the MSDB folder and chose New Folder...|||See http://technet.microsoft.com/en-us/library/ms137916(SQL.90).aspx for more details.

DEPLOY packages from Server A to Server B.

I developed some SSIS packages in SQL2005.When developing , The connect is set with Server A.

And i know ,later we are supposed to move to SERVER B.but B's IP and machine name are both unknown for developers.

The deployment guys will be cahrge in that.

what's easiest way for me to tell the deployment guy to add a connection to SERVER B after the SSIS packages have been developed?

any suggestion? Thanks in advance.

Use package configurations to store the data that can change (database connection strings, etc...)|||

HI phil:

yes , i tried this way.

In SERVER B ,imported .dtsx file , then changed the connection value with B server in .dtsconfig file, and ran the package, i found the package still affect the A server.

what' s wrong with my steps?

|||Do you have the ConnectionString property in the .dtsconfig file? This is what you should change.|||

Hi Phil:

Please take a look at the following content in my configure file(sorry for too much lines),could u tell me where to modify?:

Thank u very much

<?xml version="1.0"?><DTSConfiguration><DTSConfigurationHeading><DTSConfigurationFileInfo GeneratedBy="ASIAPACIFIC\daij" GeneratedFromPackageName="Package" GeneratedFromPackageID="{B780B7CC-3E98-4F5D-AF9A-E70F262B6FEA}" GeneratedDate="2007-3-4 18:55:47"/></DTSConfigurationHeading><Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[ConnectionString]" ValueType="String"><ConfiguredValue>Data Source=SCN4685;User ID=sa;Initial Catalog=DemoDB0;</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[Description]" ValueType="String"><ConfiguredValue></ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[InitialCatalog]" ValueType="String"><ConfiguredValue>DemoDB0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[Name]" ValueType="String"><ConfiguredValue>SCN4685.DemoDB0.sa</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[Password]" ValueType="String"><ConfiguredValue></ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[ProtectionLevel]" ValueType="Int32"><ConfiguredValue>1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[RetainSameConnection]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[ServerName]" ValueType="String"><ConfiguredValue>SCN4685</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[UserName]" ValueType="String"><ConfiguredValue>sa</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[CertificateContext]" ValueType="Int64"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[CheckpointFileName]" ValueType="String"><ConfiguredValue></ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[CheckpointUsage]" ValueType="Int32"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[CheckSignatureOnLoad]" ValueType="Boolean"><ConfiguredValue>-1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[CreationDate]" ValueType="DateTime"><ConfiguredValue>3/4/2007 5:32:13 PM</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[CreatorComputerName]" ValueType="String"><ConfiguredValue>SCN4685</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[CreatorName]" ValueType="String"><ConfiguredValue>ASIAPACIFIC\daij</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[DelayValidation]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[Description]" ValueType="String"><ConfiguredValue></ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[Disable]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[DisableEventHandlers]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[EncryptCheckpoints]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[FailPackageOnFailure]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[FailParentOnFailure]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[ForcedExecutionValue]" ValueType="Int32"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[ForceExecutionResult]" ValueType="Int32"><ConfiguredValue>-1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[ForceExecutionValue]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[InteractiveMode]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[IsolationLevel]" ValueType="Int32"><ConfiguredValue>1048576</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[LocaleID]" ValueType="Int32"><ConfiguredValue>2052</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[LoggingMode]" ValueType="Int32"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[MaxConcurrentExecutables]" ValueType="Int32"><ConfiguredValue>-1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[MaximumErrorCount]" ValueType="Int32"><ConfiguredValue>1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[Name]" ValueType="String"><ConfiguredValue>Package</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[OfflineMode]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[PackagePassword]" ValueType="String"><ConfiguredValue></ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[PackagePriorityClass]" ValueType="Int32"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[PackageType]" ValueType="Int32"><ConfiguredValue>5</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[ProtectionLevel]" ValueType="Int32"><ConfiguredValue>1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[SaveCheckpoints]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[SQLFolder]" ValueType="String"><ConfiguredValue>\</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[SuppressConfigurationWarnings]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[TransactionOption]" ValueType="Int32"><ConfiguredValue>1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[UpdateObjects]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[UpdatePackage]" ValueType="Boolean"><ConfiguredValue>-1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[VersionBuild]" ValueType="Int32"><ConfiguredValue>7</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[VersionComments]" ValueType="String"><ConfiguredValue></ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[VersionMajor]" ValueType="Int32"><ConfiguredValue>1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[VersionMinor]" ValueType="Int32"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[BypassPrepare]" ValueType="Boolean"><ConfiguredValue>-1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[CodePage]" ValueType="UInt32"><ConfiguredValue>1252</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[Connection]" ValueType="String"><ConfiguredValue>SCN4685.DemoDB0.sa</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[DelayValidation]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[Description]" ValueType="String"><ConfiguredValue>Execute SQL Task</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[Disable]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[DisableEventHandlers]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[FailPackageOnFailure]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[FailParentOnFailure]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[ForcedExecutionValue]" ValueType="Int32"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[ForceExecutionResult]" ValueType="Int32"><ConfiguredValue>-1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[ForceExecutionValue]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[IsolationLevel]" ValueType="Int32"><ConfiguredValue>1048576</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[IsStoredProcedure]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[LocaleID]" ValueType="Int32"><ConfiguredValue>2052</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[LoggingMode]" ValueType="Int32"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[MaximumErrorCount]" ValueType="Int32"><ConfiguredValue>1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[Name]" ValueType="String"><ConfiguredValue>Execute SQL Task</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[ResultSetType]" ValueType="Int32"><ConfiguredValue>1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[SqlStatementSource]" ValueType="String"><ConfiguredValue>usp_insertSSISLOG</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[SqlStatementSourceType]" ValueType="Int32"><ConfiguredValue>1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[TimeOut]" ValueType="UInt32"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[TransactionOption]" ValueType="Int32"><ConfiguredValue>1</ConfiguredValue></Configuration></DTSConfiguration>

|||This is the only line you should have in your configuration file for connections: (The ConnectionString property)

<Configuration

ConfiguredType="Property"

Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[ConnectionString]"

ValueType="String"><ConfiguredValue>Data Source=SCN4685;User

ID=sa;Initial

Catalog=DemoDB0;</ConfiguredValue></Configuration>

But, this seems to be using an ODBC connection. So, that means the ODBC connection has to change to point to the new database, OR, you have to change the "Data Source=XXXXX" parameter in the above line to point to the different ODBC connection. (Or Oracle connection, whatever it may be.)|||

Anyway,many many thanks

|||

Hahhahhha~~~~

Sometimes it‘s really weird!
2 whole days, I can’t figure out how to change the connection when deploying SSIS to another Server.
Today, I was so disappointed that I haven’t got the right way to work it round.
Before the shift is off, I fall a snap. And after snap, I used the XML spy to modify the configure file with password adding.
Hah~~it works!
I still wonder why the password is blank when we enabled the configure file option.
Here are my tips to change connections when deploying to Pro environment.

No need to change this:
<Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[ConnectionString]" ValueType="String"><ConfiguredValue>Data Source=SCN4685;User ID=sa;Initial Catalog=DemoDB0;Persist Security Info=True;</ConfiguredValue></Configuration>


But we have to change these property’s value:
InitialCatalog:
<Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[InitialCatalog]" ValueType="String"><ConfiguredValue>DemoDB1</ConfiguredValue></Configuration>
Password(what is blank at first):
<Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[Password]" ValueType="String"><ConfiguredValue>XXXXXX</ConfiguredValue></Configuration>
Servername:
<Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[ServerName]" ValueType="String"><ConfiguredValue>SCN4685</ConfiguredValue></Configuration>

Gosh~~thanks.
It really works.

DEPLOY packages from Server A to Server B.

I developed some SSIS packages in SQL2005.When developing , The connect is set with Server A.

And i know ,later we are supposed to move to SERVER B.but B's IP and machine name are both unknown for developers.

The deployment guys will be cahrge in that.

what's easiest way for me to tell the deployment guy to add a connection to SERVER B after the SSIS packages have been developed?

any suggestion? Thanks in advance.

Use package configurations to store the data that can change (database connection strings, etc...)|||

HI phil:

yes , i tried this way.

In SERVER B ,imported .dtsx file , then changed the connection value with B server in .dtsconfig file, and ran the package, i found the package still affect the A server.

what' s wrong with my steps?

|||Do you have the ConnectionString property in the .dtsconfig file? This is what you should change.|||

Hi Phil:

Please take a look at the following content in my configure file(sorry for too much lines),could u tell me where to modify?:

Thank u very much

<?xml version="1.0"?><DTSConfiguration><DTSConfigurationHeading><DTSConfigurationFileInfo GeneratedBy="ASIAPACIFIC\daij" GeneratedFromPackageName="Package" GeneratedFromPackageID="{B780B7CC-3E98-4F5D-AF9A-E70F262B6FEA}" GeneratedDate="2007-3-4 18:55:47"/></DTSConfigurationHeading><Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[ConnectionString]" ValueType="String"><ConfiguredValue>Data Source=SCN4685;User ID=sa;Initial Catalog=DemoDB0;</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[Description]" ValueType="String"><ConfiguredValue></ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[InitialCatalog]" ValueType="String"><ConfiguredValue>DemoDB0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[Name]" ValueType="String"><ConfiguredValue>SCN4685.DemoDB0.sa</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[Password]" ValueType="String"><ConfiguredValue></ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[ProtectionLevel]" ValueType="Int32"><ConfiguredValue>1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[RetainSameConnection]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[ServerName]" ValueType="String"><ConfiguredValue>SCN4685</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[UserName]" ValueType="String"><ConfiguredValue>sa</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[CertificateContext]" ValueType="Int64"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[CheckpointFileName]" ValueType="String"><ConfiguredValue></ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[CheckpointUsage]" ValueType="Int32"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[CheckSignatureOnLoad]" ValueType="Boolean"><ConfiguredValue>-1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[CreationDate]" ValueType="DateTime"><ConfiguredValue>3/4/2007 5:32:13 PM</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[CreatorComputerName]" ValueType="String"><ConfiguredValue>SCN4685</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[CreatorName]" ValueType="String"><ConfiguredValue>ASIAPACIFIC\daij</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[DelayValidation]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[Description]" ValueType="String"><ConfiguredValue></ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[Disable]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[DisableEventHandlers]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[EncryptCheckpoints]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[FailPackageOnFailure]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[FailParentOnFailure]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[ForcedExecutionValue]" ValueType="Int32"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[ForceExecutionResult]" ValueType="Int32"><ConfiguredValue>-1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[ForceExecutionValue]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[InteractiveMode]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[IsolationLevel]" ValueType="Int32"><ConfiguredValue>1048576</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[LocaleID]" ValueType="Int32"><ConfiguredValue>2052</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[LoggingMode]" ValueType="Int32"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[MaxConcurrentExecutables]" ValueType="Int32"><ConfiguredValue>-1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[MaximumErrorCount]" ValueType="Int32"><ConfiguredValue>1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[Name]" ValueType="String"><ConfiguredValue>Package</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[OfflineMode]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[PackagePassword]" ValueType="String"><ConfiguredValue></ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[PackagePriorityClass]" ValueType="Int32"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[PackageType]" ValueType="Int32"><ConfiguredValue>5</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[ProtectionLevel]" ValueType="Int32"><ConfiguredValue>1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[SaveCheckpoints]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[SQLFolder]" ValueType="String"><ConfiguredValue>\</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[SuppressConfigurationWarnings]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[TransactionOption]" ValueType="Int32"><ConfiguredValue>1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[UpdateObjects]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[UpdatePackage]" ValueType="Boolean"><ConfiguredValue>-1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[VersionBuild]" ValueType="Int32"><ConfiguredValue>7</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[VersionComments]" ValueType="String"><ConfiguredValue></ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[VersionMajor]" ValueType="Int32"><ConfiguredValue>1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package.Properties[VersionMinor]" ValueType="Int32"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[BypassPrepare]" ValueType="Boolean"><ConfiguredValue>-1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[CodePage]" ValueType="UInt32"><ConfiguredValue>1252</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[Connection]" ValueType="String"><ConfiguredValue>SCN4685.DemoDB0.sa</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[DelayValidation]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[Description]" ValueType="String"><ConfiguredValue>Execute SQL Task</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[Disable]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[DisableEventHandlers]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[FailPackageOnFailure]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[FailParentOnFailure]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[ForcedExecutionValue]" ValueType="Int32"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[ForceExecutionResult]" ValueType="Int32"><ConfiguredValue>-1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[ForceExecutionValue]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[IsolationLevel]" ValueType="Int32"><ConfiguredValue>1048576</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[IsStoredProcedure]" ValueType="Boolean"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[LocaleID]" ValueType="Int32"><ConfiguredValue>2052</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[LoggingMode]" ValueType="Int32"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[MaximumErrorCount]" ValueType="Int32"><ConfiguredValue>1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[Name]" ValueType="String"><ConfiguredValue>Execute SQL Task</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[ResultSetType]" ValueType="Int32"><ConfiguredValue>1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[SqlStatementSource]" ValueType="String"><ConfiguredValue>usp_insertSSISLOG</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[SqlStatementSourceType]" ValueType="Int32"><ConfiguredValue>1</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[TimeOut]" ValueType="UInt32"><ConfiguredValue>0</ConfiguredValue></Configuration><Configuration ConfiguredType="Property" Path="\Package\Execute SQL Task.Properties[TransactionOption]" ValueType="Int32"><ConfiguredValue>1</ConfiguredValue></Configuration></DTSConfiguration>

|||This is the only line you should have in your configuration file for connections: (The ConnectionString property)

<Configuration

ConfiguredType="Property"

Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[ConnectionString]"

ValueType="String"><ConfiguredValue>Data Source=SCN4685;User

ID=sa;Initial

Catalog=DemoDB0;</ConfiguredValue></Configuration>

But, this seems to be using an ODBC connection. So, that means the ODBC connection has to change to point to the new database, OR, you have to change the "Data Source=XXXXX" parameter in the above line to point to the different ODBC connection. (Or Oracle connection, whatever it may be.)|||

Anyway,many many thanks

|||

Hahhahhha~~~~

Sometimes it‘s really weird!
2 whole days, I can’t figure out how to change the connection when deploying SSIS to another Server.
Today, I was so disappointed that I haven’t got the right way to work it round.
Before the shift is off, I fall a snap. And after snap, I used the XML spy to modify the configure file with password adding.
Hah~~it works!
I still wonder why the password is blank when we enabled the configure file option.
Here are my tips to change connections when deploying to Pro environment.

No need to change this:
<Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[ConnectionString]" ValueType="String"><ConfiguredValue>Data Source=SCN4685;User ID=sa;Initial Catalog=DemoDB0;Persist Security Info=True;</ConfiguredValue></Configuration>


But we have to change these property’s value:
InitialCatalog:
<Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[InitialCatalog]" ValueType="String"><ConfiguredValue>DemoDB1</ConfiguredValue></Configuration>
Password(what is blank at first):
<Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[Password]" ValueType="String"><ConfiguredValue>XXXXXX</ConfiguredValue></Configuration>
Servername:
<Configuration ConfiguredType="Property" Path="\Package.Connections[SCN4685.DemoDB0.sa].Properties[ServerName]" ValueType="String"><ConfiguredValue>SCN4685</ConfiguredValue></Configuration>

Gosh~~thanks.
It really works.

deploy pacakge - what files have to go?

I'm getting ready to deploy my SSIS packages to a real server (woohoo) after testing on my local SQL box. What files have to be deployed to the SQL server? I'm creating a folder for each package (easier for these guys to maintain when my contract is up). Does only the .dtsx and .dtsConfig file go or is there any other files that have to be copied over to the SQL server?

Only the dtsx files need to go. You can deploy individually or you can set the create deployment utility as a Project Property and then just double click the manifest to deploy all of them at once. You shouldn't have to manually copy any files.

|||

Ok, even though I have a .dtsconfig file defined for them, that doesn't have to go to the servers?

As for the .dtsx file, I see one in the Bin folder of my project and one outside of the bin folder which one goes or does the deploy utility grab the correct one?

|||

In the Deploymet folder there should be a file with the extension .SSISDeploymentManifest. Double click on that. It will deploy the files from the Deployment folder.

If you don't have a Deployment folder, right click on the project and choose properties.

In the properties page, click on the Deployment Utility entry (middle one) and change create deployment utility to True.

|||

Ok, thanks, I'll look into it. This is the first for this for me, so. .

|||

If you want to include the configuration settings from the .dtsconfig file then you should deploy it. I am 99.9 % certain that you want to include it.

The deploy utility will grab the correct .dtsx file.

|||

From my experience (not very much though ), its easier to do a xcopy than going through the process of creating deployment package modifying the manifest etc., That way you wont miss copying the config files also.

Its just my thought.

Thanks

Friday, February 17, 2012

Dependency file locations for a SSIS package

Hi all,

I've have a simple question. After running the SSIS deployment utility to install a couple of SSIS packages into a SQL Server, is there a way of determining programmatically (at some later stage) where the dependency files (in my case a simple xml configuration file) for the SSIS packages were installed (if the user chose not to install it into the default location).

Thanks,

Johan

Johanw581996 wrote:

Hi all,

I've have a simple question. After running the SSIS deployment utility to install a couple of SSIS packages into a SQL Server, is there a way of determining programmatically (at some later stage) where the dependency files (in my case a simple xml configuration file) for the SSIS packages were installed (if the user chose not to install it into the default location).

Thanks,

Johan

Absolute paths are required when pointing to things external to the package (XML configuration files, etc...), so the path should never change from when the package was developed.