IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Accès aux données Discussion :

Modifie un schema de base sql2005 en c#


Sujet :

Accès aux données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Par défaut Modifie un schema de base sql2005 en c#
    Bonjour
    Je cherche à modifier le schéma d'un base en c#.
    La procédure est la suivante, je charge dans mon application un fichier sql généré par poweramc.
    Je le decoupe pour isoler les instructions sql entre les mots go.
    Mon souci est qu'apparement l'object sqlcommand ne sait pas exécuter les scripts du genre
    if exists (select 1
    from sysobjects
    where id = object_id('list_anomalie')
    and type = 'P')
    drop procedure list_anomalie
    Que ce soit avec ExecuteNonQuery ou ExecuteReader().
    Il y a-t-il une autre commande sql en C#?
    Linq me permettrait-il de modifier le schèma de la base ?

  2. #2
    Membre éprouvé
    Avatar de _skip
    Homme Profil pro
    Développeur d'applications
    Inscrit en
    Novembre 2005
    Messages
    2 898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur d'applications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 898
    Par défaut
    Bon, faire a la pogne en séparant soi-même les GO c'est pas top.
    Si tu veux y aller par là, une solution qui marche est de créer dynamiquement une procédure stockée contenant ton code et de l'exécuter et aussitot la dropper.

    Une autre c'est d'utiliser OSQL depuis le shell... Perso je n'aime pas.

    La meilleure manière de faire si elle te convient, c'est d'utiliser les SQL Server Management Objects (SMO)
    Voir ici : http://msdn2.microsoft.com/en-gb/library/ms162169.aspx

    Tu peux balancer le script tel quel avec les GO et le reste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    using System;
    using System.IO;
    using System.Data.SqlClient;
    using System.Collections.Generic;
     
    //Microsoft.SqlServer.Smo.dll
    using Microsoft.SqlServer.Management.Smo;
    //Microsoft.SqlServer.ConnectionInfo.dll
    using Microsoft.SqlServer.Management.Common;
     
    public class RunAllSqlSriptsInDirectory
    {
        public static void Main()
        {
            string scriptDirectory = "c:\\temp\\sqltest\\";
            string sqlConnectionString = "Integrated Security=SSPI;" + 
                "Persist Security Info=True;Initial Catalog=Northwind;Data Source=(local)";
            DirectoryInfo di = new DirectoryInfo(scriptDirectory);
            FileInfo[] rgFiles = di.GetFiles("*.sql");
            foreach (FileInfo fi in rgFiles)
            {
                FileInfo fileInfo = new FileInfo(fi.FullName);
                string script = fileInfo.OpenText().ReadToEnd();
                SqlConnection connection = new SqlConnection(sqlConnectionString);
                Server server = new Server(new ServerConnection(connection));
                server.ConnectionContext.ExecuteNonQuery(script);
            }
        }
    }

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6
    Par défaut
    Merci bien, je vais explorer la solution des SMO ,c'est celle qui semble la plus propre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réupération schema de base données
    Par poosh dans le forum Oracle
    Réponses: 3
    Dernier message: 05/11/2007, 09h08
  2. Réponses: 7
    Dernier message: 26/03/2007, 10h40
  3. Réponses: 3
    Dernier message: 23/11/2006, 00h29
  4. Schemas de bases de données
    Par seb_cba dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 18/10/2006, 12h32
  5. Schema de base
    Par gromez dans le forum PostgreSQL
    Réponses: 7
    Dernier message: 27/04/2004, 15h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo