日期:2014-05-17  浏览次数:21244 次

SQL2008如何解决"不允许对系统目录进行即席更新"?
系统表sys.systypes中有任一数据

Name     xtpye  uid 

dtBaseNo   106   1

要运行 update  sys.systypes  set length =9 where uid =1 and xtype = 106 提示

不允许对系统目录进行即席更新

如何解决?
------最佳解决方案--------------------
sp_configure 'allow updates',1
RECONFIGURE WITH override
go
UPDATE syscolumns SET colid=colid+1
WHERE id=object_id('employee')
update syscolumns set colid=1
where id=object_id('employee') and name='test1'
go
sp_configure 'allow updates',0
RECONFIGURE WITH override 


------其他解决方案--------------------
系统目录东西不能随便更改的
------其他解决方案--------------------
下表列出了所有可用的配置选项、可能的设置范围及其默认值。配置选项旁的字母代码分别表示: 

高级选项(只能由认证的 SQL Server 技术人员更改,并且更改前需要将 show advanced options 设为 1),用"A"标识。


需要服务器重新启动才能生效的选项,用"RR"标识。


自配置选项(由 SQL Server 根据系统需要自行配置的选项),用"SC"标识。


sp_configure,上面是要求
------其他解决方案--------------------

sp_configure 'allow updates',1 
RECONFIGURE WITH override 
go
update  sys.systypes  set length =9 where uid =1 and xtype = 106 
go 
sp_configure 'allow updates',0 
RECONFIGURE WITH override





------其他解决方案--------------------
在 sql server 2005 和 sql server 2008 中,sys.systypes 是兼容视图,不允许直接更新,即使设置了 allow updates 选项。


------其他解决方案--------------------
引用:
在 sql server 2005 和 sql server 2008 中,sys.systypes 是兼容视图,不允许直接更新,即使设置了 allow updates 选项。
.
------其他解决方案--------------------
引用:
引用:
引用:
在 sql server 2005 和 sql server 2008 中,sys.systypes 是兼容视图,不允许直接更新,即使设置了 allow updates 选项。


.


那该如何办?难道只能用手动?
问题出自当自定义了数据类型后,在有数据的表中发现引用自定义的数据类型长度不够,必须修改自定义的数据类型的长度,数据库中的多个表和存储过程都引用了该用户自定义数据类型后。

将那个删除,再添加个同名的行不?
------其他解决方案--------------------
sql server 2005 和 sql server 2008 已经不允许直接修改系统表,allow updates 选项已经不再有用。

看来只能通过 sp_depends 找出所有引用此类型的数据库对象,逐一修改。

------其他解决方案--------------------
sql server 2005 和 sql server 2008 
不再支持直接对系统表进行修改。
------其他解决方案--------------------
这个不能直接改吧
------其他解决方案--------------------
学习。
------其他解决方案--------------------
试了sp_configure 'allow updates',1 
RECONFIGURE WITH override