Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

MSDE2000A - Detach master, msdb, tempdb et model (pour déplacer les fichiers)

5 réponses
Avatar
Glenn Gagné
Bonjour,

J'ai un petit problème. J'ai par erreur installé une instance de MSDE2000A
sur une partition trop petite pour sont utilisation et je dois déplacer les
fichiers sur une autre partition.

Pour les bases de données "utilisateur" j'ai pas de problème, ça fonctionne
super bien avec un detach et attach. Mais je suis incapable de déplacer les
base master, model, msdb et tempdb de la même manière.Lorsque je lance
l'exécution suivant avec OSQL:

EXEC sp_detech_db 'master' (ou model, msdb et tempdb)

J'obtiens le message d'erreur suivant:

Msg 7940, Niveau 16, État 1, Serveur PC\INSTANCE, Ligne 1
Impossible de détacher les bases de données systèm master, model, msdb et
tempdb.

--------------------------------------------

Je comprends que le serveur ne peut pas se départir des ses sources pour
fonctionner, alors il doit exister une méthode... En cherchant j'ai trouvé
50% de solution. L'article suivant:

http://support.microsoft.com/kb/224071

Cet article traite du même problème pour SQL 7.0, 2000 et 2005. La solution
pour détacher les bases systèmes est de temporairement ajouter un paramètre
de démarrage différent au Serveur SQL: (-T3608) pour msdb,
(-dD:\SQL\master.mdf) pour master, etc....

Le problème, c'est que l'explication pour modifier ces paramètres n'est
qu'avec la "SQL Server Entreprise Manager" de SQL 2000. Et ici, je n'ai que
"OSQL en ligne de commande" et "SQL Server Management Studio" de SQL 2005.

Avec OSQL je ne connais pas du tout la commande T-SQL pour faire cela (s'il
en existe une) et avec SQL Server Management Studio je n'ai pas ces même
options (qui évidemment sont adaptées pour SQL 2005).

------------------------------------------------

Si vous possédez la solution en script pour faire un detach et attahc
complet des bases systèmes de MSDE j'aimerais bien savoir.

Merci beaucoup

Glenn Gagné
Technicien MCP/TI

5 réponses

Avatar
Rudi Bruchez
Glenn Gagné a écrit:

EXEC sp_detech_db 'master' (ou model, msdb et tempdb)



Bonjour,

Il est inutile de copier tempdb.
As-tu des choses à récupérer dans Master ? des logins par exemple ? Ne
peux-tu les recréer ?
As-tu des choses utiles dans model ?
Pour msdb, comme pour les autres, tu peux faire par backup restore.

--
Rudi Bruchez
Consultant indépendant SQL Server
MCDBA, MCT, SCJP2
http://www.babaluga.com/
Avatar
Glenn Gagné
Oui j'ai des infos dans ces BDD et je ne peux les récupérer facilement car
c'est une BDD créé par une application (Kapsersky Admin Kit) et je ne veux
pas foutre en l'air toute l'installation (je suis pas sertain à 100% du
contenu).

Et est-ce possible de faire le detach -> attach au-lieu du backup -> restore
?

Merci

Glenn

"Rudi Bruchez" <"rudi#no-spam#[at]babaluga.com"> a écrit dans le message de
news:19vmw8wep0sxn.1wpvphjqclvr2$
Glenn Gagné a écrit:

> EXEC sp_detech_db 'master' (ou model, msdb et tempdb)

Bonjour,

Il est inutile de copier tempdb.
As-tu des choses à récupérer dans Master ? des logins par exemple ? Ne
peux-tu les recréer ?
As-tu des choses utiles dans model ?
Pour msdb, comme pour les autres, tu peux faire par backup restore.

--
Rudi Bruchez
Consultant indépendant SQL Server
MCDBA, MCT, SCJP2
http://www.babaluga.com/


Avatar
Glenn Gagné
J'ai testé la méthode backup -> Restore... ça ne marche pas non plus.

Je fais mon backup comme ceci (pas de problème pour le backup):

OSQL -E -S MONPCMONINSTANCE
BACKUP DATABASE master TO DISK = 'C:master.bak'
GO
BACKUP DATABASE model TO DISK = 'C:master.bak'
GO
BACKUP DATABASE msdb TO DISK = 'C:master.bak'
GO

-----------------------------------

Je conserve la session OSQL ouverte, je place le serveur SQL en pause:

NET PAUSE MSSQL$MONINSTANCE

* J'ai également testé sans le mettre en pause

----------------------------------

Je lance la restauration:

RESTORE DATABASE master FROM DISK ='C:master.bak' WITH MOVE 'master' TO
'D:SQLmaster.mdf', MOVE 'mastlog' TO 'D:SQLmastlog.ldf'
GO

J'ai 2 message d'erreur:

Le premier dit que je dois être en mode SINGLE_USER pour faire cela

Le second dit que la restauration s'est terminée correctement... mais aucun
fihcier a été créé. donc c'est pas vrai.

-------------------------------------

Je tente alors de placer la base de données master en SINGLE_USER comme
ceci:

ALTER DATABASE master SET SINGLE_USER

Mais ça ne marche pas, un message me dit qu'il est impossible de mettre
master en single_user...

Là je comprends plus rien.

C'est quoi la méthode qu'on utilise pour restaurer les tables système
!!!!!!!!! ???????????
Avatar
Nicolas LETULLIER
Bonjour,

Pour pouvoir faire un RESTORE de la base master, il faut lancer SQLServer en
mode mono-utilisateur par la commande "sqlservr.exe -m", non pas par le
service. Donc :
- Arrêter le service : NET STOP MSSqlServer
- Lancer le processus "sqlservr.exe -m"
- Se connecter par OSQL, faire le RESTORE (j'ai jamais essayé de faire
un RESTORE DATABASE master avec un "WITH MOVE", je suis pas sûr que ça
passe)
- Arrêter le processus par Ctrl+C
- Relancer le service : NET START MSSQLServer

http://msdn2.microsoft.com/fr-fr/library/ms180965.aspx

Question : Généralement, la base "master" n'est vraiment pas grosse, est-ce
que c'est pas beaucoup d'énergie dépensée pour un bien faible gain ?
Il est surtout important de déplacer la base "tempdb" qui aura tendance à
grossir.

Nicolas.


"Glenn Gagné" a écrit dans le message de news:

J'ai testé la méthode backup -> Restore... ça ne marche pas non plus.

Je fais mon backup comme ceci (pas de problème pour le backup):

OSQL -E -S MONPCMONINSTANCE
BACKUP DATABASE master TO DISK = 'C:master.bak'
GO
BACKUP DATABASE model TO DISK = 'C:master.bak'
GO
BACKUP DATABASE msdb TO DISK = 'C:master.bak'
GO

-----------------------------------

Je conserve la session OSQL ouverte, je place le serveur SQL en pause:

NET PAUSE MSSQL$MONINSTANCE

* J'ai également testé sans le mettre en pause

----------------------------------

Je lance la restauration:

RESTORE DATABASE master FROM DISK ='C:master.bak' WITH MOVE 'master' TO
'D:SQLmaster.mdf', MOVE 'mastlog' TO 'D:SQLmastlog.ldf'
GO

J'ai 2 message d'erreur:

Le premier dit que je dois être en mode SINGLE_USER pour faire cela

Le second dit que la restauration s'est terminée correctement... mais
aucun
fihcier a été créé. donc c'est pas vrai.

-------------------------------------

Je tente alors de placer la base de données master en SINGLE_USER comme
ceci:

ALTER DATABASE master SET SINGLE_USER

Mais ça ne marche pas, un message me dit qu'il est impossible de mettre
master en single_user...

Là je comprends plus rien.

C'est quoi la méthode qu'on utilise pour restaurer les tables système
!!!!!!!!! ???????????





Avatar
Fred BROUARD
Glenn Gagné a écrit :
Bonjour,

J'ai un petit problème. J'ai par erreur installé une instance de MSDE2000A
sur une partition trop petite pour sont utilisation et je dois déplacer les
fichiers sur une autre partition.

Pour les bases de données "utilisateur" j'ai pas de problème, ça fonctionne
super bien avec un detach et attach. Mais je suis incapable de déplacer les
base master, model, msdb et tempdb de la même manière.Lorsque je lance
l'exécution suivant avec OSQL:

EXEC sp_detech_db 'master' (ou model, msdb et tempdb)

J'obtiens le message d'erreur suivant:

Msg 7940, Niveau 16, État 1, Serveur PCINSTANCE, Ligne 1
Impossible de détacher les bases de données systèm master, model, msdb et
tempdb.

--------------------------------------------

Je comprends que le serveur ne peut pas se départir des ses sources pour
fonctionner, alors il doit exister une méthode... En cherchant j'ai trouvé
50% de solution. L'article suivant:

http://support.microsoft.com/kb/224071

Cet article traite du même problème pour SQL 7.0, 2000 et 2005. La solution
pour détacher les bases systèmes est de temporairement ajouter un paramètre
de démarrage différent au Serveur SQL: (-T3608) pour msdb,
(-dD:SQLmaster.mdf) pour master, etc....

Le problème, c'est que l'explication pour modifier ces paramètres n'est
qu'avec la "SQL Server Entreprise Manager" de SQL 2000. Et ici, je n'ai que
"OSQL en ligne de commande" et "SQL Server Management Studio" de SQL 2005.

Avec OSQL je ne connais pas du tout la commande T-SQL pour faire cela (s'il
en existe une) et avec SQL Server Management Studio je n'ai pas ces même
options (qui évidemment sont adaptées pour SQL 2005).

------------------------------------------------

Si vous possédez la solution en script pour faire un detach et attahc
complet des bases systèmes de MSDE j'aimerais bien savoir.

Merci beaucoup

Glenn Gagné
Technicien MCP/TI




Bonjour,

vous pouvez aussi :
modifier à la main les tables sysfiles de master, model et msdb
ensuite, arrêter SQL server et modifier la clef de registre pointant
vers la racine de path des fichiers des bases
HKEY_LOCAL_MACHINESOFTWARE MicrosoftMSSQLServer[nom_instance]Setup
Clef : SQLDataRoot

mais très haut risque et peu d'intérêt car master model et msdb, sont en
général de très petites bases !

pour tempdb il existe une procédure spécifique de migration des
fichiers, qui nécessite le redémarrage du serveur SQL. Voir l'aide en
ligne de ALTER DATABASE

A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
********************* http://www.datasapiens.com ***********************