Comment puis-je prendre une sauvegarde de tables particulières dans SQL Server 2008 à l'aide du script T-SQL

14

Je veux prendre une sauvegarde de tables particulières disponibles dans ma base de données dans un .bakfichier, et tout cela doit être fait en utilisant un script T-SQL.

Firoz Tennali
la source

Réponses:

11

Les types de sauvegarde dépendent du modèle de récupération de SQL Server. 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 individuels ou des groupes de fichiers de la base de données. La sauvegarde au niveau de la table ne peut pas être créée, cette option n'existe pas. Mais il existe une solution à ce problème

Prise de sauvegarde de la table SQL Server possible dans SQL Server. Il existe différentes façons de sauvegarder une table dans SQL Server SQL

  1. BCP (PROGRAMME DE COPIE EN VRAC)
  2. Générer un script de table avec des données
  3. Faire une copie du tableau à l'aide de SELECT INTO
  4. ENREGISTRER les données de table directement dans un fichier plat
  5. Exporter des données à l'aide de SSIS vers n'importe quelle destination

Ici, j'explique seulement le premier repos que vous connaissez peut-être

Méthode 1 - Sauvegarde de la table SQL à l'aide de BCP (BULK COPY PROGRAM)

Pour sauvegarder une table SQL nommée "Person.Contact", qui réside dans SQL Server AdventureWorks, nous devons exécuter le script suivant, qui

-- 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

PRODUCTION

entrez la description de l'image ici

Remarque -

  1. Vous devez avoir des privilèges d'import / export en masse
  2. Dans le script ci-dessus, -n désigne les types de données SQL natifs, ce qui est essentiel lors de la restauration
  3. -T indique que vous vous connectez à SQL Server à l'aide de l'authentification Windows, au cas où vous souhaitez vous connecter à l'aide de l'authentification SQL Server, utilisez -U -P
  4. Cela vous dira également que vous accélérez le transfert de données, dans mon cas, c'était 212468,08 lignes par seconde.
  5. Une fois ces commandes terminées, cela créera un fichier nommé "AdventureWorks.Person.Contact_20120222" est un dossier de destination spécifié

Alternativement , vous pouvez exécuter le BCP via l'invite de commande et tapez la commande suivante dans l'invite de commande, les deux opérations effectuent la même activité, mais j'aime la méthode mentionnée ci-dessus car c'est le type de sauvegarde en ouvrant une invite de commande et tapez.

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

entrez la description de l'image ici

Tufan Chand
la source
9

Méthode 1:

Si vous ne vous souciez que des données des tables et de celles qui doivent être utilisées localement dans la même base de données et le même serveur, vous pouvez utiliser la requête ci-dessous pour effectuer une sauvegarde des tables sélectionnées:

SELECT * INTO newtable1
FROM originalTable1

--- Pour le tableau 2

SELECT * INTO newtable2
FROM originalTable2

et ainsi de suite ... pour n nombre de tables

Cette instruction CREERA les tables appelées newtable1, newtable1, .. vous n'avez donc pas besoin de le créer auparavant.

Remarque * Cette méthode prend la sauvegarde assez rapidement mais l'inconvénient majeur serait qu'elle ne reporte pas les clés, les index et les contraintes de la table et que la sauvegarde est stockée dans la base de données et non quelque part à l'extérieur d'un fichier

Méthode 2:

Si vous souhaitez sauvegarder la table sur un autre serveur pour une solution de récupération après sinistre ou une prévention de perte de données, vous pouvez créer un script pour la table à l'aide de l'option Générer des scripts à partir des tâches.

  1. Tout d'abord, faites un clic droit sur la base de données qui contient les tables que vous souhaitez sauvegarder et choisissez Tâches -> Générer des scripts

  2. Sélectionnez votre base de données dans la liste dont les tables doivent être sauvegardées

  3. L'écran suivant qui apparaît est les options de script.

  4. Faites défiler vers le bas sur les options de script jusqu'à ce que vous voyiez Options de table / affichage. Nous voulons que ce qui suit soit vrai: vérifier les contraintes, les données de script, les clés étrangères, les clés primaires, les déclencheurs et les clés uniques. (Ou vous pouvez bien sûr choisir ce dont vous avez besoin). Sélectionnez Suivant et nous sommes présentés avec l'écran Sélectionner les types d'objets

  5. Sélectionnez Tables et appuyez sur suivant. Enfin, choisissez la ou les tables que vous souhaitez sauvegarder et cliquez sur Suivant

Méthode 3:

Vous pouvez également utiliser l' utilitaire bcp pour les sauvegardes de table.

KASQLDBA
la source
1

Vous ne pouvez pas sauvegarder des tables spécifiques dans un .bakfichier, vous pouvez les exporter vers csv ou les écrire ou les utiliser bcppour les placer dans un fichier.

Ce que vous pouvez faire si vous souhaitez sauvegarder des tables spécifiques (et elles sont toujours les mêmes) est de les déplacer dans un groupe distinct file groupet de sauvegarder ce groupe de fichiers.

Voir Sauvegarder des fichiers et des groupes de fichiers pour la documentation.

Par exemple, si vous souhaitez sauvegarder des fichiers ou des groupes de fichiers spécifiques à l'aide de T-SQL, vous pouvez utiliser (à partir du lien)

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

et

--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
Tom V - essayez topanswers.xyz
la source
1
Malheureusement, vous devez sauvegarder tous les groupes de fichiers en lecture / écriture ensemble, vous ne pouvez donc pas en choisir un seul.
Kamil Gosciminski
1

S'appuyant sur la méthode 1 de la réponse de KASQLDBA:

Créez une base de données distincte pour conserver la copie sauvegardée des tables. Modifiez la requête fournie par KASQLDBA afin de sélectionner dans votre table d'origine et de la copier dans la base de données alternative.

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

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

Vous pouvez créer un script qui supprime les tables dans la nouvelle base de données, puis exécuter les commandes select into pour chaque table requise. Si vous souhaitez avoir des index et d'autres objets disponibles, vous pouvez les construire sur votre nouvelle base de données et tronquer les tables avant de les remplir à nouveau. Si vous préférez la troncature, vous devrez utiliser des instructions d'insertion à la place de select into.

Cette option vous fournira une méthode pour créer un fichier .BAK. Vous exécutez simplement une commande de base de données de sauvegarde après avoir rempli les tables dans la nouvelle base de données.

Gary
la source
1

En utilisant la fonction d'exportation en masse de SSMS, voici la méthode la meilleure et la plus simple mentionnée

Assistant d'importation et d'exportation SQL Server : l'assistant d'importation et d'exportation SQL Server fournit une interface utilisateur graphique sur un package SSIS (SQL Server Integration Services). Une fois créé, le package peut être automatisé pour fonctionner selon un calendrier. Il peut être davantage configuré et modifié à l'aide de SQL Server Data Tools (SSDT)

Pour commencer, ouvrez l'assistant d'importation et d'exportation, cliquez avec le bouton droit sur une base de données et sélectionnez le sous-menu Tâches -> commande Exporter les données.

entrez la description de l'image ici

Sayyed Dawood
la source
Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien de référence. Les réponses de lien uniquement peuvent devenir invalides si la page liée change. - De l'avis
kevinsky
@kevinsky Bien sûr! Mais au moins, vous auriez dû le voter!
Sayyed Dawood
-1

Une autre méthode consiste à utiliser script / sproc: DumpDataFromTable.sql à partir de: https://github.com/Zindur/MSSQL-DumpTable/tree/master/Scripts

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

Vous devez passer: nom du schéma et nom de la table, puis chemin de sortie où le script créé sera enregistré (le dossier de note doit déjà être créé / exister et sql a l'autorisation voir le commentaire dans sproc).

Et si vous le souhaitez, vous pouvez ajouter une condition à la table (le filtre doit commencer par ET pour le moment)

Oleg Cio
la source
cette procédure dépend d'une procédure manquante PRC_WritereadFile
SubqueryCrunch
-2

Sauvegardez une seule table avec ses données à partir d'une base de données dans SQL Server 2008:

SELECT * INTO  [dbo].[tbl_NewTable] 
FROM [dbo].[tbl_OldTable]
JIYAUL MUSTAPHA
la source