Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie können Sie diese Art von Fehler umgehen:Ad-hoc-Updates für Systemkataloge sind nicht zulässig.?

Sie können die Systemkataloge nicht aktualisieren, genau wie die Fehlermeldung besagt. Das war seit SQL Server 2000 nicht mehr möglich, und selbst in den Cowboy-Tagen war das selten eine gute Idee. Dazu müssen Sie, wie Gordon sagte, MONTAGE ÄNDERN . Wenn Sie nur eine einzelne Assembly aktualisieren müssen:

ALTER ASSEMBLY [assembly name] WITH PERMISSION_SET = EXTERNAL_ACCESS;

Wenn Sie mehrere haben, können Sie ein Skript mit dynamischem SQL generieren:

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;

Ich glaube nicht, dass Sie die Microsoft-Assemblys herausfiltern müssen, wenn Sie eine bestimmte assembly_id angegeben haben .