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

Administration MySQL Discussion :

Changer de dossier de base de donnée à la volée


Sujet :

Administration MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 21
    Points : 14
    Points
    14
    Par défaut Changer de dossier de base de donnée à la volée
    Bonjour,

    Voici mon problème :

    J'ai 2 dossiers contenant chacun une base de donnée, et je veux pouvoir utiliser l'une puis l'autre dans mon application. Au démarrage de mon application, je n'ai aucune idée de où sont ces bases de données.
    A savoir, le schéma de ces bases sont strictement identiques, ainsi, je retrouve exactement la même base avec les mêmes tables.

    L'unique moyen que j'ai trouvé, pour passer d'une base à l'autre, est d'éteindre le daemon mysqld qui pointait sur la première base, puis de le redémarrer en le faisant pointer sur la deuxième base.

    Existe-t-il un autre moyen de faire cela ?

    Merci.

    PS: Je travaille sur une application Java et je réalise toutes ces actions par des accès système de type `Runtime.getRuntime().exec(MY_CMD).
    Une fois que ma base est démarrer j'utilise hibernate.
    A priori au démarrage de l'application je ne connait pas le nombre exact de base, ni leur chemin précis, je ne peux donc pas l'indique dans un fichier de configuration.

    Pour info, voici mon code pour switcher de base :

    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
     
        		new Thread(new Task<T>() {
    			@Override
    			protected T call() throws Exception {
     
    				// Close the previous database
    				if (isDaemonRunning()) {
    					close();
    				}
     
    				// try to open the new one
    				if (!open()) {
    					notifyConnectedStatus(false);
    					return null;
    				}
     
    				// create the hibernate session object
    				_session = HibernateUtil.getSessionFactory().openSession();
     
    				notifyConnectedStatus(true);
     
    				// no return is waiting, then return null
    				return null;
    			}
     
    		}).start();
    Voici les méthodes appelées :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    	private boolean open() {
    		int exitVal = 0;
    		try {
    			Process p = Runtime.getRuntime().exec(getRunDaemonCmd());
    			p.waitFor(1, TimeUnit.SECONDS);
    			if (p.isAlive()) {
    				return true;
    			}
    			exitVal = p.exitValue();
    		} catch (Exception e) {
    			_logger.log(Level.SEVERE, e.getMessage(), e);
    			return false;
    		}
    		return (0 == exitVal);
    	}
     
    	private void close() {
    		do {
    			try {
    				if (null != _session) {
    					_session.close();
    					_session = null;
    				}
     
    				Process p = Runtime.getRuntime().exec(SHUTDOWN_CMD);
    				p.waitFor();
    			} catch (Exception e) {
    				_logger.log(Level.SEVERE, e.getMessage(), e);
    				return;
    			}
    		} while (isDaemonRunning());
    		_connected = false;
    	}
     
     
    	private String[] getRunDaemonCmd() {
    		return new String[] { MYSQLD, INI_FILE_PARAM + _myIniFile, DATADIR_PARAM + _databasePath };
    	}
     
    	private boolean isDaemonRunning() {
    		int exitVal = 0;
    		try {
    			Process p = Runtime.getRuntime().exec(PING_CMD);
    			p.waitFor();
    			exitVal = p.exitValue();
    		} catch (Exception e) {
    			_logger.log(Level.SEVERE, e.getMessage(), e);
    		}
    		return (0 == exitVal);
    	}
    Et ici les constantes :

    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
     
    	private static final String MYSQLD = "mysqld";
    	private static final String INI_FILE_PARAM = "--defaults-file=";
    	private static final String DATADIR_PARAM = "--datadir=";
     
    	private static final String MYSQLADMIN = "mysqladmin";
     
    	private static final String USER_PARAM = "-u";
    	private static final String PASSWORD_PARAM = "-p";
    	private static final String SHUTDOWN = "shutdown";
     
    	private static final String PING = "ping";
     
    	private static final String[] PING_CMD = new String[] { MYSQLADMIN, PING };
     
    	private static final String[] SHUTDOWN_CMD = new String[] { MYSQLADMIN, USER_PARAM + DatabaseSettings.getUser(),
    			PASSWORD_PARAM + DatabaseSettings.getPassword(), SHUTDOWN };
     
    	private String _myIniFile = DatabaseSettings.getDefaultIniFile();
    PS2: Toute ressemblance avec le post suivant switching-database-connection-in-mysql est tout à fait fortuite


    Merci de votre compréhension

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut MonkeyJLuffy.

    Citation Envoyé par MonkeyJLuffy
    Au démarrage de mon application, je n'ai aucune idée de où sont ces bases de données.
    Je ne comprends pas le sens de votre phrase.
    Pourquoi avez-vous besoin de connaitre l'emplacement exacte de vos bases de données ?
    Quand je me connecte à une base de données, tout ce dont j'ai besoin, c'est de connaitre :
    --> le compte user sous mysql
    --> le mot de passe sous mysql
    --> l'hôte (si vous êtes en local, c'est "localhost" ou "127.0.0.1", sinon c'est un nom de domaine).
    --> le nom de la base de données
    --> le port s'il est différent de 3306.

    Voici comme déclarer l'accès en php :
    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
    <?php
    /*-----------------------------------------------------*/
    /* Informations pour la connexion à la base de données */
    /*-----------------------------------------------------*/
     
    $nom_du_serveur  = "mysql:host=localhost;dbname=test";
    $nom_utilisateur = "test";
    $mot_de_passe    = "test";
     
    $options         = array(
    	PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES latin1",
    	PDO::ATTR_CASE               => PDO::CASE_LOWER,
    	PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    	PDO::ATTR_PERSISTENT         => false
    );
     
    /*----------------------*/
    /* Connexion au Serveur */
    /*----------------------*/
     
    try {
    	$link = new PDO($nom_du_serveur, $nom_utilisateur, $mot_de_passe, $options);
    }
    catch (Exception $e)
    {
    	echo "Connection à MySql impossible : ", $e->getMessage();
    	die();
    }
    ?>
    Autrement dit, vous devez passer par le serveur MySql pour accéder à vos bases de données.
    Cela me parait tout à fait normal que vous ignorez l'emplacement physique de vos bases.
    Il est même fort probable que vous n'êtes pas autorisé à accéder directement à ce répertoire pour des questions de sécurité.

    Citation Envoyé par MonkeyJLuffy
    L'unique moyen que j'ai trouvé, pour passer d'une base à l'autre, est d'éteindre le daemon mysqld qui pointait sur la première base, puis de le redémarrer en le faisant pointer sur la deuxième base.
    Je comprends encore moins ce que vous essayez de faire ! Mais à quoi sert ce genre de bidouillage pour vous connecter à une base de données ?
    Pour vous connecter à une base de données, vous devez en premier ouvrir la connexion et quand vous avez terminé, en seconde vous fermez votre connexion.
    Si vous avez besoin ensuite, de vous connecter à une autre base de données, vous devez l'ouvrir, puis quand vous avez terminé vos traitements, vous la fermez.

    Citation Envoyé par MonkeyJLuffy
    PS: Je travaille sur une application Java
    Je ne connnais pas Java, il me sera impossible de vous aider.
    Le mieux est de vous adresser au forum developpez, spécialisé en java pour vous aider dans votre démarche.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 21
    Points : 14
    Points
    14
    Par défaut Eclairsissements...
    Bonjour,


    Je vais tacher d'expliquer un peu mieux mon problème :


    • Mon application gère des 'Missions', représentées par un dossier contenant une pléthore de sous-dossier dont un, correspondant a une base de donnée.
    • Ces 'Missions' sont copiée sur un disque amovible qui est ensuite mis sur un dispositif qui, tout au long de sa mission, va enregistrer des données dans la base de donnée.
    • A la fin de la mission, nous devons faire un rapport de mission en accédant à cette base, après l'avoir recopiée depuis le disque amovible.


    Donc pour résumer, mon application ne sais pas combien j'ai de bdd à priori, ni a posteriori, je ne doit avoir, qu'un seul et unique bdd démarrée en même temps car un logiciel externe accède également à cette bdd.

    Toutes les bdd respecte le même schéma et ont le même nom et les même table, au vu du contexte expliqué plus haut.



    Ma question n'est pas de savoir si je peux avoir deux base de données de deux répertoires différents démarrées en même temps, et je sais que cela est possible, MAIS, de savoir s'il y a un meilleur moyen pour changer de répertoire de BDD a chaud, et si possible sans tuer le daemon.



    Merci de bien prendre en compte mon besoin et ne pas rester dans un cadre figé d'utilisation de bdd standard client serveur, qui n'est pas du tout mon cas.

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut MonkeyJLuffy.

    Avec vos explications, c'est un peu plus clair.

    La solution que je vous propose est assez simple à mettre en oeuvre sous windows.
    Le principe reste le même sous Linux, sauf que je ne connais pas l'équivalent des liens symboliques.

    La solution windows va se faire de la façon suivante :

    1) puisqu'il s'agit d'un disque amovible, je le branche sur la prise usb de mon ordinateur.
    Windows va attribuer une lettre qui sera par exemple "M:\"

    Cette phase sous linux, je crois, se nommer monter un disque :
    --> http://www.linux-france.org/article/memo/node139.html

    2) je vais créer un lien symbolique entre ce répertoire "M:\" qui contient la base de données et le répertoire "c:\wamp\bin\mysql\mysql5.6.35\data\".
    Par simplification, je nomme ce répertoire "\data".

    Sous windows, c'est la commande "mklink" que je dois taper à l'invite de commande :
    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
    Microsoft Windows [version 10.0.14393]
    (c) 2016 Microsoft Corporation. Tous droits réservés.
     
    C:\>mklink
    Crée un lien symbolique.
     
    MKLINK [[/D] | [/H] | [/J]] Lien Cible
     
            /D      Crée un lien symbolique vers un répertoire. Par défaut,
                    il s'agit d'un lien symbolique vers un fichier.
            /H      Crée un lien physique à la place d'un lien symbolique.
            /J      Crée une jonction de répertoires.
            Lien    Spécifie le nom du nouveau lien symbolique.
            Cible   Spécifie le chemin d'accès (relatif ou absolu) auquel
                    le nouveau lien fait référence.
     
    C:\>
    J'ai trouvé la documentation sur le lien symbolique sous linux :
    --> http://www.linux-france.org/article/...man1/ln-1.html

    Je fais la jonction entre le répertoire "M:\" et un sous-répertoire dans "\data" et qui portera le nom de votre base de données.
    Admettons que le répertoire se nomme "\base" et l'on obtiendra alors "\data\base".

    Ce que je dis est en conformité avec l'environnement MySql sous Windows.
    Autrement dit, quand j'ai une base de données de nom "base", il y a un répertoire de ce nom dans "\data".
    Selon le moteur vous aurez des fichiers ".frm" & ".ibd" (InnoDB) ou bien ".myd" & ".myi" (MyIsam).
    C'est l'organisation type d'une base de données sous MySql.

    3) il vous suffit alors d'ouvrir votre base de données, comme si votre serveur MySql était dans une configuration standard.
    Après la manipulation, qui je le suppose consiste à recopier le contenu de votre base depuis le disque amovible, vous devez fermer votre connexion à MySql.
    Puis, refaire la même manipulation, qui consiste à :
    3-a) supprimer la jonction.
    3-b) éjecter votre disque amovible.
    3-c) monter le disque amovible suivant.
    3-d) recréer le jonction.

    C'est selon moi, le plus simple à faire, puisque vous conservez l'architecture d'une base de données standard, mais vous changez les fichiers par une jonction vers votre disque amovible.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    Merci du temps consacré pour écrire votre réponse, mais cela ne répond toujours pas à ma question et mon problème.

    Nous n’accédons pas au disque amovible, nous copions son contenu sur un disque local, nous avons donc l’architecture de dossier suivante :
    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
     
    MISSIONS
      |--Mission_1
      |     |--Dir_1
      |     |--Dir_2
      |     |--MYSQL
      |--Mission_2
      |     |--Dir_1
      |     |--Dir_2
      |     |--MYSQL
      |--Mission_3
      |     |--Dir_1
      |     |--Dir_2
      |     |--MYSQL
      |--Mission_4
      |     |--Dir_1
      |     |--Dir_2
      |     |--MYSQL
    Lors de l'utilisation de l'application, on sélectionne une mission parmi la liste proposée, puis l'on connecte la base correspondante pour générer les rapports.
    On ne connait pas au démarrage de l’application le nombre de base, ni à fortiori tous les chemins vers ces base, qui plus est l'on peux supprimer et créer de nouvelle mission à loisir, qui ajoute autant de "switch" sur les BDD.

    Suis-je plus clair ?

  6. #6
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut MonkeyJLuffy.

    Vous n'avez fait que survoler ma solution, qui pourtant correspond à ce que vous demandez !

    Citation Envoyé par MonkeyJLuffy
    J'ai 2 dossiers contenant chacun une base de donnée, et je veux pouvoir utiliser l'une puis l'autre dans mon application.
    Donc à un instant donné, vous n'accédez qu'à une et une seule de vos bases de données.
    Peu importe où se trouve votre base de données, sur disque amovible ou dans un répertoire particulier, quelque part sur votre ordinateur.

    Citation Envoyé par MonkeyJLuffy
    Au démarrage de mon application, je n'ai aucune idée de où sont ces bases de données.
    Il faut bien à un moment donné que vous sachiez où se trouve ces bases de données, sinon je ne voie pas comment vous allez faire pour y accéder.

    Citation Envoyé par MonkeyJLuffy
    A savoir, le schéma de ces bases sont strictement identiques, ainsi, je retrouve exactement la même base avec les mêmes tables.
    Encore heureux que toutes vos bases de données ont la même organisation, sinon je ne voie pas comment vous pourriez faire si le nom de la base, de vos tables étaient différents à chaque fois.

    Citation Envoyé par MonkeyJLuffy
    L'unique moyen que j'ai trouvé, pour passer d'une base à l'autre, est d'éteindre le daemon mysqld qui pointait sur la première base, puis de le redémarrer en le faisant pointer sur la deuxième base.
    Il y a déjà une contradiction dans vos propos, puisque ci-dessus, vous dites ne pas savoir où se trouve vos bases, puis ensuite vous dites que vous "passez de l'une à l'autre" au travers d'un processus.
    Il faut bien à un instant donné que vous fassiez le lien entre l'emplacement de l'une de vos bases avec le serveur MySql.

    Citation Envoyé par MonkeyJLuffy
    Donc pour résumer, mon application ne sais pas combien j'ai de bdd à priori, ni a posteriori, je ne doit avoir, qu'un seul et unique bdd démarrée en même temps car un logiciel externe accède également à cette bdd.
    Peu importe l'emplacement de votre base de données.
    Vous avez par exemple, que toutes vos "missions" se trouvent sur le disque "missions".
    A partir de ce moment, il suffit de faire un balayage pour trouver l'emplacement exacte de votre base de données.
    Admettons que l'emplacement soit "missions/missions_3/mysql" (c'est issu de votre exemple).
    Dans le répertoire MySql vous avez vos deux fichiers qui sont suffixés par ".frm" & ".ibd" (moteur InnoDB) et ce pour chacune de vos tables.

    Ce que je vous ai indiqué précédemment, consiste à utiliser les liens symboliques.
    Avez-vous déjà utilisé les liens symboliques et savez-vous à quoi cela peut servir ?
    Je suppose que non. Et après, vous me dites que cela ne correspond pas à votre demande.

    Le rôle des liens symboliques est de rendre fixe un répertoire qui sera accédé par une application, sachant que ce même répertoire peut se trouver n'importe où sur votre ordinateur.

    Admettons que vous désirez accéder au répertoire de votre liste, qui est "missions/missions_3/mysql".
    Dans votre application, votre base de données est connu sous le nom, par exemple, "mission" (sans le 's').
    Si vous consultez sous phpmyadmin cette base, vous trouverez toutes vos tables sur lesquelles votre application va devoir accéder.

    Le lien symbolique consiste à créer une jonction sur votre ordinateur entre le répertoire "mission" de MySql et le répertoire "missions/missions_3/mysql".
    Quand vous accédez par mysql, celui-ci croit que votre base se trouve dans "mission", c'est-à-dire le répertoire qui normalement se trouve dans "/data" de mysql.
    Vous faites au travers de votre application ce qui doit être fait.

    Vous désirez ensuite changer de base de données, et bien, vous détruisez la jonction entre vos deux répertoires, et vous créez une nouvel jonction.
    Par exemple, jonction entre "mission" et "missions/missions_5/mysql".
    Et vous poursuivez vos manipulations comme si vous étiez toujours sur la même base de données, alors que ce n'est pas le cas.

    Il n'est nul besoin de détruire votre processus, ou de faire une manipulation dangereuse, car tout ce que vous devez faire, c'est créer une jonction et rien que cela.
    Tout cela peut se faire au travers d'un script perl, korn_shell, java ou je ne sais quoi d'autre, qui va :
    --> afficher la liste de vos répertoires de l'arborescence que vous m'avez donné.
    --> de sélectionner le numéro de la mission que vous désirez traiter.
    --> et enfin de faire la jonction. Le reste ne change pas car vous accédez à MySql d'une manière standard.

    Pour bien comprendre, ce n'est pas mysql qui doit s'adapter à votre environnement, mais c'est votre environnement qui doit s'adapter aux exigences de MySql.
    Ce que vous demandez à faire, c'est le rôle du lien symbolique !

    Maintenant si cette solution ne vous convient pas, je n'ai rien d'autre à vous fournir.
    P.S.: j'utilise cette technique depuis que j'ai basculé sous windows 7 et je peux vous assurer que cela fonctionne très bien.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Merci pour votre réponse.

    Effectivement, je n'avais pas forcément bien compris la finalité au départ, mais avec vos explications complémentaires, il semblerai que cela corresponde à mes besoins.

    Nous réaliserons des tests pour implémenter cette solution, je reviendrai vers vous à ce moment là pour d'autres question ou fournir un bout de code correspondant à la solution retenue.

    Cordialement,

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 21
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Et voici le jour venu de l'implémentation de cette solution.

    J'ai bien peur que cela ne fonctionne pas chez moi.

    Un petit résumé de l'implémentation et du résultat qui n'est pas celui escompté

    Au chargement de notre application, nous créons un lien symbolique "Database" dans le dossier d'un basse de donnée dans le dossier "TEMPLATE\MySQL". Ce dossier est là, uniquement pour initier le process.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mklink /J d:\Data\PREPARATION\TEMPLATE\MySQL\Database d:\Data\PREPARATION\TEMPLATE\MySQL\data
    Ceci étant fait, le service mysqld est donc démarré normalement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqld --defaults-file=C:\MySQL-Tools\SQL\my.ini --datadir=d:\Data\PREPARATION\TEMPLATE\MySQL\Database
    Jusqu'ici tout va bien, la base est utilisable, aucun problème, j'ai pu ajouter une entré et consulter mes tables.

    Nous poursuivons la navigation dans l'application, et "ouvrons une mission". C'est à dire, que nous désirons lire la base de donnée contenue dans le dossier de cette dite mission, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d:\Data\PREPARATION\MISSIONS\MissionTest\Mysql\data
    Comme indiqué, je détruit le précedent lien symbolique, pour le remplacer par celui ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mklink /J d:\Data\PREPARATION\TEMPLATE\MySQL\Database d:\Data\PREPARATION\MISSIONS\MissionTest\Mysql\data
    Nous avons bien dans le dossier "TEMPLATE\MySQL" un sous dossier "Database" qui correspond bien au dossier de la base de la mission sélectionnée.

    Cependant, c'est là que les problèmes arrivent, car sans redémarrer le service mysqld, il ne m'est pas possible de lire les données de cette nouvelle base.

    En testant par la console, elle me renvoi inlassablement, les données de la base template.

    J'ai eu beau tester le reset de cache, et mettre diverse option qui me semblait aller dans le bon sens, mais rien n'y fait.

    Je fait de nouveau appel à vous, car là je me retrouve dans une impasse, et je suis obligé de revenir à mon ancien mode de fonctionnement. Celui-ci me semblai beaucoup plus subtil et correspondait bien à mes besoins

    N’hésitez pas à me demander des informations plus précise sur notre configuration, si cela peut vous aider.

    Merci de votre aide

  9. #9
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 379
    Points : 19 060
    Points
    19 060
    Par défaut
    Salut MonkeyJLuffy.

    Je fais le test afin de vous donner toutes les étapes du basculement entre deux bases de données.

    1) je suis dans un environnement standard de MySql.
    J'ai dans "my.ini" le chemin vers le répertoire "/data" :
    --> datadir = f:/Wamp/bin/mysql/mysql5.7.17/data

    2) dans ce répertoire "/data", je vais créer deux bases de données : "base_one" et "base-two".
    Dans ces deux bases de données, il y aura une même table de nom "test" de même structure, mais avec un jeu d'essai différent.

    3) dans un premier temps, je vais recopier les bases de données sous les noms "c:\baseone" et "c:\basetwo".
    Je tiens à préciser que la création et la manipulation se fait toujours par le même serveur MySql.

    4) dans un second temps, avec de créer le lien symbolique, je détruis le répertoire "base_one" ou "base_two".
    Puis ensuite, je crée le lien symbolique vers l'une de ces deux bases et interroger la table.

    Pour que cette manipulation fonctionne, je suis obligé d'arrêter le serveur WampMySqld et après la manipulation de le redémarrer.
    Cela va se faire dans le script batch windows qui sera lancé en mode administrateur.

    5) l'important est de conserver le descriptif de chaque base dans le serveur MySql sinon cela ne fonctionne pas.
    Dans ce test, je ne fais que lancer les scripts batch windows sans toucher à quoi que ce soit d'autre.

    6) ci-après; j'indique dans l'ordre les scripts et leur exécution.

    J'espère que cela répond à votre question !

    a) le script batch windows de création de la base "one". Son nom est "01.Base_One.bat".
    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
    @echo off
     
    setlocal enableDelayedExpansion
     
    chcp 1252 > nul
     
    set PATH=.;%WAMPSERVER%\bin\mysql\%MYSQL%\bin\;%PATH%
     
    SET FIC=%~nx0
    SET FIC=%FIC:bat=sql%
     
    @echo.
    mysql < %FIC%  --verbose  --force
    @echo.
    pause
    exit
    b) le script sql de la création de la base "one". Son nom est "01.Base_One.sql".
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    SET AUTOCOMMIT = 0;
    START TRANSACTION;
     
    -- ==========================
    -- Base de Données `base_one`
    -- ==========================
     
    DROP DATABASE IF EXISTS `base_one`;
     
    CREATE DATABASE `base_one`
    	DEFAULT CHARACTER SET `latin1`
    	DEFAULT COLLATE       `latin1_general_ci`;
     
    use `base_one`;
     
    -- =====================
    -- Création table `test`
    -- =====================
     
    DROP TABLE IF EXISTS `test`;
     
    CREATE TABLE `test`
    ( `id`         integer unsigned NOT NULL auto_increment primary key,
      `libelle`    varchar(255)     NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED;
     
    -- =====================
    -- Insertion dans `test`
    -- =====================
     
    insert into `test` (`libelle`) values
      ('rouge'),('vert'),('jaune'),('bleu');
     
    -- ================
    -- Vidage de `test`
    -- ================
     
    select * from `test`;
     
    -- ===
    -- Fin
    -- ===
     
    COMMIT;
    SET AUTOCOMMIT = 1;
    exit
    c) son execution :
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base_one`
    --------------
     
    --------------
    CREATE DATABASE `base_one`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `test`
    --------------
     
    --------------
    CREATE TABLE `test`
    ( `id`         integer unsigned NOT NULL auto_increment primary key,
      `libelle`    varchar(255)     NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `test` (`libelle`) values
      ('rouge'),('vert'),('jaune'),('bleu')
    --------------
     
    --------------
    select * from `test`
    --------------
     
    +----+---------+
    | id | libelle |
    +----+---------+
    |  1 | rouge   |
    |  2 | vert    |
    |  3 | jaune   |
    |  4 | bleu    |
    +----+---------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
    Appuyez sur une touche pour continuer...
    Le jeu d'essai conserne les couleurs.

    d) le script batch windows de la recopie de la base "One". Son nom est "02.Creation_Base_One.bat"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    @echo off
     
    REM =============================
    REM Recopie de la base de données
    REM =============================
     
    if exist C:\baseone  (rmdir /S /Q C:\baseone)
     
    mkdir C:\baseone
     
    xcopy /S /I  F:\wamp\bin\mysql\mysql5.7.17\data\base_one  C:\baseone
     
    pause
    exit
    e) son exécution.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    F:\wamp\bin\mysql\mysql5.7.17\data\base_one\db.opt
    F:\wamp\bin\mysql\mysql5.7.17\data\base_one\test.frm
    F:\wamp\bin\mysql\mysql5.7.17\data\base_one\test.ibd
    3 fichier(s) copié(s)
    Appuyez sur une touche pour continuer...
    f) le script batch windows de création de la base "two". Son nom est "03.Base_Two.bat".
    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
    @echo off
     
    setlocal enableDelayedExpansion
     
    chcp 1252 > nul
     
    set PATH=.;%WAMPSERVER%\bin\mysql\%MYSQL%\bin\;%PATH%
     
    SET FIC=%~nx0
    SET FIC=%FIC:bat=sql%
     
    @echo.
    mysql < %FIC%  --verbose  --force
    @echo.
    pause
    exit
    C'est exactement le même script que le paragraphe a). Il n'y a que le fichier sql qui change.

    g) le script sql de la création de la base "two". Son nom est "03.Base_Two.sql".
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    SET AUTOCOMMIT = 0;
    START TRANSACTION;
     
    -- ==========================
    -- Base de Données `base_two`
    -- ==========================
     
    DROP DATABASE IF EXISTS `base_two`;
     
    CREATE DATABASE `base_two`
    	DEFAULT CHARACTER SET `latin1`
    	DEFAULT COLLATE       `latin1_general_ci`;
     
    use `base_two`;
     
    -- =====================
    -- Création table `test`
    -- =====================
     
    DROP TABLE IF EXISTS `test`;
     
    CREATE TABLE `test`
    ( `id`         integer unsigned NOT NULL auto_increment primary key,
      `libelle`    varchar(255)     NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED;
     
    -- =====================
    -- Insertion dans `test`
    -- =====================
     
    insert into `test` (`libelle`) values
      ('un'),('deux'),('trois'),('quatre');
     
    -- ================
    -- Vidage de `test`
    -- ================
     
    select * from `test`;
     
    -- ===
    -- Fin
    -- ===
     
    COMMIT;
    SET AUTOCOMMIT = 1;
    exit
    h) son exécution.
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base_two`
    --------------
     
    --------------
    CREATE DATABASE `base_two`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `test`
    --------------
     
    --------------
    CREATE TABLE `test`
    ( `id`         integer unsigned NOT NULL auto_increment primary key,
      `libelle`    varchar(255)     NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    insert into `test` (`libelle`) values
      ('un'),('deux'),('trois'),('quatre')
    --------------
     
    --------------
    select * from `test`
    --------------
     
    +----+---------+
    | id | libelle |
    +----+---------+
    |  1 | un      |
    |  2 | deux    |
    |  3 | trois   |
    |  4 | quatre  |
    +----+---------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 1
    --------------
     
    Appuyez sur une touche pour continuer...
    Le jeu d'essai conserne les nombres.

    i) le script batch windows de la recopie de la base "Two". Son nom est "04.Creation_Base_Two.bat"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    @echo off
     
    REM =============================
    REM Recopie de la base de données
    REM =============================
     
    if exist C:\basetwo  (rmdir /S /Q C:\basetwo)
     
    mkdir C:\basetwo
     
    xcopy /S /I  F:\wamp\bin\mysql\mysql5.7.17\data\base_two  C:\basetwo
     
    pause
    exit
    j) son exécution.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    F:\wamp\bin\mysql\mysql5.7.17\data\base_two\db.opt
    F:\wamp\bin\mysql\mysql5.7.17\data\base_two\test.frm
    F:\wamp\bin\mysql\mysql5.7.17\data\base_two\test.ibd
    3 fichier(s) copié(s)
    Appuyez sur une touche pour continuer...
    k) Nous allons créer le lien symbolique depuis la sauvegarde de la base "One".
    Voici le script batch window. Son nom est "05.Basculer_Base_One.bat".
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    @echo off
     
    chcp 1252 > nul
     
    setlocal enableDelayedExpansion
     
    set PATH=%WAMPSERVER%\bin\mysql\%MYSQL%\bin\;%PATH%
     
    REM ===========================
    REM Arrêt du serveur WampMysqld
    REM ===========================
     
    sc stop wampmysqld
     
    :stopbcle
     
    timeout /t 1 /nobreak > nul
     
    sc query wampmysqld | find "STATE" | find "STOPPED" > nul
    if errorlevel 1 GOTO stopbcle
     
    @echo.
    @echo 'WampMySqld' est arrêté !
    @echo.
     
    REM ==============================
    REM Création du lien vers Base_One
    REM ==============================
     
    set CHEMIN=F:\Wamp\bin\mysql\mysql5.7.17\data
     
    if exist %CHEMIN%\base_one  (rmdir /S /Q  %CHEMIN%\base_one)
     
    mklink /J %CHEMIN%\base_one  C:\baseone
     
    REM ===============================
    REM Démarrage du serveur WampMysqld
    REM ===============================
     
    sc start wampmysqld
     
    :startbcle
     
    timeout /t 1 /nobreak > nul
     
    sc query wampmysqld | find "STATE" | find "RUNNING" > nul
    if errorlevel 1 GOTO startbcle
     
    @echo.
    @echo 'WampMySqld' est lancé !
    @echo.
     
    REM =========================
    REM Vidage de la table 'test'
    REM =========================
     
    mysql <E:\22.MySql\31.Lien_symbolique\06.vidage_one.sql  --verbose  --force
     
    pause
    exit
    l) voici le script sql permettant d'interroger la table "test". Son nom "06.Vidage_One.sql".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    use `base_one`;
     
    -- ================
    -- Vidage de `test`
    -- ================
     
    select * from `test`;
     
    exit
    m) et voici son execution. Je l'ai lancé en mode administration, sinon cela ne fonctionne pas.
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    SERVICE_NAME: wampmysqld
            TYPE               : 10  WIN32_OWN_PROCESS
            STATE              : 3  STOP_PENDING
                                    (STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN)
            WIN32_EXIT_CODE    : 0  (0x0)
            SERVICE_EXIT_CODE  : 0  (0x0)
            CHECKPOINT         : 0x1
            WAIT_HINT          : 0x5265c00
     
    'WampMySqld' est arrêté
     
    Jonction créée pour F:\Wamp\bin\mysql\mysql5.7.17\data\base_one <<===>> C:\baseone
     
    SERVICE_NAME: wampmysqld
            TYPE               : 10  WIN32_OWN_PROCESS
            STATE              : 2  START_PENDING
                                    (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
            WIN32_EXIT_CODE    : 0  (0x0)
            SERVICE_EXIT_CODE  : 0  (0x0)
            CHECKPOINT         : 0x3
            WAIT_HINT          : 0x3a98
            PID                : 6488
            FLAGS              :
     
    'WampMySqld' est lancé
     
    --------------
    select * from `test`
    --------------
     
    +----+---------+
    | id | libelle |
    +----+---------+
    |  1 | rouge   |
    |  2 | vert    |
    |  3 | jaune   |
    |  4 | bleu    |
    +----+---------+
    Appuyez sur une touche pour continuer...
    Le jeu d'essai est conforme à la base "one".

    n) Nous allons créer le lien symbolique depuis la sauvegarde de la base "Two".
    Voici le script batch window. Son nom est "07.Basculer_Base_Two.bat".
    A peu de chose près, c'est le même script que celui du paragraphe k).
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    @echo off
     
    chcp 1252 > nul
     
    setlocal enableDelayedExpansion
     
    set PATH=%WAMPSERVER%\bin\mysql\%MYSQL%\bin\;%PATH%
     
    REM ===========================
    REM Arrêt du serveur WampMysqld
    REM ===========================
     
    sc stop wampmysqld
     
    :stopbcle
     
    timeout /t 1 /nobreak > nul
     
    sc query wampmysqld | find "STATE" | find "STOPPED" > nul
    if errorlevel 1 GOTO stopbcle
     
    @echo.
    @echo 'WampMySqld' est arrêté !
    @echo.
     
    REM ==============================
    REM Création du lien vers Base_Two
    REM ==============================
     
    set CHEMIN=F:\Wamp\bin\mysql\mysql5.7.17\data
     
    if exist %CHEMIN%\base_two  (rmdir /S /Q  %CHEMIN%\base_two)
     
    mklink /J %CHEMIN%\base_two  C:\baseTwo
     
    REM ===============================
    REM Démarrage du serveur WampMysqld
    REM ===============================
     
    sc start wampmysqld
     
    :startbcle
     
    timeout /t 1 /nobreak > nul
     
    sc query wampmysqld | find "STATE" | find "RUNNING" > nul
    if errorlevel 1 GOTO startbcle
     
    @echo.
    @echo 'WampMySqld' est lancé !
    @echo.
     
    REM =========================
    REM Vidage de la table 'test'
    REM =========================
     
    mysql <E:\22.MySql\31.Lien_symbolique\08.Vidage_two.sql  --verbose  --force
     
    pause
    exit
    o) voici le script sql permettant d'interroger la table "test". Son nom "08.Vidage_Two.sql".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    use `base_two`;
     
    -- ================
    -- Vidage de `test`
    -- ================
     
    select * from `test`;
     
    exit
    p) et pour terminer, voici son exécution. Comme précédemment, il est exécuté en mode administrateur.
    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    SERVICE_NAME: wampmysqld
            TYPE               : 10  WIN32_OWN_PROCESS
            STATE              : 3  STOP_PENDING
                                    (STOPPABLE, PAUSABLE, ACCEPTS_SHUTDOWN)
            WIN32_EXIT_CODE    : 0  (0x0)
            SERVICE_EXIT_CODE  : 0  (0x0)
            CHECKPOINT         : 0x1
            WAIT_HINT          : 0x5265c00
     
    'WampMySqld' est arrêté
     
    Jonction créée pour F:\Wamp\bin\mysql\mysql5.7.17\data\base_two <<===>> C:\baseTwo
     
    SERVICE_NAME: wampmysqld
            TYPE               : 10  WIN32_OWN_PROCESS
            STATE              : 2  START_PENDING
                                    (NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
            WIN32_EXIT_CODE    : 0  (0x0)
            SERVICE_EXIT_CODE  : 0  (0x0)
            CHECKPOINT         : 0x0
            WAIT_HINT          : 0x7d0
            PID                : 10028
            FLAGS              :
     
    'WampMySqld' est lancé
     
    --------------
    select * from `test`
    --------------
     
    +----+---------+
    | id | libelle |
    +----+---------+
    |  1 | un      |
    |  2 | deux    |
    |  3 | trois   |
    |  4 | quatre  |
    +----+---------+
    Appuyez sur une touche pour continuer...
    On remarque cette fois-ci que le jeu d'essai porte sur les nombres.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. [MySQL] Creation bases de données à la volée dans PHP
    Par *.Har(d)t dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 20/10/2009, 10h17
  2. [AC-2003] Dossier de base de données par défaut non utilisé
    Par Fredo67 dans le forum Modélisation
    Réponses: 2
    Dernier message: 23/04/2009, 14h40
  3. [MOSS 2007] Changer le serveur de bases de données
    Par Max dans le forum SharePoint
    Réponses: 1
    Dernier message: 10/03/2009, 16h14
  4. comment changer un alias de base de donnée pour y acceder ?
    Par gsmdu62 dans le forum Bases de données
    Réponses: 5
    Dernier message: 02/05/2006, 09h52
  5. Comment changer le dbo d'une base de données?
    Par Immobilis dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 11/02/2006, 13h21

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