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

VB.NET Discussion :

"Save As" a sqlserver Database (.mdf)


Sujet :

VB.NET

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2013
    Messages : 21
    Points : 18
    Points
    18
    Par défaut "Save As" a sqlserver Database (.mdf)
    Bonjour,

    J'ai une application avec une base de donnée déjà faite etc...
    Je voudrais savoir comment faire pour faire un "Save as" de cette base de données via mon application (via le code).

    En clair j'aimerai faire :

    - une copie de la base donnée existante (pour garder les schémas des tables et pour ne pas écraser l'ancienne base de données) (je ne sais pas le faire)
    - vider les records de toutes les tables (je sais le faire)
    - remplir les nouveaux records dans la nouvelle base de données copiée. (je sais le faire)
    - et avoir la possibilité de nommer et sauvegarder la bdd copiée dans un autre repertoire ( je ne sais pas le faire)

    J'ai chercher sur le net mais j'ai n'ai pas trouvé quelque chose de probant. Si vous avez une idée ?

    Je vous remercie d'avance.

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    si toute la DB est définie dans un seul fichier, ne serait-il pas plus simple de juste faire une copie de ce fichier ?
    Du coup ça te permettrait d'éluder les deux points que tu sembles ne pas savoir faire (copie du schéma et déplacement dans un autre folder).

    Je dis de suite que je connais pas particulièrement SQLServer.
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Je dis de suite que je connais pas particulièrement SQLServer.
    en effet, sql server verrouille les fichiers empechant la copie


    si c'est pour faire une copie :

    backup database nom_base to disk = 'x:\dossier\fichier.bak'
    restore database nouveau_nom from disk = 'x:\dossier\fichier.bak' with move 'nom_base' to 'x:\dossier\nouveau_nom.mdf', move 'nom_base_log' to 'x:\dossier\nouveau_nom.ldf'
    (puis delete le .bak)

    ca c'est par défaut, les noms et le nombre de fichiers logiques sont modifiables (en bleu ci dessus)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Pour ma culture perso : si on coupe le service on peut faire la copie dudit fichier, nop ?
    Plus je connais de langages, plus j'aime le C.

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    oui
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    Citation Envoyé par DotNetMatt Voir le message
    donc même si tu stoppes le service SQL Server, le verrou sera toujours présent.
    il me semble qu'on a déjà copié des fichiers en arretant le service sql server
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Hmm en effet Pol63 je viens de tester et ca fonctionne, je ne sais pas pourquoi j'étais persuadé du contraire
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  8. #8
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2013
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    en effet, sql server verrouille les fichiers empechant la copie


    si c'est pour faire une copie :

    backup database nom_base to disk = 'x:\dossier\fichier.bak'
    restore database nouveau_nom from disk = 'x:\dossier\fichier.bak' with move 'nom_base' to 'x:\dossier\nouveau_nom.mdf', move 'nom_base_log' to 'x:\dossier\nouveau_nom.ldf'
    (puis delete le .bak)

    ca c'est par défaut, les noms et le nombre de fichiers logiques sont modifiables (en bleu ci dessus)
    Merci pour vos réponses .

    Je ne sais pas comment coder la partie "restore" et "move", j'ai l'impression de me rapprocher de l'idée mais je bloque un peu là.

    voici mon code.

    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
     Public Sub Backup()
            Dim conn As SqlClient.SqlConnection
            Dim cmd As SqlClient.SqlCommand
            Dim BackupPath As String = "backupPathExample"
     
            Dim Path As String = My.Application.Info.DirectoryPath
     
            Dim localdb As String = "Data Source=(LocalDB)\v11.0;AttachDbFilename=" & Path & "\Data.mdf;Integrated Security=True;Connect Timeout=30"
            conn = New SqlConnection(localdb)
     
            Try
                conn.Open()
                cmd = New SqlCommand("BACKUP DATABASE [" + Application.StartupPath + "\Data.mdf] TO DISK = '" + BackupPath + "\DataBack.mdf'", conn)
                cmd.ExecuteNonQuery()
            Catch ex As Exception
                MsgBox(ex.Message)
            End Try
     
            conn.Close()
        End Sub

  9. #9
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Août 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2013
    Messages : 21
    Points : 18
    Points
    18
    Par défaut
    Je me demande si ce n'est pas plus judicieux d'utiliser une base Access ?

  10. #10
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 150
    Points : 25 066
    Points
    25 066
    Par défaut
    c'est vrai que c'est le genre de question qu'on se pose à la fin

    sinon "plus judicieux" on ne peut pas répondre à ta place sans infos, toi tu vois ce que tu veux faire ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

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

Discussions similaires

  1. Quote et double quote
    Par aktos dans le forum Langage
    Réponses: 8
    Dernier message: 05/01/2007, 20h55

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