Actualice la base de datos SQL Server 2000 a 2008 R2 y habilite nuevas funciones

23

Recientemente he actualizado la base de datos SQL Server 2000 a 2008 R2.


Lo que hice fue:

  1. Apague el servicio SQL Server 2000 (express) en una máquina antigua,
  2. Mover archivos de datos ( mydatabase.mdf y mydatabase.ldf ) a la nueva máquina,
  3. Ejecute SQL Server Management Studio 2008,
  4. Conéctese al motor de base de datos local,
  5. Adjunte archivos de datos a la base de datos.
  6. Cambie el nivel de compatibilidad de la base de datos a SQL 2008 (100).

Pregunta: ¿Qué más debo hacer para completar la migración?

Quiero:

  1. usar nuevas funciones como suma de verificación y modelo de recuperación completa,
  2. hacer que esta base de datos sea exactamente como se creó en SQL 2008 R2,
  3. haga que esta base de datos sea totalmente compatible, correcta y sea perfecta para el nuevo motor de base de datos SQL 2008 R2.

En otras palabras: solo quiero saber cómo convertir correcta y completamente la base de datos SQL 2000 antigua a la nueva base de datos 2008 R2, estar tranquilo de que todo se hace correctamente y estar contento con todas las nuevas características.


Estoy haciendo esta pregunta, porque he encontrado muchos sitios en Internet que dicen tantas cosas diferentes que me confunden: algunos dicen que es necesario reconstruir los índices, otro dice que haga otras cosas ... y ahora no sé nada, así que quiero escuchar opiniones de personas experimentadas e instrucciones claras y paso a paso. Trabajo para una empresa muy pequeña, estoy solo y no quiero arruinar las cosas.


Señor, estoy realmente impresionado con su respuesta, no esperaba mucho.


Entonces algunos comentarios:

  1. La base de datos está ahora en producción. Como dije, se actualizó utilizando el método deattach-attach como lo describí en la primera publicación y como se describe en MSDN: http://msdn.microsoft.com/en-us/library/ms189625.aspx Tenía que hacerse rápidamente, así que me vi obligado a hacerlo de esa manera. Olvidemos cuán inapropiado podría ser y centrémonos en la situación actual.

  2. Los usuarios / la persistencia no son un problema aquí: solo hay unos pocos y los permisos son simples.

  3. La aplicación que utiliza la base de datos es compatible con SQL 2000 hasta 2012, por lo que tampoco es un problema.

  4. El archivo de base de datos (MDF) no es grande, solo alrededor de 1 GB.


Pocas preguntas más:

  1. Recomienda usar el método de copia de seguridad / restauración, pero hice lo escrito anteriormente, así que ¿puedo encontrar algún problema ahora? Todo funcionó sin ningún problema.

  2. Acerca de la suma de comprobación y el modelo de recuperación completa: no estaba disponible / habilitado en SQL 2000, por lo que quiero usarlos ahora. ¿Dijiste que lo único que tengo que hacer es habilitar esas opciones en las propiedades de la base de datos? He leído en alguna parte, que no es suficiente y que también debería reconstruir índices o algo así. Realmente no lo sé, solo pregunto.

  3. Me estoy preparando para migrar esta base de datos a SQL 2012, así que primero fue de SQL 2000 a 2008 R2, ahora será de 2008 R2 a 2012 (fue imposible hacerlo directamente debido a la falta de soporte de las bases de datos SQL 2000 en SQL 2012). Así que entiendo que debería seguir su guía: haga una copia de seguridad en 2008 R2 y restaure en 2012, luego haga el resto de sus consejos, ¿verdad?

  4. Explíqueme el método de copia de seguridad / restauración: ¿es como un volcado de la base de datos a consultas SQL y luego restaurarlo ejecutando un montón de consultas? Por cierto, ¿este método "desfragmentará" mi base de datos? Si no, ¿cómo desfragmentarlo / optimizarlo manualmente?

  5. Como estuvimos usando SQL 2000 Express durante años (sin interfaz de administración), estábamos haciendo copias de seguridad simplemente deteniendo el motor y RAR el directorio DATA. Por ahora, como estamos en SQL 2008, ¿no es esto aún mejor que usar la función de copia de seguridad en Management Studio?

  6. Modo de recuperación completa con frecuentes copias de seguridad del registro de transacciones : ¿dónde se almacena el registro de transacciones? ¿Es el archivo LDF? ¿Cómo puedo hacer una copia de seguridad?


Sé que mis preguntas pueden sonar tontas, no soy administrador profesional de bases de datos, pero soy la única persona aquí que puede hacer una tarea tan difícil como actualizar el motor de la base de datos. También estoy seguro de que su conocimiento ayudará mucho a otras personas como yo.

Muchas gracias por su tiempo y conocimiento, realmente aprecio esto.

Mark Saelic
fuente
2
La próxima vez recomiendo hacer copias de seguridad / restaurar en lugar de cerrar SQL Server, mover los archivos y adjuntarlos. Solo así, tantas cosas que podrían salir mal. En el lado positivo, ¡felicidades por finalmente deshacerse del software de base de datos de 14 años!
Aaron Bertrand

Respuestas:

37

El paso más importante es ejecutar el Asesor de actualizaciones en la base de datos de SQL Server 2000 y abordar todos los problemas que informa.

Como práctica recomendada, use la herramienta Upgrade Advisor en su base de datos heredada de SQL Server 2000 e importe un archivo de seguimiento a la herramienta Upgrade Advisor para su análisis. El archivo de rastreo le permite al Asesor de actualizaciones detectar problemas que podrían no aparecer en un escaneo simple de la base de datos, como TSQL incrustado en las aplicaciones. Puede capturar los rastros de TSQL utilizando SQL Profiler en su servidor SQL Server 2000 durante las horas habituales y analizar estos rastros con el Asesor de actualizaciones.

Entonces el resto de los pasos serían:

En el día de la migración:

  1. script nuestros inicios de sesión en el servidor 2000 usando sp_help_revlogin .
  2. Script de trabajos y servidores vinculados del servidor SQL 2000.
  3. Detenga los servidores web que se conectan al servidor 2000. Asegúrese de que no hay aplicaciones conectadas al servidor 2000.
  4. haga una copia de seguridad de sus bases de datos y restaure en el servidor sql 2008 R2 de destino (nota: ¡No desconecte / adjunte ya que las cosas podrían salir mal y terminará con una base de datos separada y sin copias de seguridad!)
  5. Una vez que sus copias de seguridad se hayan restaurado en el servidor 2008 R2, ejecute la salida de sp_help_revlogin en el servidor 2008 R2 para recrear los inicios de sesión.
  6. Sincronice usuarios huérfanos (si los hay) y vuelva a crear trabajos de agente SQL y servidores vinculados en el nuevo servidor.
  7. cambie el nivel de compatibilidad en las bases de datos restauradas a 100.
  8. Dbcc checkdb con las opciones all_errormsgs y data_purity activadas: DBCC CHECKDB ('<db_name_goes_here>' ) WITH ALL_ERRORMSGS,NO_INFOMSGS, DATA_PURITY
  9. ejecutar DBCC UPDATEUSAGE en las bases de datos restauradas DBCC UPDATEUSAGE('database_name') WITH COUNT_ROWS
  10. Actualice las estadísticas en todas las tablas con escaneo completo: Update Statistics table_name with FULLSCAN
  11. Opcional: Verifique los niveles de fragmentación y, dependiendo del nivel de fragmentación, ejecute una reorganización / reconstrucción de todos los índices. Puedes usar los guiones de Ola .
  12. Recompile todos los SP usando sp_recompile 'procedureName'
  13. Actualiza tus puntos de vista SP_REFRESHVIEW view_name
  14. asegúrese de cambiar la opción de la base de datos: verifique la página a CHECKSUM.
  15. Cambie el modelo de recuperación (si es diferente de sql 2000) a COMPLETO. Si cambia al modelo de recuperación COMPLETO, ASEGÚRESE de hacer copias de seguridad del Registro de transacciones con frecuencia. Esto lo ayudará a recuperar un punto en el tiempo, así como a no hinchar su T-Log.
  16. En SQL Server 2005 y versiones posteriores, se introdujo el Correo electrónico de base de datos . Por lo tanto, debe migrar de SQLMail a Correo electrónico de base de datos.

    USE [master]
    GO
    sp_configure 'show advanced options',1
    GO
    RECONFIGURE WITH OVERRIDE
    GO
    sp_configure 'Database Mail XPs',1
    GO
    RECONFIGURE 
    GO

Además, si tiene alguna replicación, debe restablecerla. Si a algún DR le gusta el logshipping o Mirroring (nuevo en 2005 y versiones posteriores, pero depreciado en 2012), también debe restablecerlo.

Los paquetes DTS antiguos deben migrarse a SSIS utilizando C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTSMigrationWizard.exe(línea de comando) o el Asistente de migración de paquetes .

Además, puede usar mi script que se encuentra en /dba//a/36701/8783 . Sin embargo, utiliza el método de separación / conexión, le recomiendo que use el método BACKUP / RESTORE . Cambiar el guión en consecuencia.


Como nota al margen:

  • active la Inicialización instantánea de archivos en el nuevo servidor.
  • Tener múltiples archivos de datos tempdb con el mismo tamaño.
  • Habilitar la marca de seguimiento 1118
  • Configure la memoria máxima y mínima correctamente. Especialmente Max memoria lejos del valor predeterminado.
  • Ajuste correctamente la configuración de MAXDOP. Consulte /dba//a/36578/8783 para obtener más detalles.
  • Lo mejor es instalar sp_Blitz desde Brent Ozar. Ejecútelo y aborde los problemas críticos y de alta prioridad informados por él.
  • Incluso puede usar SQL Power Doc de kendalvandyke: SQL Power Doc funciona con todas las versiones de SQL Server desde SQL Server 2000 hasta 2012, y todas las versiones de Windows Server y sistemas operativos Windows de consumo desde Windows 2000 y Windows XP hasta Windows Server 2012 y Windows 8. También es útil para planificar actualizaciones: vea qué funciones ocultas se usan en una instancia.
  • Habilite Optimizar para cargas de trabajo ad-hoc y opciones de compresión de copia de seguridad predeterminadas.

Vamos a abordar sus preguntas ...

¿Qué más debo hacer para completar la migración?

Refiérase a mi respuesta. Le ayudará a elaborar adecuadamente un plan de migración. Siempre pruebe su plan de migración en una UAT (no producción) junto con las pruebas de aplicación adecuadas por parte de los usuarios comerciales.

use nuevas características como la suma de comprobación y el modelo de recuperación completa.

CHECKSUMes nuevo en SQL Server 2005 y versiones posteriores. Lo he cubierto como parte de los pasos de migración descritos anteriormente.

full recovery modelNo es nuevo. Depende de su tipo de negocio y dicta la cantidad de datos que puede perder en caso de desastre.

El modo de recuperación completa con copias de seguridad frecuentes del registro de transacciones le permitirá restaurar un punto en el tiempo y allí al reducir la cantidad de pérdida de datos.

hacer que esta base de datos sea exactamente como se creó en SQL Server 2008 R2.

haga que esta base de datos sea totalmente compatible, correcta y sea perfecta para el nuevo motor de base de datos SQL 2008 R2.

¡No entiendo completamente esto! Pero los pasos de migración anteriores lo ayudarán. Solo tiene que restaurar la base de datos y cambiar el nivel de compatibilidad 10 100junto con los pasos anteriores.

Solo quiero saber cómo convertir correcta y completamente la base de datos antigua de SQL Server 2000 a la nueva base de datos 2008 R2, estar tranquilo de que todo está bien y estar contento con todas las nuevas características.

Debe tener cuidado con esto, ya que esto también requerirá cambios en el código de su aplicación. Si el código de su aplicación se cambia para usar las nuevas funciones en SQL Server 2008 R2, entonces no encontrará ningún problema: siempre que haya realizado una prueba de regresión completa de su aplicación en un entorno UAT o DEV. Esto le dará la mejor confianza cuando realice la migración real en PROD.


Nota: arriba hay pasos que puedo recordar y estoy bastante seguro de que no queda nada. Si veo que me he perdido algunas cosas, entonces las agregaré a mí oa otros expertos en este sitio, ¡no dude en agregarlas!

Todo lo que se describe anteriormente debe reproducirse primero en un entorno de NO PRODUCCIÓN para evitar sorpresas durante la migración real.

----------

Pocas preguntas más:

Recomienda usar el método de copia de seguridad / restauración, pero hice lo escrito anteriormente, así que ¿puedo encontrar algún problema ahora? Todo funcionó sin ningún problema.

Si todo funcionó bien y pudo adjuntar la base de datos, entonces NO , no tendrá ningún problema. Separar / Adjuntar vs Copia de seguridad / Restaurar es solo un método sobre cómo mover sus bases de datos a un lugar diferente. Solo para su información ... Backup / Restore es más seguro y confiable como si algo saliera mal (en el peor de los casos), al menos tiene una copia de seguridad para restaurar y recuperar sus bases de datos.

Acerca de la suma de comprobación y el modelo de recuperación completa: no estaba disponible / habilitado en SQL Server 2000, por lo que quiero usarlos ahora. ¿Dijiste que lo único que tengo que hacer es habilitar esas opciones en las propiedades de la base de datos? He leído en alguna parte, que no es suficiente y que también debería reconstruir índices o algo así. Realmente no lo sé, solo pregunto.

Como dije, la suma de comprobación es nueva en la versión 2005 y posteriores. Es un mecanismo por el cual SQL Server detectará la corrupción de la página, especialmente debido a E / S. Consulte mi respuesta aquí para más detalles.

Para habilitar CHECKSUM y cambiar el modelo de recuperación a COMPLETO, puede hacerlo usando el siguiente código T-SQL:

USE master;
GO
ALTER DATABASE [your_database_name] -- change this !!
SET RECOVERY FULL, PAGE_VERIFY CHECKSUM;
GO

Nota: Una vez que establezca las opciones de la base de datos, se mantendrá cuando realice la migración de 2008R2 a 2012.

Me estoy preparando para migrar esta base de datos a SQL Server 2012, por lo que primero fue de 2000 a 2008 R2, ahora será de 2008 R2 a 2012 (fue imposible hacerlo directamente debido a la falta de soporte de las bases de datos 2000 en SQL Servidor 2012). Así que entiendo que debería seguir su guía: haga una copia de seguridad en 2008 R2 y restaure en 2012, luego haga el resto de sus consejos, ¿verdad?

Sí por favor. Como dije, la restauración de respaldo es el método preferido , a menos que tenga una buena razón para no hacerlo.

Explíqueme el método de copia de seguridad / restauración: ¿es como un volcado de la base de datos a consultas SQL y luego restaurarlo ejecutando un montón de consultas? Por cierto, ¿este método "desfragmentará" mi base de datos? Si no, ¿cómo desfragmentarlo / optimizarlo manualmente?

Copia de seguridad / restauración es ... similar al volcado y carga utilizado en Sybase, Oracle o probablemente MySQL también. Es solo SQL Server lo llama ... copia de seguridad / restauración.

Una lectura obligada: Comprender las copias de seguridad de SQL Server de Paul Randall.

Sintaxis simple (para sintaxis completa, consulte BOL ):

backup database database_name
to disk = 'D:\backup\database_name_full.bak'
with init, stats =10

Luego, la restauración se puede hacer en el servidor de destino como:

- suponiendo que el diseño del disco del destino no coincide con el del servidor de origen

restore database database_name
from disk = 'D:\backup\database_name_full.bak'
move 'logical_data_fileName' to 'physical_path\database_name.mdf'
move 'logical_log_fileName' to 'physical_path\database_name_log.ldf'
with recovery, stats = 10

- suponiendo que el diseño del disco del destino coincida con el del servidor de origen

restore database database_name
from disk = 'D:\backup\database_name_full.bak'
with recovery, stats = 10

Por cierto, ¿este método "desfragmentará" mi base de datos? Si no, ¿cómo desfragmentarlo / optimizarlo manualmente?

copia de seguridad / restauración no desfragmentará su base de datos. Debe usar Alter Index Reorganize o Rebuild dependiendo de su nivel de fragmentación.

Como eres nuevo en SQL Server, te recomiendo que uses Ola Hallengren's:

Como estuvimos usando SQL Server 2000 Express durante años (sin interfaz de administración), estábamos haciendo copias de seguridad simplemente deteniendo el motor y RAR el directorio DATA. Por ahora, como estamos en SQL Server 2008, ¿no es esto aún mejor que usar la función de copia de seguridad en Management Studio?

¡Detener el motor es lo peor que puede hacer para hacer una copia de seguridad!

Lea el enlace de Paul sobre las copias de seguridad que mencioné y use el script de Ola. Microsoft tiene un artículo de KB con el script para hacer copias de seguridad automáticas: cómo programar y automatizar las copias de seguridad de las bases de datos de SQL Server en SQL Server Express

Modo de recuperación completa con frecuentes copias de seguridad del registro de transacciones : ¿dónde se almacena el registro de transacciones? ¿Es el archivo LDF? ¿Cómo puedo hacer una copia de seguridad?

Cada base de datos de SQL Server tiene un registro que registra todas las transacciones y modificaciones de la base de datos realizadas por cada transacción. El registro de transacciones es un componente crítico de cualquier base de datos.

La extensión de convención de nomenclatura habitual para el registro de transacciones es '.LDF', pero puede ser cualquiera.

No voy a escribir más sobre esto, ya que esto hará que la respuesta sea muy lenta. Consulte Gestión de registros de transacciones y mi respuesta aquí también tiene excelentes enlaces.


EDITAR: 24/08/2016 .. Esto ayudará a los futuros lectores:

Si está migrando toda su instancia de una versión a otra, le recomendaría encarecidamente que utilice una solución basada en PowerShellStart-SqlMigration

ingrese la descripción de la imagen aquí

Kin Shah
fuente