Création des tables SQL Server à partir des DataTable

Résolu
cs_bellak Messages postés 136 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 5 mai 2011 - 21 mai 2010 à 16:47
cs_bellak Messages postés 136 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 5 mai 2011 - 8 août 2010 à 01:50
Bonjour a tous ,

SVP , J'ai des DataTable que j les crée dynamiquement par code et je voudrais créer des tables base de données SQL Server, ce qui correspond au schéma de mon objet DataTable (ou bien DataSet).
mon probleme c'est que je voudrai savoir quel est façon la plus efficace pour créer mes tables BDD , suis-je obligé de construire et exécuter des commande CREATE TABLE (sachant que je dispose d'une cinquantaine de DataTable) ?
Merci!

2 réponses

PapyNormand Messages postés 27 Date d'inscription samedi 7 août 2010 Statut Membre Dernière intervention 16 janvier 2014 1
8 août 2010 à 01:12
Bonjour,

La solution la 1ère proposée est toujours d'exécuter une commande CREATE TABLE ( mais il faut créer dynamiquement cette commande ).
Il existe une autre méthode qui semble complètement ignorée en France : SMO
et pourtant elle risque d'être très utile puisque c'est la seule qui puisse être utilisée avec l'apparition de sqlps ( PowerShell for Sql Server ) dans SQL Server 2008 ( il remplacera sqlcmd dès la prochaine version de SQL Server ( celle suivante de SQL Server 2008 R8 )
SMO = SQL Server Management Objects
voir :
http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.table(v=SQL.100).aspx

Attention : la documentation SMO n'a jamais été traduite en français depuis l'apparition de SMO avec SQL Server 2005
Il est assez facile de définir les colonnes de la table à partir de la structure des DataColumns d'une DataTable ( les seuls possibles problèmes concernent la clé primaire qui n'a pas forcément été définie dans la DataTable et les index qui n'existent pas dans une DataTable )

Attention : SMO a évolué entre SQL Server 2005 et 2008, si bien que les références d'assemblées et les using (VC#) et les imports (VB) peuvent avoir changé

Bonne journée
3
cs_bellak Messages postés 136 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 5 mai 2011
8 août 2010 à 01:50
bonjour PapyNormand,
merci pour la reponse , justement j'ai utilisé les SMO et j'ai oublié de poster la reponse.
pour les indexes sur les datatables , on peut les definir :

DataColumn[] keys = new DataColumn[2];
keys[0] = table.Columns["ID"];
keys[1] = table.Columns["NAME"];

table.PrimaryKey = keys;

encore merci

Cordialement
3
Rejoignez-nous