¿Cómo puedo hacer una copia de seguridad de tablas particulares en SQL Server 2008 usando T-SQL Script


Respuestas:


11

Los tipos de copia de seguridad dependen del modelo de recuperación de SQL Server. Cada modelo de recuperación le permite hacer una copia de seguridad de una base de datos de SQL Server completa o parcial o archivos individuales o grupos de archivos de la base de datos. La copia de seguridad a nivel de tabla no se puede crear, no existe tal opción. Pero hay una solución para esto

Es posible realizar copias de seguridad de la tabla de SQL Server en SQL Server. Hay varias formas alternativas de hacer una copia de seguridad de una tabla en SQL SQL Server

  1. BCP (PROGRAMA DE COPIA A GRANEL)
  2. Generar script de tabla con datos
  3. Haga una copia de la tabla usando SELECT INTO
  4. GUARDE los datos de la tabla directamente en un archivo plano
  5. Exportar datos usando SSIS a cualquier destino

Aquí estoy explicando solo el primer descanso que quizás conozcas

Método 1 - Copia de seguridad de la tabla sql usando BCP (PROGRAMA DE COPIA A GRANEL)

Para hacer una copia de seguridad de una tabla SQL llamada "Person.Contact", que reside en SQL Server AdventureWorks, debemos ejecutar el siguiente script, que

-- SQL Table Backup
-- Developed by DBATAG, www.DBATAG.com
DECLARE @table VARCHAR(128),
@file VARCHAR(255),
@cmd VARCHAR(512)
SET @table = 'AdventureWorks.Person.Contact' --  Table Name which you want    to backup
SET @file = 'C:\MSSQL\Backup\' + @table + '_' + CONVERT(CHAR(8), GETDATE(), 112) --  Replace C:\MSSQL\Backup\ to destination dir where you want to place table data backup
+ '.dat'
SET @cmd = 'bcp ' + @table + ' out ' + @file + ' -n -T '
EXEC master..xp_cmdshell @cmd

SALIDA

ingrese la descripción de la imagen aquí

Nota -

  1. Debe tener privilegios de importación / exportación masiva
  2. En el script anterior, -n denota los tipos de datos SQL nativos, que es clave durante la restauración
  3. -T denota que se está conectando a SQL Server usando la autenticación de Windows, en caso de que quiera conectarse usando la autenticación de SQL Server use -U -P
  4. Esto también le dirá, la velocidad de transferencia de datos, en mi caso esto fue 212468.08 filas por segundo.
  5. Una vez que este comando se complete, esto creará un archivo llamado "AdventureWorks.Person.Contact_20120222" es una carpeta de destino especificada

Alternativamente , puede ejecutar el BCP a través del símbolo del sistema y escribir el siguiente comando en el símbolo del sistema, ambas operaciones realizan la misma actividad, pero me gusta el método mencionado anteriormente, ya que es guardar el tipo al abrir un símbolo del sistema y escribir.

bcp AdventureWorks.Person.Contact out C:\MSSQL\Backup\AdventureWorks.Person.Contact_20120222.dat -n -T

ingrese la descripción de la imagen aquí


9

Método 1:

Si solo le preocupan los datos en las tablas y los que se usarán localmente dentro de la misma base de datos y servidor, puede usar la consulta a continuación para hacer una copia de seguridad de las tablas seleccionadas:

SELECT * INTO newtable1
FROM originalTable1

--- Para la tabla 2

SELECT * INTO newtable2
FROM originalTable2

y así sucesivamente ... para n número de tablas

Esta declaración CREARÁ las tablas llamadas newtable1, newtable1, .. por lo tanto, no es necesario que lo cree previamente.

Nota * Este método lleva a cabo la copia de seguridad bastante rápido, pero la mayor desventaja sería que no transfiere las claves, índices y restricciones de la tabla y la copia de seguridad se almacena en la base de datos, no en un lugar externo a un archivo

Método 2:

Si desea hacer una copia de seguridad de la tabla en otro servidor para cualquier solución de recuperación de desastres o prevención de pérdida de datos, puede crear una secuencia de comandos de la tabla utilizando la opción Generar secuencias de comandos de Tareas.

  1. Primero, haga clic derecho en la base de datos que contiene las tablas que desea respaldar y elija Tareas -> Generar secuencias de comandos

  2. Seleccione su base de datos de la lista cuyas tablas deben ser respaldadas

  3. La siguiente pantalla que aparece es las Opciones de script.

  4. Desplácese hacia abajo en las opciones de script hasta que vea Opciones de tabla / vista. Queremos que lo siguiente sea verdadero: Revisar restricciones, datos de script, claves foráneas, claves primarias, activadores y claves únicas. (O puedes elegir lo que necesites, por supuesto). Seleccione Siguiente y se nos presentará la pantalla Seleccionar tipos de objeto

  5. Selecciona Tablas y presiona siguiente. Por último, elija la tabla o tablas que desea respaldar y presione siguiente

Método 3:

También puede usar la utilidad bcp para las copias de seguridad de la tabla.


1

No puede hacer una copia de seguridad de tablas específicas en un .bakarchivo, puede exportarlas a csv o escribirlas o usarlas bcppara colocarlas en un archivo.

Lo que puede hacer si desea hacer una copia de seguridad de tablas específicas (y siempre son las mismas) es moverlas a un grupo separado file groupy hacer una copia de seguridad de ese archivo.

Consulte Copia de seguridad de archivos y grupos de archivos para obtener la documentación.

Por ejemplo, si desea hacer una copia de seguridad de archivos específicos o grupos de archivos usando T-SQL, puede usar (desde el enlace)

--Back up the files in SalesGroup1.
BACKUP DATABASE Sales
   FILEGROUP = 'SalesGroup1',
   FILEGROUP = 'SalesGroup2'
   TO DISK = 'C:\MySQLServer\Backups\Sales\SalesFiles.bck';
GO

y

--Backup the files in the SalesGroup1 secondary filegroup.
BACKUP DATABASE Sales
   FILE = 'SGrp1Fi2', 
   FILE = 'SGrp2Fi2' 
   TO DISK = 'G:\SQL Server Backups\Sales\SalesGroup1.bck';
GO

1
Desafortunadamente, debe hacer una copia de seguridad de todos los grupos de archivos de lectura / escritura juntos, por lo que no puede elegir solo uno.
Kamil Gosciminski

1

Basándose en el Método 1 de la respuesta de KASQLDBA:

Cree una base de datos separada para contener la copia de seguridad de las tablas. Modifique la consulta proporcionada por KASQLDBA para que seleccione de su tabla original y copie en la base de datos alternativa.

SELECT * INTO MyNewDatabase.dbo.newtable1
FROM OriginalDatabase.dbo.originalTable1

--- For table 2
SELECT * INTO MyNewDatabase.dbo.newtable2
FROM OriginalDatabase.dbo.originalTable2

Puede crear una secuencia de comandos que elimine las tablas en la nueva base de datos, luego ejecute los comandos select en cada tabla requerida. Si desea tener índices y otros objetos disponibles, puede construirlos en su nueva base de datos y truncar las tablas antes de volver a llenarlas. Si prefiere el truncamiento, necesitaría usar instrucciones de inserción en lugar de select into.

Esta opción le proporcionará un método para crear un archivo .BAK. Simplemente ejecuta un comando de copia de seguridad de la base de datos después de haber llenado las tablas en la nueva base de datos.


1

Usando la función de exportación masiva de SSMS, este es el método mejor y más fácil mencionado

Asistente de importación y exportación de SQL Server : el asistente de importación y exportación de SQL Server proporciona una interfaz gráfica de usuario en un paquete de SQL Server Integration Services (SSIS). Una vez creado, el paquete puede automatizarse para ejecutarse en un horario. Se puede configurar y modificar aún más mediante el uso de herramientas de datos de SQL Server (SSDT)

Para comenzar, abra el asistente Importar y exportar, haga clic con el botón derecho en una base de datos y seleccione el submenú Tareas -> Exportar comando de datos.

ingrese la descripción de la imagen aquí


Si bien este enlace puede responder la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace como referencia. Las respuestas de solo enlace pueden volverse inválidas si la página vinculada cambia. - De la opinión
kevinsky

@kevinsky ¡Claro! ¡Pero al menos deberías haber votado!
Sayyed Dawood

-1

Otro método es usar script / sproc: DumpDataFromTable.sql de: https://github.com/Zindur/MSSQL-DumpTable/tree/master/Scripts

 EXECUTE [dbo].[DumpDataFromTable] @SchemaName = 'dbo', @TableName = 'Table', @PathOut = 'c:\temp\Scripts'

Debe pasar: el nombre del esquema y el nombre de la tabla, luego la ruta de salida donde se guardará el script creado (la carpeta de notas ya debe haber creado / existir y sql tiene permiso para ver el comentario en sproc).

Y si lo desea, puede agregar una condición a la tabla (el filtro debe comenzar con AND por el momento)


este procedimiento depende de un procedimiento faltante PRC_WritereadFile
SubqueryCrunch

-2

Copia de seguridad de una sola tabla con sus datos de una base de datos en SQL Server 2008:

SELECT * INTO  [dbo].[tbl_NewTable] 
FROM [dbo].[tbl_OldTable]
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.