Updating Deployed SSIS Package - sql

I have a deployed SSIS package, with a schedule and everything. Now, I have made changes to this package. Do I have to re-deploy it, and setup the schedule for it again, or is there a way for an already deployed SSIS package to be updated with the latest build?

Yes, you need to redeploy the package(s) to whatever location the scheduler expects to find the package(s).
You do not, however, need to recreate the job, configurations or any of that jazz, simply perform an in-place replacement of the dtsx package. If you stored it to the file system, copy the new version over it. If you stored it in SQL Server, use the command-line to replace it (approximately dtutil /file PkgName.dtsx /destserver thatdatabase /copy SQL;PkgName) or use the ssismanifest to deploy packages or my current favourite, use PowerShell for SSIS deployment and maintenance

Related

Publishing symbols to VSTS

I am using VSTS to build a xproj(dnx), the output is a set of a.nupkg with a.symbols.nupkg.
When i run the publish nuget package task it tries to upload all *.nupkg files to VSTS package managment. So when ever it hits the first symbols package it gets a 409 Conflict error.
In my dev builds i have a script that creates the package version by appending "alpha-{buildnumber} at the end, so as an example it would look like this: 1.0.0-alpha-1
So my question is, how is the best way to handle the symbols packages?
I manage to make it work by appending -:**\\*.symbols.nupkg to the default pattern in the VSTS Task.

Instead of automatically updating db, generate sql script with fluent n-hibernate for production enviornment

I've glanced over the different documentation, though have not found anything that addresses this. I'm looking at using fluentmigrator for future projects, though for staging/production practices have to do schema updates through a dba. I am allowed to do what I want for other environments such as testing, dev and local.
The purpose of the tool is entirely defeated if I have to write the scripts to do the changes anyway. However, it occurred to me, what if I didn't? So my question is this: Is it possible to have fluent migrate spit out a sql script to a file, instead of actually running the transaction?
In my experimentation I created a console app that uses the same DAL assembly as the main project, and leverages the migrator logic, so that whenever I run the console app, it updates the db from scratch, or from the nearest point depending on my choice. We use TeamCity, so thought it could be cool to have it run the app and place the script ( as an artifact) in a folder as a step in the build process for our DBA in the environments updating the schema myself would be frowned upon.
The FluentMigrator Command Line Runner will generate SQL scripts, without applying the changes to the database, if you use:
--preview=true
--output=true
--outputFilename=output1.sql
And, if you install the FluentMigrator.Tools package in addition to the FluentMigrator package, you will have access to the Command Line Runner from the migration project's build output directory (Migrate.exe).
Note:
The generated scripts will contain inserts into the FluentMigrator version table.
After reading Command Line Runner Options I'd use --verbose=true to output the sql script and --output to save it to a file. There seems to be no 'dry run' option however - you'll need to run the migration in some preproduction environment to obtain the script.
Give it a shot as I've admittedly never tried it.

Can I deploy an SSIS package to the file system using DTUTIL?

I have an SSIS package named Extract.dtsx. I want to deploy it to the file system in F:\SQL2005\MSSQL\Package\Extract.
The Package Instllation Wizard does this simply. I only have to choose "File system deployment" and choose the path, then click next a few times and finish. I'm having trouble figuring out if I can do the same this using DTUTIL.
Does anybody know if this is possible?
Yes, it's possible. I'm not sure what I was doing wrong.
If you have an SSIS package C:\temp\Extract.dtsx, you can deploy it to the file system in F:\SQL2005\MSSQL\Package\Extract using these commands:
c:\temp\md F:\sql2005\mssql\package\Extract
c:\temp\dtutil /file Extract.dtsx /Copy FILE;F:\sql2005\mssql\package\Extract\Extract.dtsx
The destination folder must already exist.
You can see the package in SQL Enterprise Manager by connecting to SSIS on the server, open Stored Packages > SSIS Application Packages > Extract.

Problems executing a SSIS package deployed to the file system

I have a SSIS master package, which executes several child packages. It works great, but when I deploy it to the file system on the server, I get an error code "0xC00220DE". "The system cannot find the file specified."
When I run the package on the server by double-clicking it, it works correctly. But when I use DTExec:
dtexec /FILE "d:\cmcdx\ssis\MAESTRO_FACTURACION.dtsx"
I get the mentioned error.
The package configuration is correct, and the user I'm executing the package with is administrator of the machine.
Should I deploy the packages to Sql Server? What are the best practices for deploying a master-child package? I'm running out of ideas here...
By the way, I'm running Sql Server 2005 sp3.
Solved it.
I was using relative paths to point to the child packages, and in runtime SSIS was unable to find them.
In the end I used a specific path, set in a configuration file. Then I used the deployment utility, copied everything to the server, run it by double clicking on the SSISDeploymentManifest file and changed the paths to the proper location.
Thank James and Justin for your answers.
Is the package not getting a path or location value from a package configuration file? If so make sure you include the /ConfigFile argument and the path to the config file. Another thing to possibly check is if you have any connections in the package that refer to mapped network drives, these may not work running under the different service account than your local console account.
[Edit]
Try this command line below on the server (notice the double slashes).
dtexec /FILE "d:\\cmcdx\\ssis\\MAESTRO_FACTURACION.dtsx"
There are several things that could be going wrong here. You mention that you're using a master package to run several child packages. Are all of your child packages in their proper location on the server as well?
Remember that the paths to the child packages should be variables in your master package so that those values can be changed through a configuration file on the server if need be.
You might also want to check out this set of tutorials on MSDN:
Package Deployment How-To Topics
These tutorials explain how to properly enable package configurations on the server when your package runs.

SSIS Deployment Utility - specifying different folders in MSDB

I am deploying my SSIS packages to MSDB by configuring the deployment utility and creating the manifest file in Visual Studio (2005).
In the Integration Services, I created a new folder to segregate my packages. Is there a way to specify this folder for my packages when creating the deployment utility?
If not, how do I move packages into the new folder once they're installed?
Thank you
I don't think it's possible to change the target folder in the deployment utility, as it can be used for both MSDB and file system deployments. It would be something you specified in the deployment wizard after selecting a SQL Server deployment - but the option isn't presented.
Once deployed, you can move packages around using the dtutil.exe utility, using the /move subcommand
dtutil /Sources *serverName* /SQL *packageName* /move SQL;*folderName\packageName*
As you can also use it to copy packages between the file system and MSDB storage, DTutil offers an alternative method of deploying files in the first place.