No puede actualizar los catálogos del sistema, como decía el mensaje de error. No ha podido hacer esto desde SQL Server 2000, e incluso en aquellos días de vaquero rara vez era una buena idea. La forma en que necesita hacer esto, como dijo Gordon, es usar ALTER ASSEMBLY
. Si solo tiene un ensamblaje para actualizar:
ALTER ASSEMBLY [assembly name] WITH PERMISSION_SET = EXTERNAL_ACCESS;
Si tiene varios, puede generar un script usando SQL dinámico:
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += N'ALTER ASSEMBLY ' + QUOTENAME(name)
+ ' WITH PERMISSION_SET = EXTERNAL_ACCESS;
'
FROM sys.assemblies WHERE assembly_id = <someInt>; -- or IN (<some range>)
PRINT @sql;
-- EXEC sp_executesql @sql;
No creo que necesite filtrar los ensamblajes de Microsoft si ha proporcionado un assembly_id
específico .