Cómo migrar SQL Server desde una máquina a otra
Publicado por yrushka el 23 de octubre de 2012 (51)
Hace poco estaba involucrado en un proyecto de migración importante que incluía el traslado de algunos servidores de producción de base de datos de un lugar a otro. Fue un proyecto muy grande que implicaba una gran coordinación interna entre los equipos y la programación, por lo que el impacto para los usuarios finales sería mínimo. En caso de que esté en la posición de mover un servidor SQL de una máquina a otra marca que usted se pega a la siguiente lista presentada. El objetivo principal de la migración es crear un clon de SQL Server con la misma configuración, bases de datos de puestos de trabajo hasta la fecha, de seguridad y del Agente SQL en su lugar. Por esto siempre he elegido para restaurar el maestro y msdb, junto con todas las bases de datos de usuario. Parecía mucho más fácil que el traslado de usuarios / contraseñas, resolver usuarios huérfanos, la actualización de las bases de datos por defecto, la actualización de las propiedades del sistema (sp_configure), que migran puestos de trabajo, los operadores del Agente SQL, recreación de perfiles de correo DB, la funcionalidad de captura de datos modificados, la restauración de la partición de la información, y toda otra base de datos específicaopciones que una vez cuando esté activado. Después de la migración de todo lo que tiene que ir sin problemas y sin errores, de lo contrario, la migración no fue exitosa. Usted tiene que asegurarse de cubrir todos los puntos y cuándo hacer el cambio en las cadenas de conexión Todo es realizado lado DBA de vista. Por favor, si usted encuentra que hay algo que se añade a la lista de abajo, no dude en comentar y voy a actualizar este post. I. pasos para hacerlo en el servidor de producción actual - [Servidor A] Comprobar las propiedades de SQL Server - Estos deben permanecer igual en el servidor de futuro. el uso principal IR seleccione SERVERPROPERTY ( "intercalación") seleccione SERVERPROPERTY ( 'Edición') seleccione SERVERPROPERTY ( 'InstanceName') seleccione SERVERPROPERTY ( 'ProductVersion') seleccione SERVERPROPERTY ( 'ProductLevel') seleccione SERVERPROPERTY ( 'ServerName') Compruebe los ajustes de configuración global - Estos deben permanecer igual en el servidor de futuro. el uso principal ir sp_configure 'show advanced options', 1 reconfigurar ir sp_configure Ve a revisar las bases de datosIntegridad Es necesario con el fin de estar seguros de que las copias de seguridad restaurados en el servidor migrado serán válidas. DBCC CHECKDB ( 'DATABASE_NAME') Anotar las opciones de base de datos de modelo de crecimiento. Este ajuste es importante para cada nueva base de datos creada. Mi consejo fuerte es que nunca deje el valor predeterminado, ya que puede ser una gran causa de los malos resultados. La configuración por defecto es de 1 MB por archivo de datos y un 10% por archivo de registro - Imagine lo que significa para una base de datos para asignar MB después MB si se tiene que asignar decir 50 MB o hacer crecer un archivo de registro que es de 10 GB de tamaño. Anote ruta física de master, model, msdb, tempdb datos de bases de datos y archivos de registro. el uso principal ir seleccione el nombre, el nombre de archivo de sys.master_files donde database_id en (1,2,3,4) ordenado por database_id Anote ruta física para los datos mssqlsystemresource y archivos de registro. SQL 2008: Debe estar en: \ Archivos de programa \ Microsoft SQL Server \ MSSQL10_50. \ MSSQL \ Binn \ SQL 2005 Para: lo mismo que la ubicación base de datos maestra. Consulta se ejecute en SQL 2008 y superiorLas versiones con el fin de encontrar la ubicación física: el uso principal ir seleccione el nombre, nombre de archivo, dbida de sys.master_files donde database_id en (32767) realizar copias de seguridad completa en master y msdb II. Pasos para hacer en el futuro servidor de Producción - [Servidor B] Instalar misma edición / versión de SQL Server en la nueva máquina. Tenga en cuenta lo siguiente al instalar: Asegúrese de que el nuevo servidor ha montado en las mismas letras de unidad en las bases de datos del sistema residen en edad de SQL Server. De lo contrario, después de la restauración de SQL maestro no será capaz de empezar porque SQL tendrá que empezar el resto de las bases de datos del sistema de rutas físicas de [Servidor A]. Si desea restaurar las bases de datos del sistema, entonces usted necesita para mantener la misma edición (Standard, Entreprise, Business Intelligence) y la versión (ex: 2008 RTM, 2008 SP1, 2008 R2 RTM etc.). No se puede restaurar una copia de seguridad de una base de datos del sistema (master, model, msdb) en un diseño del servidor que es diferente de la generación en la que se realizó originalmente la copia de seguridad. una solución alternativasería, para reemplazar manualmente los archivos de bases de datos del sistema de copiado de [Servidor A] a [servidor B]. Esto se puede hacer sólo si el servidor migrado se puede detener. Si no, entonces usted debe seguir el procedimiento de "restaurar la base de datos ...." Si desea restaurar sólo las bases de datos de usuario, entonces se puede instalar el mismo o superior edición / versión. Si instala una edición / versión inferior a la producción actual de uno, puede que no sea capaz de restaurar algunas de las bases de datos que tienen mayor construye características que no se pueden admitir en compilaciones inferior. Mantenga la misma intercalación al instalar SQL Server. Crear una cuenta de usuario de dominio / Windows que se utiliza para iniciar los servicios de SQL. bases de datos del sistema de copia de seguridad - master, model, msdb - y poner en un lugar seguro ... en caso de que quieren recuperarlos. Detener SQL Server. Copiar todos los archivos de bases de datos del sistema y añadirlos a la ubicación segura. Crear las ubicaciones físicas de master, model, msdb, tempdb, las bases de datos mssqlsystemresource anotados en los pasos I.5 y I.6 Da al usuario que ejecuta SQLlos derechos de seguridad completos de las nuevas carpetas creadas. Copiar bases de datos del sistema de copias de seguridad realizadas en [Servidor A] a [servidor B] (I.7 paso). Detener SQL Server. Copiar modelos, archivos de base de datos msdb y mssqlsystemresource existentes desde la ubicación instalada en [SERVIDOR B] para los nuevos seres creados (paso II.4). Después usted será capaz de cambiar la ubicación de estas bases de datos. Por ahora SQL necesitará lugares antiguos con el fin de cargar msdb, modelo, tempdb y mssqlsystemresource. Iniciar SQL Server en modo de usuario único. Desde una elevada cmd (iniciado con derechos de administrador), acceder a la carpeta justo donde se encuentra sqlservr.exe ejecutable y ejecutar comandos a continuación. Normalmente lo encontrará en "C: \ Archivos de programa \ Microsoft SQL Server \ MSSQL [InstanceName] \ MSSQL \ Binn" Allí donde los casos en que otros servicios como Agente SQL o SQL Reporting tomaron la sola conexión y prohibidas al administrador para restaurar maestro . Se da este error: Razón: El servidor está en modo de usuario único. Sólo un administrador puede conectarse en estehora. Antes de iniciar el SQL en modo de usuario único, asegúrese de que ha dejado de todos los servicios de SQL y no hay nadie que haga una conexión predeterminada a él (aplicación, la presentación de informes) cd [unidad]: \ nombre_carpeta sqlservr.exe -c -m Restaurar base de datos maestra de la copia de seguridad copiado de [SERVER A] utilizando una línea de cmd NUEVO comenzó con permisos de administrador o el uso. - Conectar con SQL sqlcmd -SMACHINENAME \ -E ServerInstance - Asegúrese de que está conectado al servidor de la derecha: select @@ nombre_de_servidor IR RESTORE base de datos maestra desde el disco = '[unidad]: \ BACKUP_PATH \ MASTER_.bak' CON CAMBIAR; IR Salir del símbolo del CMD y de inicio de SQL de Servicios (en multiusuario) Ahora las bases de datos del sistema principal (excepto) serán cargados desde las nuevas rutas creadas. Compruebe nueva ubicación de los archivos de bases de datos del sistema. maestro apuntará a la ubicación correcta. msdb, tempdb y el modelo deben ser cambiados. Si va a restaurar msdb puede especificar en ese momento, la nueva ubicación de los archivos. Así que aquí voy a mostrar cómo mover modeloy tempdb. Para msdb es el mismo. seleccionar * de sys.master_files el uso principal ir Altera la base de datos tempdb modificar el archivo (Name = tempdev, nombre de archivo = '[unidad]: \ nueva_ubicación \ tempdb.mdf') Altera la base de datos tempdb modificar el archivo (Name = tempdev2, nombre de archivo = '[unidad]: \ nueva_ubicación \ tempdev2.ndf') Altera la base de datos tempdb modificar el archivo (Name = templog, nombre de archivo = '[unidad]: \ nueva_ubicación \ templog.ldf') Altera modelo de base de datos de archivo de modificar (Name = modeldev, nombre de archivo = '[unidad]: \ nueva_ubicación \ Model.mdf') Altera modelo de base de datos de archivo de modificar (Name = modellog, nombre de archivo = '[unidad]: \ nueva_ubicación \ modellog.ldf') Detener SQL Server y mover los archivos de modelos de ubicación antigua a la nueva ubicación. tempdb se vuelve a crear en la nueva ubicación especificada en cada reinicio de SQL así que no hay necesidad de mover los archivos. Iniciar SQL y asegúrese de que el punto de la base de datos del sistema a los lugares adecuados. seleccionar * de sys.master_files [OPCIONAL] Restaurar base de datos msdb. Me encontré con problemas para ejecutar personalmente electrónico de base de datos después de restaurar msdb en SQL 2008R2. Acabé dejando los archivos orginal msdb y migraron todos los puestos de trabajo mediante secuencias de comandos, creado msdb.dbo.cdc_jobs mesa (CDC porque estaba en su lugar también) y reconfiguradas electrónico de base de datos. Retire las carpetas creadas en el paso II.4. Pruebe algunos usuarios de SQL para la conexión. Servidores Vinculados no funcionarán porque sus credenciales donde cifrado con clave maestra de servicio del servidor de origen. Con el fin de solucionar este problema que necesita para copia de seguridad de clave maestra de servicio de [Servidor A], dar permiso en el archivo para su usuario y copiar en [Servidor B] para restaurarlo. - En [Servidor A] BACKUP maestra de servicio CLAVE PARA PRESENTAR = '[unidad]: \ share \ master_key' CIFRADO POR CONTRASEÑA = 'contraseña' - Hacer clic derecho sobre el archivo, propiedades, seguridad, permisos: Dar permisos completos a su usuario. - En [Servidor B] Restablecer el servicio MAESTRO clave desde un archivo = '[unidad]: \ master_keymaster_key' DESCIFRADO POR CONTRASEÑA = fuerza 'password' Cambiar el nombre del servidor en las tablas del sistema. @@ Variable de nombre de servidor apuntará al servidor antiguo. Se debe ser cambiado.- Verificación de nombre de servidor con ID = 0. Las consultas volverá antiguo nombre del servidor [SERVIDOR A]. [SERVIDOR B] no se encontrará. SELECT @@ nombreDeServidor EXEC sp_helpserver 'SERVIDOR B' EXEC sp_helpserver 'SERVIDOR A' srvname SELECT sysservers donde srvid = 0 - BORRAR referencias a viejas viejo nombre de servidor. sp_droplinkedsrvlogin EXEC 'SERVIDOR A', null EXEC sp_dropserver 'SERVIDOR A' - Añadir nuevo nombre de servidor: [servidor B] sp_addserver EXEC [SERVIDOR B], 'local', 'duplicate_OK' sp_addlinkedsrvlogin EXEC 'SERVIDOR B', 'verdadera' - REINICIAR SQL. [SERVIDOR B] reemplazará el viejo nombre de servidor. SELECT @@ nombreDeServidor EXEC sp_helpserver 'SERVIDOR B' srvname SELECT sysservers donde srvid = 0 En versiones anteriores a SQL Server 2008, tiene que actualizar también el nombre del servidor de origen en sysjobs también. En las versiones más altas, la referencia en sysjobs se hace por server_id que es siempre 0. * SELECT msdb.dbo.sysjobs msdb.dbo.sysjobs actualización del conjunto originating_server = @@ SERVERNAME DONDEoriginating_server <> @@ SERVERNAME III. Pasos para hacer restante en el servidor de producción actual - [Servidor A] Realizar copias de seguridad completas para todas las bases de datos de usuario. Es una buena idea utilizar la compresión de copia de seguridad y verificación de copia de seguridad (RESTORE VERIFYONLY) Realizar copias de seguridad diferenciales. Copiar todas las copias de seguridad en [Servidor B]. Restaurar copias de seguridad completas y copias de seguridad diferenciales en [B] SERVER con la opción "ninguna recuperación '. Realizar copias de seguridad transaccionales. Copiar todos tran copias de seguridad en [Servidor B] y restaurarlos utilizando la opción 'Recuperación' con. Y un último paso, después de restaurar todas las bases de datos de usuario, tenga en cuenta que cambiar las bases de datos propietarios al usuario 'sa', de lo contrario se producirán errores de ejecución de objetos de esquema sys como éstas: el permiso de ejecución fue negado en el objeto '', base de datos 'mssqlsystemresource', esquema 'sys'. (Proveedor de datos SqlClient .Net) utilizar Database_Name sp_changedbowner EXEC 'sa' ir