写了一个系统函数,删除不掉了。。。
以下内容是看论坛一个帖子学的,我也写了一个类似的,但却修改不了,也删除不掉,这个函数变成 'system_function_schema '的了,大家可以测试一下
可以写一个系统函数,前提是必须以fn_开头:
如:
use master
go
create function fn_Trim(@v Nvarchar(4000))
returns Nvarchar(4000)
as
begin
return ltrim(rtrim(@v))
end
go
exec sp_configure 'allow updates ',1
reconfigure with override
go
exec sp_mschangeobjectowner 'fn_Trim ', 'system_function_schema '
go
exec sp_configure 'allow updates ',0
reconfigure with override
go
--调用
use northwind
go
select fn_trim(N 'a ')--不带用户名
------解决方案--------------------use master
go
exec sp_configure 'allow updates ',1
reconfigure with override
go
delete sysobjects where name = 'fn_Trim '
------解决方案--------------------楼主,sp_mschangeobjectowner 这个存储过程在帮助里是没有文档的,你是怎么找出来的?
------解决方案--------------------要放开修改系统对象的权限
------解决方案--------------------这是一个未公开的存储过程,帮助里有sp_changeobjectowner 功能一样
------解决方案----------------------直接更改sysobjects表uid列为1
exec sp_configure 'allow updates ',1
reconfigure with override
go
update sysobjects set uid = 1 where name = 'Fn_Trim '
go
exec sp_configure 'allow updates ',0
reconfigure with override
--成功删除
drop function Fn_Trim