Recientemente he actualizado la base de datos SQL Server 2000 a 2008 R2.
Lo que hice fue:
- Apague el servicio SQL Server 2000 (express) en una máquina antigua,
- Mover archivos de datos ( mydatabase.mdf y mydatabase.ldf ) a la nueva máquina,
- Ejecute SQL Server Management Studio 2008,
- Conéctese al motor de base de datos local,
- Adjunte archivos de datos a la base de datos.
- 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:
- usar nuevas funciones como suma de verificación y modelo de recuperación completa,
- hacer que esta base de datos sea exactamente como se creó en SQL 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.
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:
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.
Los usuarios / la persistencia no son un problema aquí: solo hay unos pocos y los permisos son simples.
La aplicación que utiliza la base de datos es compatible con SQL 2000 hasta 2012, por lo que tampoco es un problema.
El archivo de base de datos (MDF) no es grande, solo alrededor de 1 GB.
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.
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.
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?
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?
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?
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.
fuente
Respuestas:
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:
DBCC CHECKDB ('<db_name_goes_here>' ) WITH ALL_ERRORMSGS,NO_INFOMSGS, DATA_PURITY
DBCC UPDATEUSAGE('database_name') WITH COUNT_ROWS
Update Statistics table_name with FULLSCAN
sp_recompile 'procedureName'
SP_REFRESHVIEW view_name
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.
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:
Vamos a abordar sus preguntas ...
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.
CHECKSUM
es nuevo en SQL Server 2005 y versiones posteriores. Lo he cubierto como parte de los pasos de migración descritos anteriormente.full recovery model
No 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.
¡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
100
junto con los pasos anteriores.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:
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.
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:
Nota: Una vez que establezca las opciones de la base de datos, se mantendrá cuando realice la migración de 2008R2 a 2012.
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.
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 ):
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
- suponiendo que el diseño del disco del destino coincida con el del servidor de origen
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:
¡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
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 PowerShell
Start-SqlMigration
fuente