不久之前,有朋友打电话找笔者,求救说自己被SQL Server关到了门外,问有没有办法解决,朋友之事不敢怠慢,赶紧跑去查看,顺带了些资料过去,以备查看,毕竟,这种事不才也是第一次遇到,呵呵。 跑过去看了一下,果然"sysadmin"无法登录,真的是被关到门外,这可有些麻烦了,朋友又不想重装SQL,只好翻资料了,最终,在某某资料某某部分查到某某文章如下: 要想重新访问SQL Server,您需要修改SQL Server 2000 和 SQL Server 7.0决定SQL Server身份验证模式的注册表键值。 在SQL Server 7.0中,该键为: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer \MSSQLServer\LoginMode 在SQL Server 2000中,该键为: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MicrosoftSQLServer \MSSQLServer\LoginMode “LoginMode”的值为0表示只进行Windows 的身份验证,为1表示验证模式为混合模式。在您把自己关在外面之后,您可以把“LoginMode”改为1,重新启动SQL Server,然后以sa(system administrator)身份登录,输入您知道的sa密码即可。 以下关于SQL Server的角色成员的信息可能会帮助您理解为什么您会把自己关在SQLServer外面。在您安装SQL Server 2000 或 7.0的时候,安装进程自动地为“BUILTIN\Administrators”创建一个登录帐号,该帐号为“sysadmin”角色成员。“BUILTIN\Administrators”登录帐号代表了Microsoft Windows® 2000 或Microsoft Windows NT® server 上的系统管理员本地组。 windows 2000 或 Windows NT的 “Administrator”帐户是系统管理员本地组的成员。此外,如果您的服务器是一个域的成员(包括Windows 2000 的域和Windows NT 4.0的域),“Domain Admins”全局组也会成为本地系统管理员组的成员。这意味着系统管理员本地组的所有成员都会自动地获得SQL Server上的“sysadmin”权限。 为了加强您的SQL Server的安全性,您可能更愿意创建您自己的组并授予它“sysadmin”权限,然后删除“BUILTIN\Administrators”登录帐号,或者至少从“sysadmin”服务器角色中删除它。使用这种方法,您可以较好地对谁可以访问您的SQL Server进行控制。这种方法也断开了SQL Server 系统管理员和Windows 2000 或 Windows NT 管理员之间的联系, 因为他们通常有不同的任务,并且需要不同的权限。为了加强安全性,您可能想把SQL Server配置成只支持Windows身份验证。但是,必须要记住:这种配置会禁用您的“sa”帐户。(这个方法可能是禁用“sa”帐户的唯一方法,因为您不能删除“sa”帐户。)如果您以错误的顺序实施了这个安全措施,您将不能再以>“sysadmin”的身份登录到SQL Server上,除非按照我上面所说的方法修改注册表键值。正确的顺序是: 创建Windows 2000 或者 Windows NT 用户组并为组分配成员。例如:创建一个叫做“SQLAdmins”的组。 把“SQLAdmins”映射为SQL Server里的一个用Windows身份验证方式验证登录的帐户,并把该帐户分派到“sysadmin”服务器角色。 删除“BUILTIN\Administrators”登录帐户或者把它从“sysadmin”服务器角色中删除。 把SQL Server的身份验证模式改为“仅进行Windows身份验证”。 重新启动SQL Server 以反映身份验证模式的变化。 注意: 如果您以下面的这种错误顺序实施这些步骤:删除“BUILTIN\Administrators”登录帐户,改变SQL Server 的身份验证模式为“仅进行Windows身份验证”,然后重新启动SQL Server,那么“sa” 帐户将被禁用,并且因为没有定义其它Windows身份验证登录帐户而无法进入SQL Server。为了避免这种情况发生,请以正确的顺序实施这些安全措施。
(出处:http://www.sheup.com)