2009-12-21 7 views
0

Je souhaite implémenter la fonctionnalité de sauvegarde et de restauration pour mon application. Ici, je veux sauvegarder les données filtrées (pas toute la base de données).Sauvegarde et restauration des données filtrées à partir de la base de données SQL Server à l'aide du C#

Comme Select * from Sales where CompanyId=1 Pour toutes les tables de la base de données et d'écrire ces données dans un fichier fichier.bak, plus tard, je peux être utilisé à des fins de restauration.

Ma question est ici Y a-t-il un moyen d'implémenter cette fonctionnalité en utilisant SMO? Si vous avez d'autres suggestions sur la façon de mettre en œuvre cela, je suis très heureux de l'entendre.

S'il vous plaît aidez-moi des amis ..

Répondre

2

Il n'y a pas de manière native dans laquelle vous allez réaliser cette sauvegarde, mais il y a des solutions de contournement difficiles que vous pouvez faire pour essayer d'obtenir cette fonctionnalité. Si chaque table inclut le champ CompanyId, vous pouvez créer un schéma/une fonction de partition basé sur l'ID de la société et placer spécifiquement chaque partition du schéma dans un groupe de fichiers distinct. Cela a ensuite divisé les données pour chaque CompanyId sur un groupe de fichiers différent, qui est la clé car il existe la fonctionnalité pour effectuer une sauvegarde de niveau fichier/groupe de fichiers dans SQL au lieu de la base de données entière.

Je ne ferais pas cela à moins que ce soit la dernière option, je pense que je travaillerais exactement sur les exigences de sauvegarde/restauration, et vérifierais s'il y a de meilleures options/choix.

+0

Andrew, merci pour votre aide. Donc, je devrais utiliser une fonction de partition ici. J'ai besoin d'un conseil ici. Dois-je créer un groupe de fichiers pour chaque entreprise? Cela donnera-t-il plus de performance? ou simplement effectuer une partition au moment de la sauvegarde? Je pense que la première option sera bonne. mais j'ai besoin de créer une fonction de partition dynamique qui se met à jour à chaque création de l'entreprise, ce qui provoquera une ré-indexation. –

+0

Je suis nouveau à ce partitionnement et les choses. Jusqu'à présent, j'ai seulement travaillé avec Select, insérer/mettre à jour/supprimer des commandes .. J'essaie de comprendre ces choses. Est-ce exact, ce que j'ai dit lors du commentaire précédent? –

+0

Performance - dépend de la façon dont elle est configurée et de l'E/S, vous obtiendrez une élimination de partition dans les requêtes, à condition que chaque requête spécifie la clé de partition dans une clause where, donc certains y gagneront mais probablement pas tous. Insérer/Mettre à jour/Sélectionner tout le travail comme d'habitude, il est invisible de ce point de vue. La création/maintenance de partition est le plus gros problème - et l'ajout d'une nouvelle partition ne provoque pas de réindexation, si vous utilisez des index alignés - ce qui signifie que l'index est partitionné sur le même schéma. – Andrew

Questions connexes