如何删除Sql Server中的sa帐户
众所周知,在Ms Sql Server中有个绝对是网络安全中的隐患的帐号sa,系统管理员 (sa),默认情况下,它指派给固定服务器角色 sysadmin,并不能进行更改。这个sa一般情况下是既不可以更改名称,也不可以删除。
首先打开SQL中的企业管理器,接着在工具选项卡中选择SQL server配置属性依次,点服务器设置,看到允许对系统目录直接进行修改前面的方框吗,点一下,好。
再打开查询分析器,登陆进去(呵呵,随便你用什么帐号进去,不过可一定要在master数据库中有db_owner的权限)输入
程序代码
update sysxlogins set name=’ddd’ where sid=0x01
update set sid=0xE765555BD44F054F89CD0076A06EA823 where name=’ddd’
如果出现
引用内容
服务器: 消息 259,级别 16,状态 2,行 1
未启用对系统目录的特殊更新。系统管理员必须重新配置 SQL Server 以允许这种操作。
的错误,参见下边有解决方法!
OK,执行成功,好拉,转道企业管理器中刷新安全性中的登陆,看看,sa是不是变成ddd拉,呵呵,选中ddd点击右键,怎么样是不是出现拉删除的选项,呵呵,删除。看看sa是不是已经没有拉。
直接在查询分析器里怎么删除sa,做法和前面所说的差不多,利用sqlserver提供的扩展存储过程来完成这项任务。下面就是我所说的需要利用是微软提供的系统存储过程sp_configure。
引用内容
sp_configure
显示或更改当前服务器的全局配置设置。
语法
sp_configure [ [ @configname = ] 'name' ]
[ , [ @configvalue = ] 'value' ]
参数
[@configname =] 'name'
配置选项的名称。Name 的数据类型为 varchar(35),默认值为 NULL。Microsoft® SQL Server™ 理解作为配置名称一部分的任何独特的字符串。如果没有指定,则返回整个选项列表。
[@configvalue =] value
新的配置设置。Value 的数据类型为 int,默认值为 NULL。
返回代码值
0(成功)或 1(失败)
使用 sp_configure 更改设置时,请使用 RECONFIGURE WITH OVERRIDE 语句使更改立即生效。否则,更改将在 SQL Server 重新启动后生效。
使用 sp_configure 显示或更改服务器级的设置。使用 sp_dboption 更改服务器级的设置,使用 SET 语句更改只影响当前用户会话的设置。
权限
在 sp_configure 上没有参数(或只有第一个参数)的执行许可权限默认授予所有用户。有两个参数的 sp_configure(用于更改配置选项)的执行许可权限默认授予 sysadmin 和 serveradmin 固定服务器角色。RECONFIGURE 权限默认授予 sysadmin 固定服务器角色和 serveradmin 固定服务器角色,并且不能传输(不可转让)。
引用内容
语法
RECONFIGURE [ WITH OVERRIDE ]
参数
RECONFIGURE
指定如果配置设置不需要服务器停止并重新启动,则更新当前运行的值。RECONFIGURE 还检查无效值(如 syscharsets 中不存在的排序次序值)或非推荐值(如将 allow updates 设置为 1)的新配置值。对于那些不需要服务器停止并重新启动的配置选项,其当前运行的值和当前配置的值在指定 RECONFIGURE 后应相同。
WITH OVERRIDE
对 allow updates、recovery interval 或 time slice 高级配置选项禁用配置值检查(检查无效值或非推荐值)。另外,RECONFIGURE WITH OVERRIDE 使用指定值强制重新配置。例如,min server memory 配置选项可使用大于 max server memory 配置选项中所指定的值来配置。然而,这被认为是致命错误。因此,指定 RECONFIGURE WITH OVERRIDE 将不禁用配置值检查。任何配置选项都可以通过 WITH OVERRIDE 选项重新配置。
allow updates 选项
使用 allow updates 选项指定是否可以直接更新系统表。默认情况下,allow updates 选项被禁用(设为 0),所以用户不能通过特殊更新来更新系统表,而只能通过系统存储过程更新系统表。当禁用 allow updates 选项时,尽管您可能有足够的权限(由 GRANT 语句赋予),仍不能进行更新。
当启用 allow updates(设为 1),任何具有适当权限的用户都可以直接用特殊更新来更新系统表,或者创建可更新系统表的存储过程。
如果使用 sp_configure 系统存储过程将 allow updates 设置为 1,则必须使用 RECONFIGURE WITH OVERRIDE 语句。该设置立即生效(无需停止并重新启动服务器)。
于是我们可以使用
程序代码
sp_configure 'allow updates', 1
go
RECONFIGURE WITH OVERRIDE
go
好拉,这样我们就可以更新系统表拉,接下来和前面的做法一样拉
程序代码
update sysxlogins set name=’ddd’ where sid=0x01
然后再删除ddd(选中ddd点击右键删除),不过要注意在 sp_configure 上没有参数(或只有第一个参数)的执行许可权限默认授予所有用户。有两个参数的 sp_configure(用于更改配置选项)的执行许可权限默认授予 sysadmin 和 serveradmin 固定服务器角色。
完整代码
程序代码
exec sp_configure 'allow updates','1'
go
RECONFIGURE WITH OVERRIDE
go
update sysxlogins set name='netfetch' where sid=0x01
update sysxlogins set sid=0xE765555BD44F054F89CD0076A06EA823 where name='netfetch'
go
RECONFIGURE 权限默认授予 sysadmin 固定服务器角色和 serveradmin 固定服务器角色,并且不能传输。
而且该用户在master中必须是db_owner。