Du kan inte uppdatera systemkatalogerna, precis som felmeddelandet sa. Du har inte kunnat göra detta sedan SQL Server 2000, och till och med på de cowboydagarna var det sällan en bra idé. Sättet du behöver göra detta, som Gordon sa, är att använda ÄNDRA MONTERING . Om du bara har en enda sammansättning att uppdatera:
ALTER ASSEMBLY [assembly name] WITH PERMISSION_SET = EXTERNAL_ACCESS;
Om du har flera kan du skapa ett skript med dynamisk SQL:
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;
Jag tror inte att du behöver filtrera bort Microsoft-sammansättningarna om du har angett ett specifikt assembly_id
.