Est-il possible de sauvegarder et restaurer une partie d'une base de données dans sql-server?

19

Nous avons une base de données SQL Server 2005 que nous transférons régulièrement de notre site client au nôtre. Cela prend beaucoup de temps car nous n'avons pas de connexion directe et devons transférer le fichier via leur application de transfert de fichiers basée sur le Web. La base de données est actuellement d'environ 10 Go, mais nous n'avons pas besoin de toutes les données - la plupart se trouvent dans des tables d'audit et des tables contenant des valeurs calculées qui peuvent être régénérées.

J'ai envisagé de créer un groupe de fichiers pour contenir les tables d'audit et j'espérais pouvoir simplement sauvegarder et restaurer le groupe de fichiers principal. Je peux sauvegarder correctement mais lors de la restauration, j'obtiens une erreur indiquant que je ne le restaure pas dans la même base de données. Est-il possible de restaurer une partie d'une base de données sur un autre serveur à l'aide de groupes de fichiers? Y a-t-il une meilleure manière de faire cela?

Adam Butler
la source
1
Vous pourriez bénéficier de la lecture de cette question: la plus petite sauvegarde possible… avec SQL Server , et surtout la réponse de Brent.
Marian
Comme cela ne semble pas possible sans beaucoup de Hackery, je pense que nous pourrions envisager de déplacer toutes les tables de journal d'audit vers une base de données distincte
Adam Butler
Cela ne nécessiterait-il pas un changement de code dans l'application? C'est un peu trop demander au client de passer.
Shawn Melton

Réponses:

15

Pour être honnête, c'est le plus simple:

  • sauvegarder / restaurer une copie localement
  • supprimer les données indésirables de la copie (avec DELETE ou TRUNCATE TABLE, pas DROP ...)
  • expédier la copie

Je ne m'embêterais pas avec les groupes de fichiers en raison de la complexité supplémentaire que vous avez notée ...

gbn
la source
1
Je suggère de changer cette base de données nouvellement restaurée en modèle de récupération simple. msdn.microsoft.com/en-CA/library/ms189272.aspx
datagod
7

La façon dont vous parlez de ne nécessiter que le groupe de fichiers principal, il me semble que vous ne voulez que la structure de la base de données et une très petite quantité de données. Je suggérerais si vous voulez juste une mise à jour de la structure de la base de données (objets, tables, etc.) pour simplement créer un script pour la base de données avec tous les objets. Cela peut être fait rapidement et facilement avec PowerShell.

Ensuite, les données dont vous avez réellement besoin, qui ne peuvent pas être régénérées, exportez-les simplement (un script PowerShell pourrait également le faire). Je suis sûr que le fichier d'exportation peut ensuite être compressé dans une petite taille, puis transféré via la connexion à votre site.

Bien sûr, tout comme celle-ci, la suggestion @gbn pourrait être scriptée afin que ce soit à vous de déterminer quelle option prend le moins de temps.

Shawn Melton
la source
2

Ceci est possible en utilisant la restauration fragmentaire . Les objets et les groupes de fichiers de la base de données source doivent être organisés de manière à prendre en charge cela. Le RESTORE nécessite des mots clés spécifiques supplémentaires.

Bien que le concept puisse prendre un peu de temps pour s'y habituer, la quantité de scripts à implémenter n'est pas supérieure à celle des autres solutions suggérées.

Michael Green
la source
-1

Faites un clic droit et générez des scripts, puis changez le nom de la base de données en cible (USE db).

Expliqué ici

Jude
la source
Qu'est ce qui ne va pas avec ça?
Jude