As they say – There are more ways than one to skin a cat. In this blog we will find another method to fix an error which you might see during SQL upgrades – Cannot drop the assembly ‘ISSERVER’, because it does not exist or you do not have permission.
Here are the messages in SQL Server ERRORLOG when the upgrade was unable to start SQL Service. I have added bullets to have the readability of messages in ERRORLOG.
- Taking SSISDB to single user mode
- Setting database option SINGLE_USER to ON for database ‘SSISDB’.
- ———————————
- Starting assembly upgrade
- ———————————
- Altering assembly [ISSERVER]
- Attempting to load the library ‘xpstar.dll’ into memory. This is an informational message only. No user action is required.
- Using ‘xpstar.dll’ version ‘2014.120.5556’ to execute extended stored procedure ‘xp_regread’. This is an informational message only; no user action is required.
- Error: 50000, Severity: 16, State: 127.
- Cannot drop the assembly ‘ISSERVER’, because it does not exist or you do not have permission.
- Error: 50000, Severity: 16, State: 127.
- Cannot drop the assembly ‘ISSERVER’, because it does not exist or you do not have permission.
- Creating function internal.is_valid_name
- Error: 6528, Severity: 16, State: 1.
- Assembly ‘ISSERVER’ was not found in the SQL catalog of database ‘SSISDB’.
- Error: 912, Severity: 21, State: 2.
I have written earlier blog having one of the solutions to fix the error. SQL SERVER – Assembly ‘ISSERVER’ Was Not Found in the SQL Catalog of Database ‘SSISDB’
In athe bove blog post, a situation was easy where SSIS catalog was not in use. However, for my current client asked not to drop catalogs as he was not sure who is using it.
WORKAROUND/SOLUTION
If we have another server with the same version and having SSISDB installed, then we can perform below steps to recreate the assembly. We need to make sure that the version and patch level of SQL Server is matching.
- Start the problematic SQL with trace flag 902.
- Connect to SQL instance with working SSISDB database
- Expand SSISDB, Programmability, Assemblies
- Highlight ISSERVER, Right-click and choose Script Assembly as CREATE to New Query Editor Window
- Copy the CREATE ASSEMBLY statement and paste it into a query window on the problematic server
- Execute the CREATE ASSEMBLY statement
Note that the text, which you would copy, is going to be very long as it’s the complete .NET code in binary format.
- Once an assembly is created stop SQL and the start it without trace flag 902.
Is there any other way to create assembly ISSERVER? If I find it, I would share in another blog. If you find it, please comment and share with the SQL community.
Reference: Pinal Dave (https://blog.sqlauthority.com)
First appeared on SQL SERVER – Cannot Drop the Assembly ‘ISSERVER’, Because it Does not Exist or You do not Have Permission