繁体   English   中英

您如何克服这种错误:“不允许对系统目录进行临时更新。”?

[英]How do you get past this sort of error: “Ad hoc updates to system catalogs are not allowed.”?

进行以下输入:

update sys.assemblies set permission_set_desc = 'EXTERNAL_ACCESS' where
assembly_id = <someInt> and name not like 'microsoft%'

和以下输出:

Msg 259, Level 16, State 1, Line 2
Ad hoc updates to system catalogs are not allowed.

这是在SQL Server 2012中。我以“ sa”身份登录,因此这可能不是用户权限问题。 我在Google上找到的链接没有解决方案,或者我很难遵循。 在不对数据库进行不必要的永久更改的情况下,如何克服这一问题? 谢谢!

编辑

抱歉,我不小心从错误的窗口复制并粘贴了输入和输出。 我删除了我真正遇到的麻烦,因此无法找到它的实质。 第一条评论修复了我遇到的任何麻烦。 我不记得现在到底是什么了,但是我很快就会从一件事转到另一件事……如果我以后记得我在看什么,我会解决问题,但我会继续处理现在的问题是。

您无法更新系统目录,就像错误消息中所说的一样。 自SQL Server 2000以来,您一直无法做到这一点,即使在那个牛仔时代,这也不是一个好主意。 就像Gordon所说的那样,您需要执行的方法是使用ALTER ASSEMBLY 如果您只有一个要更新的程序集:

ALTER ASSEMBLY [assembly name] WITH PERMISSION_SET = EXTERNAL_ACCESS;

如果有多个,则可以使用动态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;

我认为如果提供了特定的assembly_id则无需过滤掉Microsoft程序assembly_id

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM