Copia de seguridad a nivel de tabla

Respuestas:

89

No puede usar el BACKUP DATABASEcomando para respaldar una sola tabla, a menos que, por supuesto, la tabla en cuestión esté asignada a la suya FILEGROUP.

Lo que puede hacer, como ha sugerido, es exportar los datos de la tabla a un archivo CSV. Ahora, con el fin de obtener la definición de su tabla, puede realizar un script en el CREATE TABLEscript.

Puede hacer esto dentro de SQL Server Management Studio, por:

haciendo clic derecho en Base de datos> Tareas> Generar script

A continuación, puede seleccionar la tabla que desea convertir en script y también elegir incluir cualquier objeto asociado, como restricciones e índices.

para poder llevarse DATAbien con solo el schema, debe elegir Advanceden la pestaña de opciones de scripting establecer, y en la GENERALsección establecer la Types of data to scriptselecciónSchema and Data

Espero que esto ayude, pero no dude en ponerse en contacto conmigo directamente si necesita más ayuda.

John Sansom
fuente
El 'Asistente de publicación de bases de datos' automatizará los pasos que he descrito.
John Sansom
25
John, no olvide mencionar que para obtener los DATOS junto con solo el esquema, debe elegir Advanceden la pestaña de opciones de scripting de conjunto, y en la sección GENERAL establecer la Types of data to scriptselección Schema and Data. Eso no fue obvio la primera vez que lo hice.
Alex C
El consejo de Alex es muy importante. Además, ¿hay alguna forma de escribir esto en lugar de pasar por los menús en SQL Server?
sooprise
1
Debería poder lograr esto utilizando una combinación de PowerShell y SMO. Consulte este artículo de Phil Factor como guía: simple-talk.com/sql/database-administration/…
John Sansom
@AlexC ¡Gracias! Me salvó un dolor de cabeza :)
Simon Whitehead
55

Estoy usando la utilidad de copia masiva para lograr copias de seguridad a nivel de tabla

exportar:

bcp.exe "select * from [MyDatabase].dbo.Customer " queryout "Customer.bcp" -N -S localhost -T -E

importar:

bcp.exe [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000

como puede ver, puede exportar en función de cualquier consulta, por lo que incluso puede hacer copias de seguridad incrementales con esto. Además, es programable a diferencia de los otros métodos mencionados aquí que usan SSMS.

kenwarner
fuente
1
Solo un aviso. Si solo desea copiar la tabla usando el nombre en lugar de una consulta de selección, cambie el script para usar OUT en lugar de QUERYOUT.
Valamas
45

Estos son los pasos que necesita. Step5 es importante si desea los datos. El paso 2 es donde puede seleccionar tablas individuales.

EDITAR la versión de la pila no es del todo legible ... aquí hay una imagen de tamaño completo http://i.imgur.com/y6ZCL.jpg

Estos son los pasos de la respuesta de John Sansom

Alex C
fuente
¿Qué SSMS estaba usando @Alex C? En mi SSMS2005, mi asistente es diferente al tuyo.
KirdApe
Lo siento, han pasado años desde que respondí esto. Supongo que probablemente estaba usando 2008. Acabo de revisar mi asistente ahora y ya no tiene que HACER CLIC avanzado, sino que la lista completa del cuadro 5 (arriba) aparece como una de las páginas del asistente. Además, la opción ESTRUCTURA y DATOS se ha dividido en opciones VERDADERO / FALSO para cada una de forma individual. Avíseme si hay algo más que pueda hacer para ayudar.
Alex C
19

Puede ejecutar la siguiente consulta para realizar una copia de seguridad de la tabla existente que crearía una nueva tabla con la estructura existente de la tabla anterior junto con los datos.

select * into newtablename from oldtablename

Para copiar solo la estructura de la tabla, use la siguiente consulta.

select * into newtablename from oldtablename where 1 = 2
Haripriya
fuente
7

Esto es similar a la solución de qntmfred , pero usando un volcado de tabla directo. Esta opción es un poco más rápida (consulte los documentos de BCP ):

exportar:

bcp "[MyDatabase].dbo.Customer " out "Customer.bcp" -N -S localhost -T -E

importar:

bcp [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000
Diego
fuente
1
¿Esto incluye limitaciones?
user3071284
4

Si está buscando algo como MySQL DUMP, entonces buenas noticias: SQL Server 2008 Management Studio agregó esa capacidad.

En SSMS, simplemente haga clic derecho en la base de datos en cuestión y seleccione Tareas> Generar scripts . Luego, en la segunda página del asistente de opciones, asegúrese de seleccionar que también le gustaría que se escribieran los datos , y generará lo que equivale a un DUMParchivo para usted.

Michael K. Campbell
fuente
3

Cree un nuevo grupo de archivos, coloque esta tabla en él y haga una copia de seguridad solo de este grupo de archivos.

Konstantin Tarkus
fuente
¿Esto incluye limitaciones?
user3071284
2

Puede utilizar el Asistente de publicación de bases de datos gratuito de Microsoft para generar archivos de texto con scripts SQL (CREAR TABLA e INSERTAR EN).

Puede crear un archivo de este tipo para una sola tabla y puede "restaurar" la tabla completa, incluidos los datos, simplemente ejecutando el script SQL.

Christian Specht
fuente
+1 Para todas las personas que están acostumbradas a los scripts SQL, esta es la opción que está buscando. Desmarque la opción "Secuencia de comandos de todos los objetos de la base de datos seleccionada" para seleccionar tablas individuales. Capturas de pantalla: products.secureserver.net/products/hosting/…
lepe
2

No sé si coincidirá con el problema descrito aquí. ¡Tuve que hacer una copia de seguridad incremental de una mesa! (Solo se deben copiar los datos nuevos insertados). Solía ​​diseñar un paquete DTS donde.

  1. Busco nuevos registros (sobre la base de una columna de 'estado') y transfiero los datos al destino. (A través de 'Transformar tarea de datos')

  2. Luego, acabo de actualizar la columna 'estado'. (A través de 'Ejecutar tarea SQL')

Tuve que arreglar el 'flujo de trabajo' correctamente.

azmnoman
fuente
2

Utilice el Asistente para importación y exportación de SQL Server.

  1. ssms
  2. Abra el motor de base de datos
  3. Alt. haga clic en la base de datos que contiene la tabla para exportar
  4. Seleccione "Tareas"
  5. Seleccione "Exportar datos ..."
  6. Sigue al mago
EndUzr
fuente
1

Cada modelo de recuperación le permite realizar una copia de seguridad de una base de datos SQL Server completa o parcial o de archivos individuales o grupos de archivos de la base de datos. No se pueden crear copias de seguridad a nivel de tabla .

De: Descripción general de la copia de seguridad (SQL Server)

Trigo Mitch
fuente
0

Probablemente tenga dos opciones, ya que SQL Server no admite copias de seguridad de tablas. Ambos comenzarían con un script para la creación de la tabla. Luego, puede usar la opción Tabla de secuencias de comandos - INSERT, que generará muchas declaraciones de inserción, o puede usar los servicios de integración (DTS con 2000) o similar para exportar los datos como CSV o similar.

Millas D
fuente
0

Si está buscando poder restaurar una tabla después de que alguien haya eliminado filas por error, tal vez pueda echar un vistazo a las instantáneas de la base de datos. Puede restaurar la tabla con bastante facilidad (o un subconjunto de las filas) desde la instantánea. Ver http://msdn.microsoft.com/en-us/library/ms175158.aspx

SPE109
fuente
0

Una aplicación gratuita llamada SqlTableZip hará el trabajo. Básicamente, escribes cualquier consulta (que, por supuesto, también puede ser [seleccionar * de la tabla]) y la aplicación crea un archivo comprimido con todos los datos, que se puede restaurar más tarde.

Enlace: http://www.doccolabs.com/products_sqltablezip.html

asapir
fuente
0

Handy Backup realiza automáticamente archivos de volcado de MS SQL Server, incluido MSSQL 2005/2008. Estos volcados son archivos binarios de nivel de tabla que contienen copias exactas del contenido de la base de datos en particular.

Para realizar un volcado simple con Handy Backup, siga las siguientes instrucciones:

  1. Instale Handy Backup y cree una nueva tarea de respaldo.
  2. Seleccione "MSSQL" en un Paso 2 como fuente de datos. En una nueva ventana, marque una base de datos para respaldar.
  3. Seleccione entre diferentes destinos donde almacenará sus copias de seguridad.
  4. En el Paso 4, seleccione la opción de copia de seguridad "Completa". Configure una marca de tiempo si la necesita.
  5. Omita un paso 5 a menos que necesite comprimir o cifrar un archivo de volcado resultante.
  6. En el Paso 6, configure un programa para que una tarea cree volcados periódicamente (de lo contrario, ejecute una tarea manualmente).
  7. Nuevamente, omita el Paso 7 y asigne un nombre a su tarea en el Paso 8. ¡Ha terminado la tarea!

Ahora ejecute su nueva tarea haciendo clic en un icono antes de su nombre o espere la hora programada. Handy Backup creará automáticamente un volcado para su base de datos. Luego abra su destino de copia de seguridad. Encontrará una carpeta (o un par de carpetas) con sus copias de seguridad de MS SQL. Cualquier carpeta de este tipo contendrá un archivo de volcado a nivel de tabla, que consta de algunas tablas binarias y configuraciones comprimidas en un solo ZIP.

Otras bases de datos

Handy Backup puede guardar volcados para MySQL, MariaDB, PostgreSQL, Oracle, IBM DB2, Lotus Notes y cualquier base de datos SQL genérica que tenga un controlador ODBC. Algunas de estas bases de datos requieren pasos adicionales para establecer conexiones entre el DBMS y Handy Backup.

Las herramientas descritas anteriormente a menudo descargan bases de datos SQL como una secuencia de comandos SQL a nivel de tabla, lo que hace que estos archivos estén listos para cualquier modificación manual que necesite.

Mark Geek
fuente