Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment surmonter ce type d'erreur :les mises à jour ad hoc des catalogues système ne sont pas autorisées ?

Vous ne pouvez pas mettre à jour les catalogues système, tout comme le message d'erreur l'a dit. Vous n'avez pas pu le faire depuis SQL Server 2000, et même à l'époque des cow-boys, c'était rarement une bonne idée. La façon dont vous devez le faire, comme l'a dit Gordon, est d'utiliser ALTER ASSEMBLY . Si vous n'avez qu'un seul assemblage à mettre à jour :

ALTER ASSEMBLY [assembly name] WITH PERMISSION_SET = EXTERNAL_ACCESS;

Si vous en avez plusieurs, vous pouvez générer un script en SQL dynamique :

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;

Je ne pense pas que vous ayez besoin de filtrer les assemblys Microsoft si vous avez fourni un assembly_id spécifique .