Home  >  Article  >  Database  >  SQL2000升级到2005

SQL2000升级到2005

WBOY
WBOYOriginal
2016-06-07 17:46:301098browse

SQL2000升级到2005过程可以采用附加、恢复、DTS或脚本等多种方式,一般运用都可以顺利升迁,但升迁后数据库的用户及权限就会是个大问题,我们称之为“孤立用户”。

虽然术语“登录”和“用户”经常交换使用,但它们之间有很大的不同。登录用于用户身份验证,而数据库用户帐户用于数据库访问和权限验证。登录通过安全识别符 (SID) 与用户关联。访问 SQL Server 服务器需要登录。验证特定登录是否有效的过程称为“身份验证”。登录必须与 SQL Server 数据库用户相关联。您使用用户帐户控制数据库中执行的活动。如果数据库中不存在针对特定登录的用户帐户,使用该登录的用户即使能够连接到 SQL Server 服务器,也无法访问数据库。但是,该情形的唯一例外是当数据库包含“guest”用户帐户时。与用户帐户不关联的登录将被映射到 guest 用户。相反,如果存在数据库用户,但没有与其关联的登录,则该用户将无法登录到 SQL Server 服务器中。

将数据库恢复到其他服务器时,数据库中包含一组用户和权限,但可能没有相应的登录或者登录所关联的用户可能不是相同的用户。这种情况被称为存在“孤立用户”。

孤立用户疑难解答

  当您将数据库备份恢复到另一台服务器时,可能会遇到孤立用户的问题。以下情形说明了该问题并阐述如何加以解决。

一下是孤立用户的形成:

  1. 向主数据库添加一个登录,并将默认数据库指定为 Northwind: Use master go sp_addlogin 'test', 'password', 'Northwind'

  2. 向刚创建的用户授予访问权限: Use Northwind go sp_grantdbaccess 'test'

  3. 备份数据库。 BACKUP DATABASE Northwind
TO DISK = 'C:MSSQLBACKUPNorthwind.bak'

  4. 将数据库恢复到其他 SQL Server 服务器: RESTORE DATABASE Northwind
FROM DISK = 'C:MSSQLBACKUPNorthwind.bak'
      
  恢复的数据库包含名为“test”的用户,但没有相应的登录,这就导致“test”成为孤立用户。
  5. 现在,为了检测孤立用户,请运行此代码: Use Northwind go sp_change_users_login 'report'
      
  输出中列出了所有登录,其中包含 Northwind 数据库的 sysusers 系统表和主数据库的 sysxlogins 系统表中不匹配的条目。

解决孤立用户问题的步骤

  1. 为前一步中的孤立用户运行以下命令:

Use Northwind
go
sp_change_users_login 'update_one', 'test', 'test',null
      
  这样,就将服务器登录“test”与 Northwind 数据库用户“test”重新连接起来。

  sp_change_users_login 存储过程还可以使用“auto_fix”参数对所有孤立用户执行更新,但不推荐这样做,因为 SQL Server 会尝试按名称匹配登录和用户。大多数情况下这都是可行的;但是,如果用户与错误登录关联,该用户可能拥有错误的权限。

  2. 在上一步中运行代码后,用户就可以访问数据库了。然后用户可以使用 sp_password 存储过程更改密码: Use master
go
sp_password NULL, 'ok', 'test'
      
  此存储过程不能用于 Microsoft Windows NT 安全帐户。通过 Windows NT 网络帐户连接到 SQL Server 服务器的用户是由 Windows NT 授权的;因此,这些用户只能在 Windows NT 中更改密码。

  只有 sysadmin 角色的成员可以更改其他用户的登录密码。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn