T-SQL: Usuarios huérfanos

·3 min de lectura·

SQL Server usuarios huérfanos

Alguna vez nos ha pasado que cuando recuperamos una base de datos en otro servidor o instancia de SQL Server, también se recuperan los usuarios de la base de datos, pero no tienen un vínculo con los inicios de sesión del servidor. Por lo tanto nos encontramos con usuarios huérfanos.

Un usuario de base de datos cuyo inicio de sesión de SQL Server correspondiente está sin definir o se ha definido de forma incorrecta en una instancia de servidor no podrá iniciar una sesión en la instancia. Es lo que se denomina un usuario huérfano de la base de datos en esa instancia de servidor. Un usuario de base de datos puede convertirse en huérfano si se quita el inicio de sesión de SQL Server correspondiente. También puede convertirse en huérfano si una base de datos se restaura o se conecta a otra instancia de SQL Server. Otra manera de convertirse en huérfano es que el SID al que se asigna el usuario de la base de datos no esté presente en la nueva instancia de servidor.

Para detectar usuarios huérfanos

Ejecutamos las siguientes instrucciones de Transact-SQL:

USE <database\_name>
GO 
sp\_change\_users\_login @Action\='Report'
GO

En los resultados se enumeran los usuarios y sus identificadores de seguridad (SID) correspondientes, que se encuentran en la base de datos actual y no están vinculados a ningún inicio de sesión de SQL Server.

Para resolver un usuario huérfano

Seguimos el siguiente procedimiento:

  • El siguiente comando vuelve a vincular la cuenta de inicio de sesión de servidor especificada en <login_name> con el usuario de la base de datos especificado por <database_user>.
USE <database\_name>
GO
sp\_change\_users\_login 
     @Action\='update\_one', 
     @UserNamePattern='<database\_user>', 
     @LoginName='<login\_name>'
GO

<!-- <!--.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, "Courier New", courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; } -->

  • Una vez ejecutado el código del paso anterior, el usuario podrá obtener acceso a la base de datos. El usuario puede modificar la contraseña de la cuenta de inicio de sesión <login_name> mediante el procedimiento almacenado sp_password del siguiente modo:
USE master 
GO
sp\_password @old\=NULL, @new\='password', @loginame='<login\_name>';
GO

Comentarios (0)

Sé el primero en comentar.

T-SQL: Re-Indexar todas las tablas de una Base de Datos

·1 min de lectura

El artículo explica cómo re‑indexar todas las tablas de una base de datos SQL Server cuando no existe un comando único para ello. Se presenta un script TSQL que recorre el catálogo de datos, obtiene los nombres de todas las tablas base y ejecuta DBCC DBREINDEX para cada una, evitando mensajes de información. El cursor se cierra y libera al finalizar. El autor sugiere que el código sea útil y menciona un libro de SQL Server 2014 en español como recurso adicional.

Instalando SQL Server en Linux

·3 min de lectura

Microsoft lanzó una versión de SQL Server para Linux, lo que permite a los administradores instalar, usar y mantener el motor en sistemas como Red Hat Enterprise Linux 7, CentOS 7 y Ubuntu 16.04 64 bits. Se requiere al menos 4 GB de RAM. El proceso en Ubuntu implica agregar la clave GPG, añadir el repositorio, actualizar paquetes, instalar dependencias y ejecutar el script de configuración, aceptando los términos de licencia. Una vez instalado, se puede conectar con la línea de comandos, crear bases de datos y usar los mismos comandos que en Windows.