Sauvegarde au niveau de la table

Réponses:

89

Vous ne pouvez pas utiliser la BACKUP DATABASEcommande pour sauvegarder une seule table, à moins bien sûr que la table en question ne soit allouée à la sienne FILEGROUP.

Ce que vous pouvez faire, comme vous l’avez suggéré, est d’exporter les données du tableau dans un fichier CSV. Maintenant, pour obtenir la définition de votre table, vous pouvez "Script out" le CREATE TABLEscript.

Vous pouvez le faire dans SQL Server Management Studio, en:

clic droit Base de données> Tâches> Générer un script

Vous pouvez ensuite sélectionner la table que vous souhaitez exécuter par script et également choisir d'inclure tous les objets associés, tels que les contraintes et les index.

afin de vous en sortir DATAavec juste le schema, vous devez choisir Advancedsur l'onglet des options de script, et dans la GENERALsection définir le Types of data to scriptselectSchema and Data

J'espère que cela vous aidera, mais n'hésitez pas à me contacter directement si vous avez besoin d'une assistance supplémentaire.

John Sansom
la source
L'assistant de publication de base de données automatisera les étapes que j'ai décrites.
John Sansom
25
John, n'oubliez pas de mentionner que pour obtenir les DONNÉES avec juste le schéma, vous devez choisir Advanceddans l'onglet des options de script, et dans la section GÉNÉRAL, définir la Types of data to scriptsélection Schema and Data. Ce n'était pas évident la première fois que je l'ai fait.
Alex C le
Le conseil d'Alex est très important. Existe-t-il également un moyen de créer un script au lieu de parcourir les menus de SQL Server?
sooprise le
1
Vous devriez pouvoir y parvenir en utilisant une combinaison de PowerShell et SMO. Voir cet article de Phil Factor comme guide: simple-talk.com/sql/database-administration
John Sansom
@AlexC Merci! M'a sauvé un mal de tête :)
Simon Whitehead
55

J'utilise l' utilitaire de copie en bloc pour réaliser des sauvegardes au niveau de la table

exporter:

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

importer:

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

comme vous pouvez le voir, vous pouvez exporter en fonction de n'importe quelle requête, vous pouvez donc même faire des sauvegardes incrémentielles avec cela. De plus, il est scriptable par opposition aux autres méthodes mentionnées ici qui utilisent SSMS.

Kenwarner
la source
1
Juste un avertissement. Si vous souhaitez simplement copier la table en utilisant le nom au lieu d'une requête de sélection, modifiez le script pour utiliser OUT à la place de QUERYOUT.
Valamas
45

Voici les étapes dont vous avez besoin. L'étape 5 est importante si vous voulez les données. L'étape 2 est l'endroit où vous pouvez sélectionner des tables individuelles.

La version de la pile EDIT n'est pas tout à fait lisible ... voici une image en taille réelle http://i.imgur.com/y6ZCL.jpg

Voici les étapes de la réponse de John Sansom

Alex C
la source
Quel SSMS utilisiez-vous @Alex C? Dans mon SSMS2005, mon assistant est différent du vôtre.
KirdApe
Je suis désolé, cela fait des années que j'ai répondu à cela. Je suppose que j'utilisais probablement 2008. Je viens de vérifier mon assistant maintenant et vous n'avez plus besoin de CLIQUER avancé, mais à la place, la liste entière de l'image 5 (ci-dessus) apparaît comme l'une des pages de l'assistant. De plus, l'option STRUCTURE et DATA a été divisée en options TRUE / FALSE pour chacune d'entre elles individuellement. Faites-moi savoir si je peux faire autre chose pour vous aider.
Alex C
19

Vous pouvez exécuter la requête ci-dessous pour effectuer une sauvegarde de la table existante qui créerait une nouvelle table avec la structure existante de l'ancienne table avec les données.

select * into newtablename from oldtablename

Pour copier uniquement la structure de la table, utilisez la requête ci-dessous.

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

Ceci est similaire à la solution de qntmfred , mais en utilisant un vidage de table direct. Cette option est légèrement plus rapide (voir la documentation BCP ):

exporter:

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

importer:

bcp [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000
Diego
la source
1
Cela inclut-il des contraintes?
user3071284
4

Si vous recherchez quelque chose comme MySQL DUMP, alors bonne nouvelle: SQL Server 2008 Management Studio a ajouté cette capacité.

Dans SSMS, faites un clic droit sur la base de données en question et sélectionnez Tâches> Générer des scripts . Ensuite, dans la 2ème page de l'assistant d'options, assurez-vous de sélectionner que vous souhaitez également les données scriptées , et cela générera ce qui équivaut à un DUMPfichier pour vous.

Michael K. Campbell
la source
3

Créez un nouveau groupe de fichiers, placez-y cette table et sauvegardez uniquement ce groupe de fichiers.

Konstantin Tarkus
la source
Cela inclut-il des contraintes?
user3071284
2

Vous pouvez utiliser l' assistant de publication de base de données gratuit de Microsoft pour générer des fichiers texte avec des scripts SQL (CREATE TABLE et INSERT INTO).

Vous pouvez créer un tel fichier pour une seule table et vous pouvez "restaurer" la table complète, y compris les données, en exécutant simplement le script SQL.

Christian Specht
la source
+1 Pour toutes les personnes habituées aux scripts SQL, c'est l'option que vous recherchez. Décochez la case "Script tous les objets de la base de données sélectionnée" afin de sélectionner des tables individuelles. Captures d'écran: products.secureserver.net/products/hosting/…
lepe
2

Je ne sais pas si cela correspondra au problème décrit ici. J'ai dû prendre la sauvegarde incrémentielle d'une table! (Seules les nouvelles données insérées doivent être copiées). J'avais l'habitude de concevoir un package DTS où.

  1. Je récupère de nouveaux enregistrements (sur la base d'une colonne «statut») et transfère les données vers la destination. (Via 'Transformer la tâche de données')

  2. Ensuite, je viens de mettre à jour la colonne «statut». (Via 'Exécuter la tâche SQL')

J'ai dû réparer correctement le «flux de travail».

azmnoman
la source
2

Utilisez l'assistant d'importation et d'exportation SQL Server.

  1. ssms
  2. Ouvrez le moteur de base de données
  3. Alt. cliquez sur la base de données contenant la table à exporter
  4. Sélectionnez "Tâches"
  5. Sélectionnez "Exporter les données ..."
  6. Suivez l'assistant
EndUzr
la source
1

Chaque modèle de récupération vous permet de sauvegarder une base de données SQL Server entière ou partielle ou des fichiers ou groupes de fichiers individuels de la base de données. Les sauvegardes au niveau de la table ne peuvent pas être créées .

De: Vue d'ensemble de la sauvegarde (SQL Server)

Blé Mitch
la source
0

Vous avez probablement deux options, car SQL Server ne prend pas en charge les sauvegardes de table. Les deux commenceraient par le script de la création de la table. Ensuite, vous pouvez soit utiliser l'option Script Table - INSERT qui générera de nombreuses instructions d'insertion, soit utiliser les services d'intégration (DTS avec 2000) ou similaires pour exporter les données au format CSV ou similaire.

Miles D
la source
0

Si vous cherchez à pouvoir restaurer une table après que quelqu'un en ait supprimé des lignes par erreur, vous pouvez peut-être jeter un œil aux instantanés de la base de données. Vous pouvez restaurer la table assez facilement (ou un sous-ensemble de lignes) à partir de l'instantané. Voir http://msdn.microsoft.com/en-us/library/ms175158.aspx

SPE109
la source
0

Une application gratuite nommée SqlTableZip fera le travail. En gros, vous écrivez tout requête (qui, bien sûr, peut également être [sélectionner * à partir de la table]) et l'application crée un fichier compressé avec toutes les données, qui peut être restauré plus tard.

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

asapir
la source
0

Handy Backup crée automatiquement des fichiers de vidage à partir de MS SQL Server, y compris MSSQL 2005/2008. Ces vidages sont des fichiers binaires de niveau table, contenant des copies exactes du contenu de la base de données particulière.

Pour effectuer un simple vidage avec Handy Backup, veuillez suivre les instructions suivantes:

  1. Installez Handy Backup et créez une nouvelle tâche de sauvegarde.
  2. Sélectionnez «MSSQL» à l'étape 2 comme source de données. Dans une nouvelle fenêtre, marquez une base de données à sauvegarder.
  3. Sélectionnez parmi différentes destinations où vous stockerez vos sauvegardes.
  4. À l'étape 4, sélectionnez l'option de sauvegarde «Complète». Configurez un horodatage si vous en avez besoin.
  5. Ignorez une étape 5 sauf si vous avez besoin de compresser ou de crypter un fichier de vidage résultant.
  6. À l'étape 6, configurez une planification pour une tâche afin de créer des vidages périodiquement (sinon exécutez une tâche manuellement).
  7. Encore une fois, sautez une étape 7 et donnez un nom à votre tâche sur une étape 8. Vous avez terminé la tâche!

Maintenant, exécutez votre nouvelle tâche en cliquant sur une icône avant son nom, ou attendez l'heure prévue. Handy Backup créera automatiquement un vidage pour votre base de données. Ensuite, ouvrez votre destination de sauvegarde. Vous trouverez un dossier (ou quelques dossiers) avec vos sauvegardes MS SQL. Un tel dossier contiendra un fichier de vidage au niveau de la table, composé de quelques tables binaires et paramètres compressés dans un seul ZIP.

Autres bases de données

Handy Backup peut enregistrer des vidages pour MySQL, MariaDB, PostgreSQL, Oracle, IBM DB2, Lotus Notes et toute base de données SQL générique ayant un pilote ODBC. Certaines de ces bases de données nécessitent des étapes supplémentaires pour établir des connexions entre le SGBD et Handy Backup.

Les outils décrits ci-dessus vident souvent les bases de données SQL sous forme de séquence de commandes SQL au niveau de la table, ce qui rend ces fichiers prêts pour toutes les modifications manuelles dont vous avez besoin.

Mark Geek
la source