Quiero hacer una copia de seguridad de tablas particulares disponibles en mi base de datos en un .bak
archivo, y todo esto debe hacerse usando un script T-SQL.
Quiero hacer una copia de seguridad de tablas particulares disponibles en mi base de datos en un .bak
archivo, y todo esto debe hacerse usando un script T-SQL.
Respuestas:
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
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
Nota -
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
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.
Primero, haga clic derecho en la base de datos que contiene las tablas que desea respaldar y elija Tareas -> Generar secuencias de comandos
Seleccione su base de datos de la lista cuyas tablas deben ser respaldadas
La siguiente pantalla que aparece es las Opciones de script.
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
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.
No puede hacer una copia de seguridad de tablas específicas en un .bak
archivo, puede exportarlas a csv o escribirlas o usarlas bcp
para 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 group
y 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
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.
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.
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)
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]