Ir al contenido principal

Migrar los logins / usuarios de SQL Server entre servidores

Cuando necesitamos mover una BD de un servidor a otro, pero queremos que los usuarios tengan los mismos privilegios que en el servidor actual, tenemos que llevar al nuevo servidor tambien los logins. En SQL server es diferente un login a un usuario. Un login es a nivel del Servidor y usario es a nivel de la BD. Si creamos por ejemplo el usuario fer en el servidor A, y luego creo un usuario fer en el servidor B y me llevo la BD produccion al server B el usuario fer es diferente, esto debido a que sql en realidad trabaja con SIDs en lugar del nombre del usuario. Para solucionar esto hay que llevarnos los logins al nuevo server. Como la BD se respalda con los usuarios incluidos, solo hay que recrear los usuarios con su mismo SID en el nuevo server. El script es como sigue:


SET NOCOUNT ON
SELECT 'EXEC sp_addlogin @loginame = ''' + loginname + ''''
,', @defdb = ''' + dbname + ''''
,', @deflanguage = ''' + language + ''''
,', @encryptopt = ''skip_encryption'''
,', @passwd ='
, cast(password AS varbinary(256))
,', @sid ='
, sid
FROM syslogins
WHERE name NOT IN ('sa')
AND isntname = 0


Este script generara en la salida el script del procedimiento sp_addlogin para recrear los usuarios en el nuevo servidor. Solo hay que correr los scripts de creacion de los usuarios que necesitamos y listo.

Saludos.

FR.

Comentarios

  1. En mi computador hay muchos .mdf files. Y tengo complicaciónes con estos archivos. Pero he encontrado - reparar sql server en el Internet hace algunas jornadas. Despues el instrumento ha recuperado mis files durante un minuto y de balde como he recordado.

    ResponderEliminar
  2. Consulta: El Script recrea los Logins, pero que pasa con los roles y/o permisos de cada usuario? hay que reasignarlos manualmente? Muchas gracias por la pronta respuesta.
    Saludos

    ResponderEliminar
  3. Si restauras las bases de datos, estos llevaran el ssid, permisos y roles, al ejecutar el script que roponen en esta pagina, haran un match entre usuarios de BD y logins del motor y ya estaran los permisos

    ResponderEliminar
  4. donde generara en la salida el script

    ResponderEliminar
    Respuestas
    1. En la misma ventana donde lo ejecutas. Saludos!

      Eliminar

Publicar un comentario

Entradas más populares de este blog

Como saber que Service Pack tengo instalado en SQL Server?

Para saber que Service pack se tiene instalado en SQL Server, Hay que ejecutar el siguiente comando:
SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')Este regresa algo parecido a:9.00.3042.00 SP2 Enterprise EditionEl primer registro es la versión, el segundo es el nivel de producto (en este caso Service pack 2), y el ultimo es la edición, En este caso Enterprise.
Esta es una tabla con las versiones de SQL y su respectivo Service pack.
RTM SP1SP2SP3SP4SQL Server 2017SQL Server 201613.0.2149.013.0.4001.0SQL Server 201412.0.2000.812.0.4100.112.0.5000.0SQL Server 201211.0.2100.6011.0.3000.0011.0.5058.011.0.6020.011.0.7001.0SQL Server 2008 R210.50.1600.110.50.2500.010.50.4000.010.50.6000.34SQL Server 2008 10.00.1600.2210.00.2531.0010.00.4000.0010.00.5500.0010.0.6000.29SQL Server 20059.00.13999.00.20479.00.30429.00.40359.00.5000SQL Server 20008.00.1948.00.3848.00.5348.00.7608.00.2039SQL Server 7 7.00.623 7.00.…

Monitoreo de espacio libre en discos desde SQL Server

Update: Una nueva opcion, con powershell esta disponible en el siguiente link, recomiendo mas utilizar la nueva y personalizarla de acuerdo a los requerimientos personales. http://dbamex.blogspot.mx/2017/10/revision-de-espacio-en-servidores.html
Post original:
Uno de los principales indicadores que se tiene que tomar en cuenta como DBA es el espacio disponible en disco. No es problema cuando se tiene un server o 2 para monitorear, sin embargo cuando hay una cantidad considerable automatizar un proceso que lo haga es lo mejor.

Dentro de SQL Server (7,2000,2005) hay un procedimiento no documentado que nos puede ayudar a cumplir este cometido.

El procedimiento es XP_FIXEDDRIVES, no lleva parámetros ni nada y nos regresa todos los discos a los que tiene acceso SQL Server y su espacio disponible en Megabytes.
Si esta en cluster mostrara todos los discos aunque los discos no esten en el mismo grupo que la instancia, lo que puede llegar a confundir.
Dejo a consideración de cada quien como …

Memoria utilizada por Oracle

Ocasionalmente al estar trabajando con oracle, algunos clientes
pueden recibir errores de que hace falta memoria, mas sin embargo en el task manager vemos que oracle no esta usando toda la memoria que esta asignada para el proceso.
Esto es por el diseño de los servidores de windows a 32 bits, que solo pueden asignar a una aplicacion alrededor de 2 GB (no recuerdo el numero exacto) y como en windows los procesos de usuarios son en realidad Threads del proceso de oracle, toda la memoria es agrupada bajo el proceso de oracle.

Para ver la memoria realmente usada por oracle podemos utilizar el siguiente query.


select sum(bytes)/1024/1024 Mb from (select bytes from v$sgastat union select value bytes from v$sesstat s, v$statname n where n.STATISTIC# = s.STATISTIC# and n.name = 'session pga memory' );

Este query nos regresa la memoria usada por oracle junto con todos sus procesos de usuario ( y su respectiva…