Site sponsored by: Idera The gold standard of SQL Server performance monitoring & diagnostics.
SQL Server Performance

  • Home
  • Articles
  • Forums
  • Tips
  • Quiz
  • FAQ's
  • Blogs
  • Software
  • Books
  • About Us
RSS Feeds
Sign in | Join


Article Topics

All Articles
Performance Tuning
Audit
Business Intelligence
Clustering
Reporting Services
Developer
General DBA
ASP.NET / ADO.NET

Write for Us

Share your SQL Server knowledge with others and raise your profile in the community More...
Latest Articles

System Data Collection Reports
Recover Data Using Database Snapshots
Analyze and Fix Index Fragmentation in SQL Server 2008
Powerful Geographical Visualisations made easy with SQL 2008 Spatial (Part 2) ...

More     
 
Latest FAQ's

How to alter a User Defined Data Type?
How to unzip a File in SSIS?
How to view previous query plans?
ALTER TABLE SWITCH statement failed because the object '%.*ls' is not ...

More     
   
Latest Software Reviews

Spotlight on ApexSQL Doc 2008
ApexSQL Enforce
Embarcadero Change Manager
SQL Server DBA Dashboard

More     

articles >> performance tuning >> Transferencia de las Estadísticas de SQL Server ...

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

By : Luis Martin
Mar 16, 2005

Page 3 / 4

Crear y Cargar la Tabla de Mapeo

Cuando los objetos como tablas son creados en una nueva base de datos, los objetos probablemente tengan diferentes identificadores con respecto a la base de datos original. Ya que la tabla sysindexes utiliza el identificador (object id) para identificar tablas, es necesario crear una tabla de mapeo que contenga los originales y nuevos objetos identificadores para cada tabla. La tabla siguiente también contiene los userid. Esto puede no ser necesario, pero este conjunto de scripts no ha sido probado en bases de datos donde las tablas tienen dueños diferentes a dbo. Tampoco es necesario tener el nombre de la columna, pero se incluye por conveniencia.

CREATE TABLE [tobjects] ( name sysname , oid int , ouid int , id int , uid int )

Vuelva a la base de datos original, y use el siguiente script para cargar los identificadores de objeto en la tabla de mapeo.

INSERT [sut]..[tobjects] (name, oid, ouid, id, uid)

SELECT o.name, o.id, o.uid, n.id, n.uid

FROM sysobjects o

INNER JOIN [sut]..sysobjects n ON n.name = o.name

WHERE ( OBJECTPROPERTY(o.id, N'IsUserTable') = 1

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

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

ORDER BY o.name

Crear una Copia de la Tabla Original Sysindexes

Este paso también es opcional, pero es útil realizar copias permanentes de la tabla sysindexes de la base de datos original a la nueva. El siguiente script crea la tabla con las mismas columnas que la tabla sysindexes.

CREATE TABLE tindexes (

 id int , status int , first binary (6) , indid smallint , root binary(6) ,  minlen smallint ,

 keycnt smallint , groupid smallint , dpages int , reserved int , used int , rowcnt bigint ,

 rowmodctr int , reserved3 tinyint , reserved4 tinyint , xmaxlen smallint ,

 maxirow smallint , OrigFillFactor tinyint , StatVersion tinyint , reserved2 int ,

 FirstIAM binary (6), impid smallint , lockflags smallint , pgmodctr int ,

 keys varbinary (1088), name sysname , statblob image , maxlen int )

GO

Volver  a la base de datos original y cargar la tabla de arriba con una copia de la tabla sysindexes de la base de datos original.

INSERT [sut]..tindexes

(id,status,first,indid,root,minlen,keycnt,groupid,dpages,reserved,used,rowcnt,

 rowmodctr,reserved3,reserved4,xmaxlen,maxirow,OrigFillFactor,StatVersion,

 reserved2,FirstIAM,impid,lockflags,pgmodctr,keys,name,statblob,maxlen,rows)

SELECT

 i.id,status,first,indid,root,minlen,keycnt,groupid,dpages,reserved,used,rowcnt,

 rowmodctr,reserved3,reserved4,xmaxlen,maxirow,OrigFillFactor,StatVersion,

 reserved2,FirstIAM,impid,lockflags,pgmodctr,keys,i.name,statblob,maxlen,rows

FROM sysindexes i

INNER JOIN [sut]..[tobjects] t ON t.oid = i.id

El inner join a la tabla [tobjects] permite que solamente las filas con mapeo apropiado sean transferidas. El identificador del objeto (object id) no es mapeado a la nueva base de datos en este momento. No hay razones específicas para esta elección.

Reconfigurar para Permitir la Actualización de las Tablas del Sistema

Por defecto, actualizaciones directas sobre las tablas del sistema no son permitidas por razones obvias. Los siguientes comandos cambian este seteo. (Generalmente no se recomienda estos cambios, pero para esta aplicación es necesario).

Exec sp_configure ‘allow updates’, 1

RECONFIGURE WITH OVERRIDE

GO

Tenga en cuenta que cualquier procedimiento (store procedure) creada con “allow updates” activado, también tendrá la capacidad de actualizar las tablas del sistema aunque más tarde se desactivado. Es recomendable que “allow updates” sea desactivado rápidamente, y asegurarse que no se puedan crear procedimientos mientras se encuentre activo.


<< Prev Page     Next Page>>    








Home | Peformance Articles | Audit Articles | Business Intelligence Articles | Clustering Articles | Developer Articles | Reporting Services Articles | DBA Articles | ASP.NET / ADO.NET Articles | DBA FAQ's | Developer Peformance FAQ's | DBA Peformance FAQ's | Developer FAQ's | Clustering FAQ's | Error Messages | Audit Tool Reviews | Backup Tool Reviews | Coding Tool Reviews | Compare Tool Reviews | Documentation Tool Reviews | Design Tool Reviews | Monitoring Tool Reviews | Log Tool Reviews | Reporting Tool Reviews | Clustering Tool Reviews | Security Tool Reviews | Change Management Tool Reviews | Remote Access Tool Reviews | Book Reviews | Security Tool Reviews | QDPMA Performance Tuning | ADO.NET / ASP.NET | Administration | Analysis/OLAP Services | Application Development | Configuration | Components | ETL | Hardware | High Availability | Hints | Index | Misc | Operating Systems | Performance Tuning | Replication | T-SQL | Views


              © 1999-2008 by T10 Media. All rights reserved