OVH Cloud OVH Cloud

Database PATH ???

4 réponses
Avatar
Milas
Bonjour,

je voudrais récupérer dans une procédure stockée, le path où se trouvent les
fichiers .mdf, .ldf de ma base courante...

merci de m'indiquer une solution en T-SQL si elle existe bien sûr !

4 réponses

Avatar
lionelp
bonjour,

use master
go
select * from sysaltfiles
go

Cordialement,
LionelP

"Milas" wrote in message
news:
Bonjour,

je voudrais récupérer dans une procédure stockée, le path où se trouvent


les
fichiers .mdf, .ldf de ma base courante...

merci de m'indiquer une solution en T-SQL si elle existe bien sûr !





Avatar
Med Bouchenafa
Voir aussi sp_helpfile dans Aide En Ligne

--
Bien cordialement
Med Bouchenafa


"Milas" wrote in message
news:
Bonjour,

je voudrais récupérer dans une procédure stockée, le path où se trouvent
les
fichiers .mdf, .ldf de ma base courante...

merci de m'indiquer une solution en T-SQL si elle existe bien sûr !





Avatar
Milas
Merci...

mais ce que je veux ce n'est pas juste avoir l'info... mais récupérer dans
une variable varchar le chemin (path) de mes fichiers .mdf et.ldf

par exemple, pour récupérer le nom de la base, je peux faire un simple

SET @name = db_name()

sans passer par master..xpregread parce que là on doit avoir le chamin exact
dans la base de registre or ma PS est écrite pour être lancée sur des
serveurs différents.

En gros je dois récupérer le path de la base sur laquelle la proc est lancée
pour créer une nouvelle base (basée sur un modèle déjà créé) dans le meme
path sans devoir le mettre en dur à chaque utilisation comme je le fais
actuellement pour D:MSSQLMSSQL :

SET @DB_MODELE = isnull(@DB_MODELE, 'MODELE')
SET @DB_FOLDER = isnull(@DB_FOLDER, 'D:MSSQLMSSQL')

exec ('BACKUP DATABASE ' + @DB_MODELE + ' TO DISK = ''' + @DB_FOLDER +
'BACKUPBackup de ' + @DB_MODELE +'.BAK''
RESTORE DATABASE '+ @DB_NAME +' FROM DISK = ''' + @DB_FOLDER +
'BACKUPBackup de ' + @DB_MODELE +'.BAK''
WITH REPLACE,
MOVE ''DB_data'' TO '''+ @DB_FOLDER + 'Data' + @DB_NAME +'.MDF'',
MOVE ''DB_log'' TO '''+ @DB_FOLDER + 'Data' + @DB_NAME +'_log.LDF''')

Voilà... en espérant avoir été clair dans mes explications !!
Avatar
lionelp
dans la registry il y a un chemin par défaut des data files
dans sysaltfiles il y a le chemin complet jusqu'au nom de fichier (data ou
log file) que manque-t-il? peut-être cela:
select name, reverse(substring(
rtrim(ltrim(reverse(filename))),
patindex('%%',reverse(rtrim(ltrim(filename))))+1,
datalength(ltrim(reverse(filename))))),
filename
from sysaltfiles

Cordialement,
LionelP


"Milas" wrote in message
news:
Merci...

mais ce que je veux ce n'est pas juste avoir l'info... mais récupérer dans
une variable varchar le chemin (path) de mes fichiers .mdf et.ldf

par exemple, pour récupérer le nom de la base, je peux faire un simple

SET @name = db_name()

sans passer par master..xpregread parce que là on doit avoir le chamin


exact
dans la base de registre or ma PS est écrite pour être lancée sur des
serveurs différents.

En gros je dois récupérer le path de la base sur laquelle la proc est


lancée
pour créer une nouvelle base (basée sur un modèle déjà créé) dans le meme
path sans devoir le mettre en dur à chaque utilisation comme je le fais
actuellement pour D:MSSQLMSSQL :

SET @DB_MODELE = isnull(@DB_MODELE, 'MODELE')
SET @DB_FOLDER = isnull(@DB_FOLDER, 'D:MSSQLMSSQL')

exec ('BACKUP DATABASE ' + @DB_MODELE + ' TO DISK = ''' + @DB_FOLDER +
'BACKUPBackup de ' + @DB_MODELE +'.BAK''
RESTORE DATABASE '+ @DB_NAME +' FROM DISK = ''' + @DB_FOLDER +
'BACKUPBackup de ' + @DB_MODELE +'.BAK''
WITH REPLACE,
MOVE ''DB_data'' TO '''+ @DB_FOLDER + 'Data' + @DB_NAME +'.MDF'',
MOVE ''DB_log'' TO '''+ @DB_FOLDER + 'Data' + @DB_NAME +'_log.LDF''')

Voilà... en espérant avoir été clair dans mes explications !!