(Attempting to) Upgrade the SSIS Catalog to SSIS 2016

A couple people have asked me about upgrading the SSIS Catalog from previous versions to SQL Server 2016 so I decided to blog about it.

The SSIS Catalog is an SSIS Execution Framework that ships with SQL Server versions starting with 2012. To execute SSIS packages using the Catalog, the SSIS project must be built using the Project Deployment Model and deployed the SSIS Catalog. You can learn more about the process at the MSDN topic: Deployment of Projects. All SSIS Catalog functionality is encapsulated within a database named SSISDB.

As this MSDN article explains, SQL Server 2016 ships with a utility named the SSISDB Upgrade Wizard:

SSISDBUpgrade_6

The Adventure Begins

I decided to try it by restoring a backup of an SSISDB database to SQL Server 2016:

SSISDBUpgrade_0

The restore worked as expected:

SSISDBUpgrade_1

And the SSISDB database appeared in my list of databases in SSMS Object Explorer:

SSISDBUpgrade_2

So far, so good. I clicked the Start Windows icon in Windows Server 2016 Technical Preview 5 and browsed All Applications until I found the SQL Server 2016 Upgrade Wizard link:

SSISDBUpgrade_3

Once the upgrade wizard opened, I entered the name of the SQL Server 2016 instance that hosts the restored SSISDB database and then checked the “I have taken a backup of the SSISDB database. Continue with the SSISDB upgrade” checkbox. I clicked the Upgrade button to begin the upgrade process:

SSISDBUpgrade_4

I received this error:

SSISDBUpgrade_5

Sad Trombone…

The text of the error message reads:

CREATE ASSEMBLY for assembly ‘Microsoft.SqlServer.IntegrationServices.Server’ failed because assembly ‘Microsoft.SqlServer.IntegrationServices.Server’ is not authorized for PERMISSION_SET = UNSAFE.  The assembly is authorized when either of the following is true: the database owner (DBO) has UNSAFE ASSEMBLY permission and the database has the TRUSTWORTHY database property on; or the assembly is signed with a certificate or an asymmetric key that has a corresponding login with UNSAFE ASSEMBLY permission.
Changed database context to ‘SSISDB’.
Warning: The SQL Server client assembly ‘microsoft.sqlserver.integrationservices.server, version=13.0.0.0, culture=neutral, publickeytoken=89845dcd8080cc91, processorarchitecture=msil.’ you are registering is not fully tested in SQL Server hosted environment. (Microsoft.SqlServer.IntegrationServices.ISServerDBUpgrade)

I keyed on “PEERMISSION_SET”. My first thought was security and I know from experience the SSISDB database employs Transparent Data Encryption (TDE). So I began searching for information on how to restore a database that uses TDE. I found a helpful post at http://dba.stackexchange.com/questions/3388/restore-encrypted-database-to-another-server and executed a query I found in an answer:

SSISDBUpgrade_8

[sql]OPEN MASTER KEY DECRYPTION BY PASSWORD = 'SomePassword' ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY GO[/sql] [sql]The query succeeded, so I retried the SSISDB Upgrade Wizard and got an new error:[/sql] [sql]SSISDBUpgrade_9[/sql] [sql]The error message text is:[/sql]

Cannot drop the assembly ‘ISSERVER’, because it does not exist or you do not have permission.
Changed database context to ‘SSISDB’. (Microsoft.SqlServer.IntegrationServices.ISServerDBUpgrade)

I tried again, thinking I should re-restore the SSISDB database, then run the query to fix the TDE. No dice, same error as shown above. As of the time of this writing, I haven’t figured it out. I will update this post when I do.

In the meantime, I decided to take

A Different Approach…

… and use Catalog Compare to Migrate to the SSIS 2016 Catalog.

:{>

Learn more:

Related Training:
IESSIS2: Immersion Event on Advanced SQL Server Integration Services

Related Articles:
Stairway to Integration Services
SSIS 2016 Administration: Create the SSIS Catalog
Announcing SSIS Catalog Reports v0.1
SSIS Framework Community Edition (a free, open-source, SSIS Catalog-integrated execution framework)
Stairway to Biml

Related Books
SSIS Design Patterns

Help!
Enterprise Data & Analytics – We are here to help.

Andy Leonard

andyleonard.blog

Christian, husband, dad, grandpa, Data Philosopher, Data Engineer, Azure Data Factory, SSIS guy, and farmer. I was cloud before cloud was cool. :{>

5 thoughts on “(Attempting to) Upgrade the SSIS Catalog to SSIS 2016

  1. I manage two servers and ran into your last issue “Cannot drop the assembly ‘ISSERVER’, because it does not exist or you do not have permission.” on one of my servers.  For whatever reason the assembly ISSERVER does not exist when the upgrade wizard wants to drop and recreate it during the upgrade process.  
    I resolved the issue by running a Profiler trace, running the upgrade wizard, and finding the steps to manually create the new assembly.  With the assembly in place the upgrade wizard can drop and recreate it without issue.  Here is the TSQL to manually create the ISSERVER assembly.
    DECLARE @keypath NVARCHAR(1024) = N’SOFTWARE\Microsoft\Microsoft SQL Server\130\SSIS\Setup\DTSPath’
    DECLARE @path NVARCHAR(255)
    DECLARE @fullPath NVARCHAR(255)
    EXEC master..xp_regread ‘HKEY_LOCAL_MACHINE’, @keypath, N”, @path OUTPUT
    SET @fullPath = REPLACE( @path, ””, ””” ) + N’Binn\Microsoft.SqlServer.IntegrationServices.Server.dll’
    PRINT(@fullPath);
    — Use OpenRowset to read the binary bits into @asm_bin
    EXECUTE (‘DECLARE @asm_bin varbinary(max);  
    SELECT @asm_bin = BulkColumn FROM OPENROWSET (BULK N”’ + @fullPath + ”’,SINGLE_BLOB) AS dll
    CREATE ASSEMBLY ISSERVER FROM  @asm_bin  WITH PERMISSION_SET = UNSAFE’);

  2. The ISSERVER assembly failed to be dropped might because of the following reasons:
    1. The current active database is not SSISDB
    2. You are not the owner of this database
    3. The assembly doesn’t exist
    4. The trustworthy setting of the SSISDB is OFF
    5. This ISSERVER  assembly is referenced by some other assembly
    To resolve this issue,
    Firstly, you should check whether this assembly exists or referenced by other assembly.
    1. If this assembly doesn’t exist, create a fake one to unblock the entire upgrade.
    2. If this assembly is referenced by some other assembly, remove the dependency before the upgrading.
    Then, make sure the you have the permission to drop the folder by execting the following script:
    1.Changing database owner of SSISDB to ‘sa’
    use SSISDB
    go
    sp_changedbowner ‘sa’
    2. Change trustworthy setting
    ALTER DATABASE SSISDB SET TRUSTWORTHY ON

  3. 1. Create new SSIS Catalog
    2. Drop database SSISDB only
      This does not delete objects outside the SSISDB database (Logins, etc.)that belong to  the SSISDB catalog. Don’t drop SSISDB Catalog!
    3. Restore Database SSISDB
    4. Restore Master Key
    5. Upgrade SSISDB with UPGRADE Wizard
    Background Information for Manual Creation (SQL Server 2014)
    https://msdn.microsoft.com/en-us/library/hh213291(v=sql.120).aspx

  4. What Cory did by reinstalling the assembly helped me with a patching issue with SQL Server 2016. Once the assembly was reinstalled I was able to patch SQL correctly. It seems if you have SSIS installed and remove it then try to patch SQL while the SSIDB and Catalog are still installed you run into problems

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.