First, this is for SQL Server 2016. If I was on 2017+, I would be using sp_add_trusted_assembly. Just wanted to clarify that before asking the question. How do you register the assembly System.DirectoryServices.AccountManagement.dll without using TRUSTWORTHY ON? I cannot get it to work using an asymmetric key generated off of System.DirectoryServices.dll. The AccountManagement dll is signed differently than System.DirectoryServices.dll. I've even tried creating a separate asymmetric key off of System.DirectoryServices.AccountManagement.dll but that results in: **Msg 15468, Level 16, State 7, Line 130 An error occurred during the generation of the asymmetric key.** Here is a test script I have written to try to create this assembly. USE master IF DB_ID('CLR_Test') IS NULL BEGIN CREATE DATABASE CLR_Test END GO USE [CLR_Test] GO EXEC sp_configure @configname=clr_enabled, @configvalue=1 GO RECONFIGURE GO /*************************************************************************************/ -- DROP OBJECTS IF FOUND FIRST /*************************************************************************************/ -- DROP System.DirectoryServices.AccountManagement IF EXISTS(SELECT 1 FROM sys.assemblies WHERE name = 'System.DirectoryServices.AccountManagement') BEGIN RAISERROR( 'DROP ASSEMBLY [System.DirectoryServices.AccountManagement]', 0, 1) WITH NOWAIT DROP ASSEMBLY [System.DirectoryServices.AccountManagement] END -- DROP System.DirectoryServices.Protocols IF EXISTS(SELECT 1 FROM sys.assemblies WHERE name = 'System.DirectoryServices.Protocols') BEGIN RAISERROR( 'DROP ASSEMBLY [System.DirectoryServices.Protocols]', 0, 1) WITH NOWAIT DROP ASSEMBLY [System.DirectoryServices.Protocols] END -- DROP System.DirectoryServices IF EXISTS(SELECT 1 FROM sys.assemblies WHERE name = 'System.DirectoryServices') BEGIN RAISERROR( 'DROP ASSEMBLY [System.DirectoryServices]', 0, 1) WITH NOWAIT DROP ASSEMBLY [System.DirectoryServices] END GO IF EXISTS(SELECT 1 FROM sys.database_principals dp WHERE dp.name = 'MSFT_CLR_Login') BEGIN RAISERROR( 'DROP USER [MSFT_CLR_Login]', 0, 1) WITH NOWAIT DROP USER [MSFT_CLR_Login] END GO USE [master] GO IF (EXISTS(SELECT 1 FROM master.sys.syslogins WHERE name = 'MSFT_CLR_Login')) BEGIN RAISERROR( 'DROP LOGIN [MSFT_CLR_Login]', 0, 1) WITH NOWAIT DROP LOGIN [MSFT_CLR_Login] END GO IF (EXISTS(SELECT 1 FROM master.sys.asymmetric_keys WHERE name = 'MSFT_CLR_Key')) BEGIN --DROP ASYMMETRIC KEY [ClrKey] RAISERROR( 'DROP ASYMMETRIC KEY [MSFT_CLR_Key]', 0, 1) WITH NOWAIT DROP ASYMMETRIC KEY [MSFT_CLR_Key] END GO /*************************************************************************************/ -- CREATE THE OBJECTS /*************************************************************************************/ USE [master] GO IF (NOT EXISTS(SELECT 1 FROM master.sys.asymmetric_keys WHERE name = 'MSFT_CLR_Key')) BEGIN --DROP ASYMMETRIC KEY [ClrKey] RAISERROR( 'CREATE ASYMMETRIC KEY [MSFT_CLR_Key]', 0, 1) WITH NOWAIT CREATE ASYMMETRIC KEY [MSFT_CLR_Key] FROM EXECUTABLE FILE = 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.DirectoryServices.dll' END GO IF (NOT EXISTS(SELECT 1 FROM master.sys.syslogins WHERE name = 'MSFT_CLR_Login')) BEGIN RAISERROR( 'CREATE LOGIN [MSFT_CLR_Login]', 0, 1) WITH NOWAIT CREATE LOGIN [MSFT_CLR_Login] FROM ASYMMETRIC KEY [MSFT_CLR_Key] END GO RAISERROR( 'GRANT UNSAFE ASSEMBLY', 0, 1) WITH NOWAIT GRANT UNSAFE ASSEMBLY TO [MSFT_CLR_Login] GO RAISERROR( 'GRANT EXTERNAL ASSEMBLY', 0, 1) WITH NOWAIT GRANT EXTERNAL ACCESS ASSEMBLY TO [MSFT_CLR_Login] GO USE CLR_Test GO IF NOT EXISTS(SELECT 1 FROM sys.database_principals dp WHERE dp.name = 'MSFT_CLR_Login') BEGIN RAISERROR( 'CREATE USER [MSFT_CLR_Login]', 0, 1) WITH NOWAIT CREATE USER [MSFT_CLR_Login] FOR LOGIN [MSFT_CLR_Login] END GO /*************************************************************************************/ -- CREATE THE CLR OBJECTS /*************************************************************************************/ USE CLR_Test GO /****************************************************************************/ -- [System.DirectoryServices] /****************************************************************************/ CREATE ASSEMBLY [System.DirectoryServices] FROM 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.DirectoryServices.dll' WITH PERMISSION_SET = UNSAFE /****************************************************************************/ -- [System.DirectoryServices.Protocols] /****************************************************************************/ CREATE ASSEMBLY [System.DirectoryServices.Protocols] FROM 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.DirectoryServices.Protocols.dll' WITH PERMISSION_SET = UNSAFE /****************************************************************************/ -- [System.DirectoryServices.AccountManagement] /****************************************************************************/ CREATE ASSEMBLY [System.DirectoryServices.AccountManagement] FROM 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.DirectoryServices.AccountManagement.dll' WITH PERMISSION_SET = UNSAFE /* -- NOR CAN YOU CREATE AN ASSYMETRIC KEY OFF System.DirectoryServices.AccountManagement.dll CREATE ASYMMETRIC KEY [MSFT_SDA_CLR_Key] FROM EXECUTABLE FILE = 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.DirectoryServices.AccountManagement.dll' -- results in: -- Msg 15468, Level 16, State 7, Line 130 -- An error occurred during the generation of the asymmetric key. */