SQL Server, ideas y experiencias

Como transferir los roles de servidor entre instancias de SQL Server 2005 o 2008

por Jose Mariano Alvarez 13. agosto 2010

Recientemente escribí un post que habla de cómo transferir los Logins entre instancias de SQL Server utilizando scripts documentados en la base de conocimiento de Microsoft.  Pueden encontrar este post en:

Cómo transferir los inicios de sesión y las contraseñas entre instancias de SQL Server

Además de transferir la contraseña, normalmente queremos que el nuevo Login tenga el mismo SID para evitar que los usuarios queden huérfanos dentro de las bases de datos migradas o transferidas. Esto lo realizan los script  documentados en la base de conocimiento que hago referencia en el post.

Sin embargo uno de los lectores me hizo notar que no había explicado que los scripts generados por estos documentos no generan los scripts correspondientes a los roles (funciones) de servidor que tenían en la instancia de origen.  Solo el método 2 del documento en inglés que transfiere los Logins desde el SQL Server 2000 al SQL Server 2005/2008 tiene la posibilidad de generar el script para transferir los roles de servidor entre las instancias. Las otras versiones del script no lo hacen.

Si ya hemos creado los Login con el script de estos documentos de la base de conocimiento y debemos  además, transferir los roles de servidor a esta nueva instancia, y nuestro origen es un SQL Server 2005 o un SQL Server 2008, podemos usar el siguiente script para generar el script de transferencia:

-- Genera el script con los Roles para los Logins
Select 
 'exec master.dbo.sp_addsrvrolemember @loginame=''' 
 + sp.name + ''', @rolename='''+sp2.name +''';' 
from 
master.sys.server_principals as sp 
join master.sys.server_role_members as srm 
on sp.principal_id = srm.member_principal_id 
join master.sys.server_principals as sp2 
on srm.role_principal_id=sp2.principal_id
where sp.type in ('S','U','G')


-- Genera el script con la base de datos por default (omision) para los Logins
Select 
 'ALTER LOGIN ['+ sp.name 
 +'] WITH DEFAULT_DATABASE = [' 
 + sp.default_database_name +'];'
from 
master.sys.server_principals as sp 
where sp.type in ('S','U','G')
and sp.default_database_name is not null

Tags: , ,

Artículos

Cómo transferir los inicios de sesión y las contraseñas entre instancias de SQL Server

por Jose Mariano Alvarez 9. agosto 2010

Una de las tareas fundamentales a la hora de hacer las migraciones o mover las bases de datos de una instancia a otra es transferir los logins. Cuando queremos transferir un login entre instancias de SQL Server, además de transferir la contraseña, normalmente queremos que el nuevo login tenga el mismo SID para evitar que los usuarios queden huérfanos dentro de las bases de datos migradas o transferidas.

En la base de conocimiento de Microsoft existen dos artículos que describen los pasos y los detalles a tener en cuenta para realizar esta tarea. Se deberá seleccionar el que corresponda dependiendo de la versión de SQL Server de origen como de destino.

El método usado es el de crear dos procedimientos almacenados que luego al ser invocados generan una secuencias de comandos T-SQL que permiten crean los inicios de sesión con el mismo SID y la contraseñas original cuando se los ejecutan en la nueva instancia.

 

How to transfer logins and passwords between instances of SQL Server

En este artículo (en inglés) se describe cómo transferir los inicios de sesión y las contraseñas a un nuevo servidor. El método explicado en el documento se aplica cuando:

  • Transfiere inicios de sesión y contraseñas de SQL Server 7.0 a SQL Server 7.0.
  • Transfiere inicios de sesión y contraseñas de SQL Server 7.0 a SQL Server 2000.
  • Transfiere inicios de sesión y contraseñas de SQL Server 7.0 a SQL Server 2005.
  • Transfiere inicios de sesión y contraseñas entre servidores que ejecutan SQL Server 2000.
  • Transfiere inicios de sesión y contraseñas de SQL Server 2000 a SQL Server 2005.

http://support.microsoft.com/?scid=kb;en-us;246133&x=13&y=12

IMPORTANTE: Existen diferencias entre el artículo de la versión en inglés que contiene dos scripts diferentes, un script para transferir los logins entre versiones SQL Server 7.0/2000 y SQL Server 7.0/2000 y otro script para transferirlos entre SQL Server 7.0/2000 y SQL Server 2005/8.  En el mismo artículo en español solo está documentado el procedimiento entre versiones SQL Server 7.0/2000 a SQL Server 7.0/2000.

Cómo transferir inicios de sesión y contraseñas entre servidores SQL Server

Versión en español (incompleto)

http://support.microsoft.com/kb/246133/es

 

Cómo transferir los inicios de sesión y las contraseñas entre instancias de SQL Server 2005 y SQL Server 2008

Este artículo describe cómo transferir los inicios de sesión y las contraseñas entre instancias de Microsoft SQL Server 2005 y Microsoft SQL Server 2008.

http://support.microsoft.com/kb/918992/es

Tags: , ,

Documentos

Herramientas y enfoques para la actualización a SQL Server 2008

por Jose Mariano Alvarez 26. julio 2010


En mayo de 2010 Dmitry Artemov y Alexei Khalyako han publicado un documento (en inglés) que han escrito acerca de las herramientas y los posibles enfoques para la actualización a SQL Server 2008 y SQL Server 2008 R2 desde versiones anteriores.

Realizar una actualización suele ser un proyecto complejo y en ocasiones arriesgado. Si en dicho proceso de actualización tenemos problemas corremos el riesgo de que se pueda causar la pérdida de tiempo y dinero e inclusive de datos. Cualquiera que sea el problema  se puede crear una mala percepción tanto del producto como del futuro de las aplicaciones a medida que avanza la tecnología y surgen nuevas versiones del SQL Server.

Una actualización correcta por el contrario, puede proporcionar a la organización una moderna plataforma de base de datos, actualizada, más segura y con capacidades mejoradas tanto para el desarrollo como para el soporte a los sistemas en ambiente productivo.

Este documento reseña tanto los documentos disponibles como las herramientas que pueden ser utilizadas para ayudar a los administradores (DBA) y a los desarrolladores a lograr exitosamente y sobre todo sin mayores inconvenientes, la actualización desde bases de datos SQL Server 2000 o SQL Server 2005 a SQL Server 2008 (tanto R2 o SQL Server 2008).

En el documento se explica la utilización de una carga de trabajo de SQL Server capturada en el entorno de producción, y luego como esta carga de trabajo se puede ejecutar en las versiones antiguas y nuevas de SQL Server en un entorno de prueba para comparar el rendimiento y aislar los problemas de la migración. Entre las herramientas usadas para esta tarea están RML para SQL Server y el Upgrade Advisor.

Pueden descargar este document desde el sitio de Microsoft:

Database Upgrade to SQL Server 2008, Tools and Approaches

Tags: , , ,

Documentos

Migración a SQL Server 2008 cuando los nombres de los Data Source compartidos de Reporting Services contienen espacios

por Jose Mariano Alvarez 3. septiembre 2009

Si se realiza una migración o actualización de un reporte que hace referencia a un origen de datos compartido de Reporting Services 2005 a Reporting Services 2008, el informe dejará de funcionar después de la migración, ya que este proceso actualiza el nombre del data source compartido.

Quienes diseñaron reportes en el Business Intelligence Development Studio de SQL Server Reporting Services 2005 pueden utilizar nombres de data source compartidos con espacios en blanco. Sin embargo en la versión del 2008 ya no se pueden utilizar más. Por lo tanto no es posible crear nuevos data source con espacios en blanco.

En el IDE de Visual Studio 2005 si se puede utilizar fuentes de datos (data source) con espacios en blanco en el nombre.

Como puede verse en la siguiente imagen, en el IDE de Visual Studio 2008 no se puede usar fuentes de datos compartidas con nombres que contengan espacios en blanco en el nombre.

NombreDelDatasource

El problema es que si le cambiamos desde el sitio del Report Manager de Reporting Services el data source al que hace referencia el reporte que se encuentra en el servidor este cambio no tiene efecto a pesar que desde la interface el cambio queda impactado.

Existe una solución alternativa y consiste en editar el nombre del data source compartido del reporte para eliminar los espacios en blanco. Esto se realiza editando el contenido dentro del TAG <DataSourceReference> que se encuantra dentro del tag <DataSources>  en el archvo RDL del reporte como puede verse en la siguiente Imagen.

DatasourdeEnRDL

Tags: ,

Artículos

Powered by SQL Total Consulting


View Jose Mariano Alvarez's profile on LinkedIn

 Add to Technorati Favorites 

Calendar

<<  noviembre 2017  >>
lumamijuvido
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

View posts in large calendar

Locations of visitors to this page

Widget Twitter not found.

Root element is missing.X


Valid XHTML 1.0 Transitional

Valid CSS!