Je souhaite effectuer une sauvegarde de tables particulières disponibles dans ma base de données dans un .bak
fichier, et tout cela doit être fait en utilisant un script T-SQL.
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 manières alternatives de sauvegarder une table dans SQL Server SQL
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
SORTIE
Remarque -
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 type.
bcp AdventureWorks.Person.Contact out C:\MSSQL\Backup\AdventureWorks.Person.Contact_20120222.dat -n -T
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.
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
Sélectionnez votre base de données dans la liste dont les tables doivent être sauvegardées
L'écran suivant qui apparaît est les options de script.
Faites défiler 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
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 tilitaire bcp pour les sauvegardes de table.
En utilisant la fonction d'exportation en masse de SSMS, ici est 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 SQL Server Integration Services (SSIS). 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.
Vous ne pouvez pas sauvegarder des tables spécifiques dans un .bak
fichier, vous pouvez les exporter vers csv ou les écrire ou utiliser bcp
pour les mettre 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 file group
et sauvegardez ce groupe de fichiers.
Voir Sauvegarder les fichiers et les 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
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 créer 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.