2010-02-16 5 views
0

Nous voulons créer une application C#/VC++ en utilisant ce que nous devrions être capables de créer des SNAPSHOTs de base de données sql server dans notre propre format de fichier (en ligne). Et plus tard, nous devrions être en mesure d'obtenir des données de ces fichiers snapshots hors ligne en utilisant notre application (c'est-à-dire que nous devrions pouvoir obtenir le nombre/noms des tables/colonnes ... etc détails).Créer une base de données SnapShots avec nos propres formats

Est-ce que quelqu'un sait comment faire cela?

Merci

+0

Pourquoi dans votre propre format? Quel est le problème avec les propres snapshots de SQL Server? – MartW

+0

Vous semblez avoir posé cette question de 3 ou 4 manières différentes. Il pourrait être plus facile de vous répondre si vous fournissez plus de détails sur ce que fait votre application. Êtes-vous uniquement intéressé par le (s) schéma (s) de la base de données, ou voulez-vous également des données? –

+0

@CodeByMoonlight - team-ferrari22 a déjà posé des questions à propos de ces - http://stackoverflow.com/questions/2266211/how-to-convert-snapshot-files-to-any-other-format –

Répondre

0

Si vous êtes uniquement intéressé par les noms des tables et des colonnes, une solution simple serait d'interroger INFORMATION_SCHEMA.COLUMNS:

select * from INFORMATION_SCHEMA.COLUMNS 

Vous pouvez stocker la sortie de cette requête dans un fichier format de votre choix - il devrait vous donner assez d'informations pour visualiser la structure des tables à une date ultérieure.

Le INFORMATION_SCHEMA inclut également d'autres vues sur les index, les contraintes, etc., que vous pouvez joindre ensemble pour obtenir une image plus complète de la structure de la base de données. Il est inclus dans SQL 2000 SP3 et toutes les versions ultérieures. Alternativement, si vous en avez, vous pouvez utiliser les scripts DDL pour votre base de données à partir de votre système de contrôle de source, et les analyser pour une vue historique du schéma.

+0

Ne serait pas "hors ligne" - a besoin d'un serveur SQL pour exécuter l'instruction SELECT. – MSalters

+0

@MSalters - peut-être aurais-je dû être plus clair - je veux dire extraire les données dans un fichier lorsque la base de données est en ligne pour référence ultérieure. –

0

Je suis à peu près certain que c'est impossible.

Le mécanisme fondamental d'alimentation des instantanés est la copie sur écriture. COW vous permet de faire une copie bon marché des données existantes, efectivement en ne copiant pas les données jusqu'à ce qu'une modification soit faite, puis en copiant seulement les parties modifiées. Par conséquent, toutes les données non modifiées seront partagées entre l'original et la copie apparente. Un instantané de base de données est simplement la version d'origine, tandis que l'état "actuel" de la base de données est la copie COW. Vous ne pouvez pas le configurer vous-même, car vous ne pouvez pas faire une copie de la base de données. Et même si vous pouviez faire une telle copie, le point entier d'une copie de COW est que c'est une copie , c'est-à-dire dans le même format. Donc, ce ne serait pas dans votre format.

Questions connexes