Error de tiempo de espera expirado al usar el asistente para copiar bases de datos

8

Microsoft me hizo creer que el Asistente para copiar bases de datos de SQL Server 2012 es la forma más óptima de copiar una base de datos de SQL Server 2000 a SQL Server 2012. Después de algunas horas, pude superar algunos problemas y pude importar pequeños bases de datos SQL Server 2000 de tamaño mediano en SQL Server 2012.

Sin embargo, el asistente falla constantemente para una base de datos de 30 GB con estos errores:

Mensaje: se produjo un error al transferir datos. Vea la excepción interna para más detalles.
StackTrace: en Microsoft.SqlServer.Management.Smo.Transfer.TransferData ()
en Microsoft.SqlServer.Dts.Tasks.TransferObjectsTask.TransferObjectsTask.TransferDatabasesUsingSMOTransfer ()
InnerException -> Tiempo de espera caducado. El tiempo de espera transcurrido antes de la finalización de la operación o el servidor no responde.
CREATE DATABASE falló. Algunos de los nombres de archivos en la lista no se pudieron crear. Verifique los errores relacionados.
StackTrace:
en System.Data.SqlClient.SqlConnection.OnError (excepción SqlException, Boolean breakConnection)
en System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning ()
en System.Data.SqlClient.TdsParser.Run (RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)

Lo he verificado dos veces, no es un problema de ruta de archivo, permiso o espacio en disco. Creo que el CREATE DATABASEpaso dura unos 2 minutos y el asistente asume que la operación ha excedido el tiempo de espera. Creé manualmente una base de datos vacía con la misma ruta de archivo y tamaño de archivo usando SQL, eso funcionó. Curiosamente, una copia de la base de datos de 1GB falló con los mismos errores y tuvo éxito en el segundo intento.

Por favor ayuda.

Salman A
fuente
Por favor, vea la respuesta de Aarons. Esa es una manera mucho más eficiente para su base de datos
Ali Razeghi

Respuestas:

7

Una ruta mucho más eficiente que meterse con ese asistente sería:

  1. Realice una copia de seguridad completa de su base de datos 2000.
  2. Restaurarlo a una instancia de SQL 2005, 2008 o 2008 R2, todas las cuales admiten bases de datos 2000. Todavía puede obtener la edición de evaluación de 2008 R2 aquí , si no tiene instancias aplicables. Tenga en cuenta que Express no funcionará ya que tiene una limitación de archivo de datos de 4GB / 10GB dependiendo de la versión.
  3. Cambie el nivel de compatibilidad a algo superior a 80 (90 o 100, dependiendo de si utilizó 2005 o 2008/2008 R2) ALTER DATABASE.
  4. Realice una copia de seguridad completa de esta base de datos después de que ya no esté en modo de compatibilidad 80.
  5. Restaure esta nueva copia de seguridad en su instancia de SQL Server 2012.
  6. Cambie el nivel de compatibilidad a 110 y actualice las estadísticas.
  7. PRUEBA .
Aaron Bertrand
fuente
Tengo instalado SQL 2012, ¿está bien si instalo SQL 2008 R2 en la misma máquina? ¿Importa el orden de instalación?
Salman A
Sí, puede instalar 2008 R2 en la misma máquina, pero para simplificar las cosas, simplemente instale el motor de base de datos, sin herramientas de cliente y todo eso. Puede desinstalar la instancia de 2008 R2 una vez que haya movido todas sus bases de datos de 2000 a partir de 2000.
Aaron Bertrand
1
Aconsejaría que no instale versiones que no necesita en las máquinas de producción, pero no, no interfiere, pero puede recibir algunas advertencias sobre los componentes compartidos. Sin embargo, como regla general, nunca instale nada en prod que no necesite en prod. Aumenta la superficie de seguridad para ataques, introduce errores y aumenta la gestión.
Ali Razeghi
1
@ Ali, ¿cómo sabes que la máquina de la que habla Salman es una máquina de producción? ¿O que no es la única máquina disponible?
Aaron Bertrand
Es por eso que especifiqué 'en prod' en lugar de simplemente 'no lo hagas' y respondí 'pero no, no interfiere'. En lo que respecta a la única máquina disponible, puede instalarlos en escritorios incluso y su base de datos es de 30 GB como se indicó. Las computadoras con 30GB de almacenamiento gratuito son bastante comunes, pero nuevamente, fue solo un consejo, no un "esta es la única respuesta". Miré su blog y está muy centrado en el desarrollo, lo que significa que hay una alta probabilidad de que no se involucre con las mejores prácticas de operaciones tanto como un tipo de operaciones. Creo que es un buen consejo, me sorprende la cantidad de personas que trabajan cuando no tienen que hacerlo.
Ali Razeghi