Transferencia de las Estadísticas de SQL Server de una Base de Datos a otra

Actualización de Estadísticas

Este paso no es necesario, pero si estamos dispuestos a realizar todo el esfuerzo para transferir estadísticas, también es necesario transferir información precisa. El método más simple para actualizar estadísticas es ejecutar la siguiente sentencia:

exec sp_updatestats

Esta sentencia ejecuta UPDATE STATISTICS sobre todas las tablas en la base de datos actual. Las nuevas estadísticas heredarán los ratios desde las viejas estadísticas.

Sería deseable cambiar el ratio (% de recorrido) por defecto a un ratio total, en cuyo caso, ejecute las siguientes sentencias para generar un script para actualizar las estadísticas en forma total sobre cada tabla. Note que con SQL Server Entreprise Edition, las vistas pueden contener índices. Se asume también que no se desea transferir estadísticas para tablas creadas por SQL Server durante la instalación.

SELECT ‘UPDATE STATISTICS ‘ + o.name + ‘ WITH FULLSCAN’

FROM sysobjectso

WHERE ( OBJECTPROPERTY(o.id, N’IsUserTable’

            OR OBJECTPROPERTY(o.id, N’IsUserView’) = 1 )

AND OBJECTPROPERTY(o.id, N’IsMSShipped’) = 0

ORDER BY o.name

También ejecute DBCC UPDATEUSAGE para corregir los datos de las columnas de la tabla sysindexes.

Crear Nueva Base de Datos y deshabilitar las Estadísticas Automáticas

El siguiente script es un ejemplo para crear una nueva base de datos.

CREATE DATABASE [sut] ON PRIMARY (NAME = N’sut_data’,

 FILENAME = N’C:MSSQLDatasut_data.mdf’ , SIZE = 32)

 LOG ON (NAME = N’sut_log’,

 FILENAME = N’C:MSSQLDatasut_log.ldf’ , SIZE = 16)

 COLLATE SQL_Latin1_General_CP1_CI_AS

Luego de crear la nueva base de datos, deshabilite la administración automática de estadísticas de la siguiente forma:

ALTER DATABASE [sut] SET AUTO_CREATE_STATISTICS OFF

GO

ALTER DATABASE [sut] SET AUTO_UPDATE_STATISTICS OFF

GO

Crear Usuarios, Tipos de Datos y Tablas, Excepto No Cluster Índices

Crear los usuarios requeridos (aquellos que son dueños de objetos en la base de datos original), tipos de datos, tablas, cluster índices, restricciones (constraints) y otros objetos excepto índices no cluster. No es complicado generar scripts usando el Administrador Corporativo dos veces, una vez con los índices pero no claves, defaults y restricciones (constraints), y la segunda vez con índices pero con claves, defaults y restricciones (constraints). Es también sencillo separar los índices no cluster de cualquier default. La razón para no crear los índices no cluster en este momento, es que los índices y las estadísticas no asociadas con índices, pueden tener valores entremezclados en indid. Si los índices no cluster fueran creados ahora, podría ser necesario re-mapear los valores indid para las estadísticas solo de filas de la base de datos original.

Continues…

Leave a comment

Your email address will not be published.