Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como você supera esse tipo de erro:Não são permitidas atualizações ad hoc nos catálogos do sistema.?


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 .