Je suis dans une situation où j'ai besoin de créer une copie partielle d'une base de données à partir d'un SQL Server distant (2005/2008 Express Edition) et de le stocker dans une base de données SQL Server locale (2005/2008 Express Edition). La copie locale aura la même définition de schéma, mais ne contiendra que des parties des données de la base de données distante.Comment faire une copie partielle d'une base de données SQL Server Express distante vers une base de données SQL Server Express locale?
La base de données locale doit donner un nom unique avec des paramètres à partir du code C#, semblable à
TodaysDate_SerialNumber_MachineNumber_DatabaseName
e.g. 20100622_1_3_DatabaseName
(Ne vous laissez pas prendre avec le schéma de nommage, il n'a pas encore été décidé.)
Je travaille en C# sur .net 3.5 en utilisant VS2010. Jusqu'à présent, je pensais exécuter le script de création de la base de données sur le serveur SQL local à partir du code C#, puis copier les données de la base de données distante dans la base de données locale, filtrée sur ce dont j'avais réellement besoin. Les opérations doivent être démarrées à partir du code C#, mais ne doivent pas forcément être toutes du code C#. Mais je n'ai pas encore décidé. Selon vous, quelle serait la meilleure option pour faire ce que je veux faire?
(BTW, si je suis pas clair, laissez-moi savoir et je vais essayer de mettre à jour la question avec plus d'informations.)
Sans avoir étudié à fond, j'aime votre suggestion le plus sur les 3 que j'ai vu jusqu'ici. Je ferai des recherches et des expériences demain, et je marquerai la réponse qui m'a été la plus utile. –
Après avoir été dérouté, je me suis maintenant débrouillé pour ça. SqlBulkCopy a bien fonctionné pour moi. J'interroge la base de données pour toutes les tables qu'il contient, puis pour chaque table, j'interroge les colonnes, puis je génère une instruction Select qui sélectionne toutes les colonnes de la table. Je crée ensuite un SqlDataReader que je donne à l'objet SqlBulkCopy, et voilà! Je l'utilise pour faire une copie exacte des données dans la base de données vers une autre base de données avec les mêmes tables et schémas. J'utilise le SqlBulkCopyOptions.KeepIdentity pour m'assurer que mes relations FK restent valides. Donc merci @PaulG pour avoir suggéré la classe SqlBulkCopy. =) –