巧用系统表修改数据库用户名
软件世界
问题的提出
SQL Server有两种登录方式,一种是Windows登录,另一种是混合登录。当使用混合登录的时候,我们可以为用户分配账号和密码。要修改用户名时,我们必须将原用户名删除再重新建立。这样做的后果是:以前对此用户做的关联配置也必须重新建立。
比如有一个用户名为cc的用户,你为他做了以下的关联配置:拥有多个角色,可以访问A、B、C数据库,默认登录数据库是A。现在你要把cc用户的账户名改为aacc,那么你的操作方法可能是这样的:先将cc用户删除,然后再建立aacc用户,最后重新配置关联。
对于单个用户,你可以这样做,但是如果有100个这样的用户呢?重复的操作会浪费大量的时间,也很容易引发错误。别着急,笔者有个好办法,一起来试试。
问题的解决
在安装完SQL Server后系统会自动生成master数据库,当你打开master时,会发现很多数据表,并且这些表的类型都被标为“系统”。这些系统表将记录所有的与SQL Server相关的信息。其中有一个叫sysxlogins的表,这个表就是用来专门保存用户名的。笔者就是通过修改这个表来直接修改用户名。步骤如下。
1.修改表的状态
我们不能直接修改这个表,因为在SQL Server中不允许我们这样做。先打开“查询分析器”,输入下面的语句并运行,使SQL Server能够接受修改。
USE master
Go
Sp_configure ’allow’,1
Reconfigure with override
2.修改name列
进入“企业管理器”,打开sysxlogins表(见图),在name列中找到“cc”并将它修改为“aacc”,保存并退出。
3.刷新
在“企业管理器”中展开“安全性→登录”,右击,选择“刷新”,你就可以看到修改后的账户名了。
4.恢复表的状态
最后我们还必须将sysxlogins表改回原来的状态,即不接受修改。方法是在“查询分析器”中执行下面的语句:
USE master
Go
Sp_configure ’allow’,0
Reconfigure with override
检查aacc用户的相关信息,所有的关联配置都没有变化。
