Non è possibile aggiornare i cataloghi di sistema, proprio come diceva il messaggio di errore. Non sei stato in grado di farlo da SQL Server 2000 e anche ai tempi dei cowboy raramente era una buona idea. Il modo in cui devi farlo, come ha detto Gordon, è usare ALTER ASSEMBLY
. Se hai un solo assieme da aggiornare:
ALTER ASSEMBLY [assembly name] WITH PERMISSION_SET = EXTERNAL_ACCESS;
Se ne hai più, puoi generare uno script utilizzando SQL dinamico:
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;
Non credo che tu debba filtrare gli assembly Microsoft se hai fornito un assembly_id
specifico .