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

Développement SQL Server Discussion :

Créer une base de données en .NET


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 201
    Par défaut Créer une base de données en .NET
    Bonjour,

    J'ai actuellement une base de données sqlserver (avec table, vue et procédure stocké) dont j'ai généré le script de création
    En changeant le nom de la base de données dans le script, cela me crée bien une nouvelle base de données.

    Je voudrais utiliser ce script dans mon code asp .net pour pouvoir générer automatiquement de nouvelle base de données

    Comment puis je faire cela (avec ADO ?)
    Y a t-il une autre méthode pour dupliquer des bases à vide dans sql-server ?

    Merci pour vos retour
    Sylo

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 999
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 999
    Billets dans le blog
    6
    Par défaut
    Il suffit e commencer votre script SQL par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE MaBase; USE MaBase;
    tout le reste sera créé dans la base ainsi créée.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Depuis votre programme .NET il faudra soit :
    - créer un SqlCommand par bloc (entre deux GO)
    - lancer osql avec votre script en paramètre

    Sinon, pas de méthode à ma connaissance pour exécuter un script entier directement depuis .NET (ni ADO en règle générale).

  4. #4
    Membre très actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 218
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Depuis votre programme .NET il faudra soit :
    - créer un SqlCommand par bloc (entre deux GO)
    Attention : le GO n'est interprété que par le SSMS; il ne fait pas parti du DDL. (d'ailleurs le "GO" peut être redéfini en "C PARTI MON KIKI" ou en ce qu'on veut dans SSMS).

    Le séparateur entre commandes est le ";".

    Sinon, pas de méthode à ma connaissance pour exécuter un script entier directement depuis .NET (ni ADO en règle générale).
    Pourtant il me semble qu'on peut parfaitement envoyer un script à travers un SqlCommand unique si les commandes sont séparées par un ";" .

    La seuel vraie limitation concernant les SqlCommand et le DDL c'est que les paramètres ne sont pas supportés. Donc pas question de passer le nom de la base en param ou approchant.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 201
    Par défaut
    le

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE MaBase; USE MaBase;
    ne fonctionne pas
    Auriez vous la syntaxe exacte ?
    Merci
    Sylo

  6. #6
    Membre très actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 218
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    create database MyBase;
    use MyBase;

  7. #7
    Membre Expert Avatar de iberserk
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Novembre 2004
    Messages
    1 795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 795
    Par défaut
    Avec .net il faut utiliser SMO pour gérer les scripts contenant des GO...

    SMO sont les API utilisés par SSMS.

    http://www.codeproject.com/Articles/...our-SQL-Server

  8. #8
    Membre très actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 218
    Par défaut
    Citation Envoyé par iberserk Voir le message
    Avec .net il faut utiliser SMO pour gérer les scripts contenant des GO...
    Oui; pour ma part je ne les ai utilisé que très rarement (notamment une fois pour un cas "ultra tordu" : j'avais besoin de modifier dynamiquement les trigger générés automatiquement au moment de la construction du snapshot par la réplication fusion).

    Mais ici, il faut dire que c'est peut être un peu "overkill", dans la mesure où les SMO ne sont pas installés par défaut sur les stations de travail, même si SSMS est installé et sachant qu'une méthode en C# très courte permet de traiter les scripts par block.
    Un truc comme ça par exemple :

    Code C# : 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
    31
     
    	public static void ExecuteScript(string scriptText)
    		{
    			using (SqlConnection connection = new SqlConnection())
    			{
    				using (TextReader reader = new StringReader(scriptText))
    				{
    					StringBuilder scriptBlock = new StringBuilder();
    					bool endOfScript = false;
    					do
    					{
    						string line = reader.ReadLine();
    						endOfScript = line == null;
    						if (!endOfScript && string.Equals(line, "GO", StringComparison.InvariantCultureIgnoreCase) == false)
    						{
    							scriptBlock.AppendLine(line);
    						}
    						else if(scriptBlock.Length > 0)
    						{
    							using (SqlCommand command = connection.CreateCommand())
    							{
    								command.CommandText = scriptBlock.ToString();
    								command.CommandType = CommandType.Text;
    								command.ExecuteNonQuery();
    							}
    							scriptBlock.Clear();
    						}
    					} while (!endOfScript);
    				}
    			}
    		}

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 201
    Par défaut
    Bonjour,

    Merci pour vos retour
    Pour ma part, au final, je génère le script de création de la base puis je le nettoie (le début au moins)
    Ensuite, je split la chaine avec les GO et j'execute les instruction une à une
    Cela fonctionne.

    Le seul problème, c'est qu'à chaque modification de la structure de la bdd, il faut que je recrée le fichier.

    Mais je m'en contenterais
    Sylo

  10. #10
    Membre très actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 218
    Par défaut
    Citation Envoyé par olysmar2 Voir le message
    Le seul problème, c'est qu'à chaque modification de la structure de la bdd, il faut que je recrée le fichier.
    Là tu peux te faire un module avec les SMO pour générer le script.

  11. #11
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 201
    Par défaut
    Ok merci
    Je vais regarder cela
    Sylo

Discussions similaires

  1. créer une base de donnés dans vb.net
    Par belfafi dans le forum VB.NET
    Réponses: 1
    Dernier message: 27/11/2009, 08h58
  2. [C#.Net 2.0] Créer une base de donnée
    Par dorian833 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/07/2006, 23h38
  3. Réponses: 5
    Dernier message: 07/11/2005, 11h11
  4. Comment créer une base de donnée Access ?
    Par Soulama dans le forum Bases de données
    Réponses: 1
    Dernier message: 24/10/2005, 14h56
  5. créer une base de donnée à partir d'un script
    Par illegalsene dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/08/2005, 14h08

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