PRB: El tema "Solucionar problemas de usuarios huérfanos" de los Libros en pantalla está incompleto

Seleccione idioma Seleccione idioma
Id. de artículo: 274188 - Ver los productos a los que se aplica este artículo
Este artículo se publicó anteriormente con el número E274188
Expandir todo | Contraer todo

En esta página

Síntomas

Cuando se restaura una copia de seguridad de una base de datos en otro servidor, puede ser que se tengan problemas con usuarios huérfanos. El tema Solucionar problemas de usuarios huérfanos de los Libros en pantalla de SQL Server no describe los pasos exactos para solucionar este problema.

En este artículo se describe cómo solucionar problemas relacionados con usuarios huérfanos.

Estado

Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados al principio de este artículo.

Más información

Aunque los términos usuario e inicio de sesión se utilizan a menudo indistintamente, son muy diferentes. El inicio de sesión se utiliza para la autenticación del usuario y una cuenta de usuario de base de datos se usa para el acceso a bases de datos y la validación de permisos. El identificador de seguridad (SID) asocia los inicios de sesión a usuarios. Para tener acceso al servidor de SQL Server es necesario un inicio de sesión. Al proceso de comprobar que un inicio de sesión determinado es válido se le denomina "autenticación". Este inicio de sesión debe estar asociado a un usuario de base de datos de SQL Server. La cuenta de usuario se utiliza para controlar las actividades efectuadas en la base de datos. Si en una base de datos no existe ninguna cuenta de usuario para un inicio de sesión determinado, el usuario que está usando ese inicio de sesión no puede tener acceso a la base de datos aunque sí que pueda conectarse al servidor de SQL Server. La única excepción a esta situación es cuando la base de datos contiene la cuenta de usuario "invitado". Un inicio de sesión que no tiene una cuenta de usuario asociada se asigna al usuario invitado. A la inversa, si existe un usuario de base de datos pero no hay ningún inicio de sesión asociado, el usuario no podrá iniciar sesión en el servidor de SQL Server.

Cuando se restaura una base de datos en otro servidor ésta contiene un conjunto de usuarios y permisos, pero puede que no haya ningún inicio de sesión correspondiente o puede que los inicios de sesión no estén asociados a los mismos usuarios. Esta condición se conoce como tener "usuarios huérfanos".

Solucionar problemas de usuarios huérfanos

Cuando se restaura una copia de seguridad de una base de datos en otro servidor, puede ser que se tengan problemas con usuarios huérfanos. El escenario siguiente ilustra el problema y muestra cómo resolverlo.
  1. Agregue un inicio de sesión a la base de datos principal y especifique la base de datos predeterminada como Neptuno:
    Use master go sp_addlogin 'test', 'password', 'Northwind'
  2. Conceda acceso al usuario que acaba de crear:
    Use Northwind go sp_grantdbaccess 'test'
  3. Haga una copia de seguridad de la base de datos.
    BACKUP DATABASE Northwind
    TO DISK = 'C:\MSSQL\BACKUP\Northwind.bak'
  4. Restaure la base de datos en otro servidor de SQL Server:
    RESTORE DATABASE Northwind
    FROM DISK = 'C:\MSSQL\BACKUP\Northwind.bak'
    La base de datos restaurada contiene un usuario denominado "prueba" que no tiene el inicio de sesión correspondiente, lo que hace que "prueba" esté huérfano.
  5. Ahora, para detectar usuarios huérfanos, ejecute el código siguiente:
    Use Northwind go sp_change_users_login 'report'
    El resultado muestra todos los inicios de sesión cuyas entradas de la tabla del sistema sysusers (de la base de datos Neptuno) no coincidan con la tabla del sistema sysxlogins (de la base de datos principal).

Pasos para resolver problemas relacionados con usuarios huérfanos

  1. Ejecute el comando siguiente para el usuario huérfano del paso anterior:
    Use Northwind
    go
    sp_change_users_login 'update_one', 'test', 'test'
    De esta manera se vuelve a vincular el inicio de sesión de servidor "prueba" con el usuario "prueba" de la base de datos Neptuno. El procedimiento almacenado sp_change_users_login también puede realizar una actualización de todos los usuarios huérfanos con el parámetro "auto_fix", pero no se recomienda ya que SQL Server intenta hacer coincidir por nombre los inicios de sesión y los usuarios. En la mayoría de los casos esto funciona; sin embargo, si el inicio de sesión incorrecto se asocia a un usuario, éste puede tener permisos incorrectos.
  2. Una vez ejecutado el código del paso anterior, el usuario puede tener acceso a la base de datos. Entonces podrá modificar la contraseña con el procedimiento almacenado sp_password:
    Use master 
    go
    sp_password NULL, 'ok', 'test'
    Este procedimiento almacenado no se puede usar para cuentas de seguridad de Microsoft Windows NT. Los usuarios que se conectan a un servidor de SQL Server mediante su cuenta de red de Windows NT son autenticados por Windows NT; por consiguiente, sus contraseñas sólo se pueden cambiar en Windows NT.

    Sólo los miembros de la función sysadmin pueden cambiar la contraseña para el inicio de sesión de otro usuario.

Referencias

Para obtener información adicional acerca de cómo resolver problemas relacionados con los permisos cuando se cambia de servidor una base de datos, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
240872 INF: Cómo resolver problemas de permisos cuando se traslada una base de datos entre servidores SQL Server

Propiedades

Id. de artículo: 274188 - Última revisión: lunes, 09 de febrero de 2004 - Versión: 3.1
La información de este artículo se refiere a:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
Palabras clave: 
kbcodesnippet kbpending kbprb KB274188

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com