Você não pode atualizar os catálogos do sistema, assim como a mensagem de erro disse. Você não consegue fazer isso desde o SQL Server 2000 e, mesmo naqueles dias de cowboy, raramente era uma boa ideia. A maneira como você precisa fazer isso, como Gordon disse, é usar
ALTER ASSEMBLY
. Se você tiver apenas um único assembly para atualizar:ALTER ASSEMBLY [assembly name] WITH PERMISSION_SET = EXTERNAL_ACCESS;
Se você tiver vários, poderá gerar um 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;
Não acho que você precise filtrar os assemblies da Microsoft se tiver fornecido um
assembly_id
específico .