Deploying a SSIS 2016 packages (Project Deployment Model) to the file system - sql-server

Working on a project to migrate SSIS 2008 projects to 2016 deployed to a File Server. Currently have the packages on the file server and prefer to keep it that way. I'm aware that the Project Deployment Model has been introduced since 2012.
Questions:
Can I change the migrated projects to Project Deployment Model and still deploy to the File System? Is changing to a Project Deployment Model a best practice?
Researching online, I can only find tutorials on how to deploy to SSISDB(Catalogue). Is the deployment to a File System still the same as previous versions ie. Build project > SSIS creates manfest file in project directory > open the manifest file to deploy?

Well, it is possible with certain limitations.
First, let's state that "deploying to File System" usually means that you store your package on a file system folder, and run it with dtexec. In that sense, deploy SSIS Project to File System is certainly possible, you can run any package from project file. For more details and examples - see MS Docs on dtexec.
However, this is not practical. By doing so, you loose a significant part of SSIS functionality introduced in 2012 version. For example, execution reports in SSIS Catalogue, and project environments which allow fine control and management of package parameters, including encryption of sensitive data like passwords. SSIS Catalogue keeps versions of deployed packages, so you can roll back to previous version easily.
Besides, SSIS Catalogue is fully supported in SSMS; on running package from project file - you are on your own to supply parameters; connection strings are usually passed from environments.

Yes, it's possible but not recommended (and not always possible). Package deployment model exists for backward compatibility. Once you convert your packages to Project Deployment Model you should deploy only to the SSISDB catalog on an instance of SQL Server.
Project Deployment Model contains packages, parameters, Connection managers and more very cool features introduced in 2012. This is the best option to work with SSIS these days.
https://learn.microsoft.com/en-us/sql/integration-services/packages/deploy-integration-services-ssis-projects-and-packages

Related

How to create a targeted dacpac without complications for ASP.NET Core web app and SQL Server database?

My yaml github workflow deployment build fails for actions/setup-dotnet#v1 looking for an unloaded SQL Server project. I don't understand why the build machine expects a SQL Server project file. I "Unloaded" the SQL Server project from my Visual Studio solution after creating the dacpac and before pushing. The same solution (now only .NET Core project with the unloaded SQL Server project) builds on my machine. The only reason I created the SQL Server project was for the dacpac.
C:\Users\runneradmin\AppData\Local\Microsoft\dotnet\sdk\5.0.400\NuGet.targets(290,5): error MSB3202: The project file "D:\a\rollbase\Database-Proj\Database-Proj.sqlproj" was not found. [D:\a\rollbase\rollbase\rollbase.sln]
Build FAILED.
Deleting the sql project to produce single proj solution builds successfully on github. So somewhere a reference to the unloaded project exists if it remains visible in VS Solution Explorer. Meaning the only way I can get the runner to build my solution is to delete the sql project after producing the dacpac each time. This seems clumsy and still leaves me not understanding the error.
This fairly recent post Developer Community Issue 2020 seems to indicate the same kind of problem but opposite fail situation. Though it doesn't help to only be able to read one half of the conversation.
Has anyone got a solution for my github DOTNET_VERSION: '5.0.400 build or a better process for getting a targeted dacpac during database updates for a net core solution? I would appreciate any input.

How to configure the parameters for deploying a project in different environments of SQL server

I am an oracle developer, working first time with SQL servers.
I have created a project in SSIS which have 5 different packages in it, I have to deploy it in dedicated SQL servers(test, acceptance and Prod). where the variable values should be picked from the parameters which I have defined for my dedicated package on environment basis.
I read it in SQL tutorial that I have to convert my project to project deployment model which I have already done(2 packages failed because of some connection issues hence ignoring those 2 packages and focusing on other 3 packages inside the project).
I deployed it in my SQL server(test) but when trying to execute the package it fails stating "Error in reading source file".
Note : When I run the same package in local machine it runs but as soon as deploying to server it stops reading file.
I have created parameters under 1 package.
I am not sure, If I have to convert it to project deployment model or Legacy package deployment model.
Also read in tutorials and not understanding when to convert the project to Project deployment model and when to convert it to legacy package deployment model.

How to script an already deployed SSIS project from SSISDB - SqlServer 2012

I want to know if, for an already deployed SSIS project, from SSISDB-Sql Server 2012, I can script the hole package, with all its parameters, connection managers, references, everything?
I have an already deployed SSIS project but I must deploy it using scripts to some other database and I would like to script all project parameters.
Regards,
You can export whole SSIS project from SSISDB as an .ispac file from SQL Server Management Studio; just select project and Export... from context menu. However, this file will contain only project with its parameters, connection managers and packages; you can deploy it on another server without references and environments.
You cannot export referencies and environments from SSISDB with SSMS. There is an excellent article with script sample. Script generates a set of t-sql commands recreating environment and its references with project.
Combining these two approaches you will be done.

How to change the connections in SSIS package after deployment?

Just started to work on a SSIS ETL package at work and I am sort of stuck thinking how to solve this problem and how others solved it. Since I am fair new to SSIS, I must ask the experts here. So I am creating a SSIS ETL package which I create source and destination connection (mostly relational databases) in a development environment, which means the source and destination connections are to development databases. Everything works out fine. The problem is when I complete the SSIS package, build it, create the manifest and deployed, then I realize the package will fail, because I have deployed the package in the production environment, which means the source and destination connection are to production databases, in production environment.
So my questions is how do I create a ssis ETL package in the development phase or development environment using development source and destination connections be able to deploy a package into a different environment where the source and destination connection are different?
I am using sql server 2012 with BIDS 2012, Data Tools 2012.
You can make the package connection configurable.
select "SSIS">> Pacakage Configuration >> navigate to connection >> select servername and database name
Click next
Save pacakge configuration to dtsconfig file.
During deployment modify this dtsconfig file and specify.
once you have deployed your package navigate to Integration Services Catalog -> SSISDB -> your SSIS Project.
Once there open up the desired package and under [Connections] tab you can change the connection.
Alternative to this (method 2) is to create Environments; where you can quickly change between dev, qa, prod by checking towards the bottom which environment you wish SSIS to pick up config from.

Octopus Deploy tentacles and 2 Nuget packages?

I'm learning about the environments and machines of Octopus. I have a Web project that is packaged into a Nuget package and deployed to Azure Websites, and I also have a DB project that is packaged into a separate Nuget package to SQL Azure. When Octo picks them up and deploys, is it better to have two separate machines have tentacles for each in the same environment, or should they be on one machine (in the case that the website deployment passes and the DB doesn't)?
If you're deploying to Azure, it doesn't really matter - 1 tentacle is enough for ALL environments (regardless of project type). We do this all the time for our Azure projects. You can think of the tentacle being a PowerShell script runner against Azure; nothing really happens on the actual server itself.
You can have multiple Octopus "environments" using the same tentacle (especially for Azure) - as you can reuse the same tentacle. This will allow you to use different scopes for your variables to apply the appropriate values per each logical environment, all the while targeting just one server which does runs scripts against Azure.

Resources