web-dev-qa-db-fra.com

Où le fichier .bak de la base de données est-il enregistré à partir de SQL Server Management Studio?

J'essayais de créer une sauvegarde pour ma base de données SQL Server à l'aide de SQL Server Management Studio 2008 Express. J'ai créé la sauvegarde, mais elle est enregistrée sur un chemin que je ne trouve pas. Je l'enregistre sur mon disque dur local et je me suis enregistré Program Files>Microsoft SQL Server>MSSQL 1.0>MSSQL>DATA> mais ce n'est pas là.

Quel est le chemin d'enregistrement par défaut pour ce DB .bak?

29
Cipher

Devrait être en

Program Files>Microsoft SQL Server>MSSQL 1.0>MSSQL>BACKUP>

Dans mon cas c'est

C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup

Si vous utilisez l'interface graphique ou T-SQL, vous pouvez spécifier où vous le souhaitez. Exemple T-SQL

BACKUP DATABASE [YourDB] TO  DISK = N'SomePath\YourDB.bak' 
WITH NOFORMAT, NOINIT,  NAME = N'YourDB Full Database Backup', 
SKIP, NOREWIND, NOUNLOAD,  STATS = 10
GO

Avec T-SQL, vous pouvez également obtenir l'emplacement de la sauvegarde, voir ici Obtenir le nom du périphérique physique et l'heure de sauvegarde pour une base de données SQL Server

SELECT          physical_device_name,
                backup_start_date,
                backup_finish_date,
                backup_size/1024.0 AS BackupSizeKB
FROM msdb.dbo.backupset b
JOIN msdb.dbo.backupmediafamily m ON b.media_set_id = m.media_set_id
WHERE database_name = 'YourDB'
ORDER BY backup_finish_date DESC
48
SQLMenace

Si la sauvegarde n'a pas été créée à l'emplacement par défaut, vous pouvez utiliser ce T-SQL (exécutez-le dans SSMS) pour trouver le chemin d'accès au fichier pour la sauvegarde la plus récente pour toutes les bases de données sur votre instance SQL Server:

SELECT  DatabaseName = x.database_name,
        LastBackupFileName = x.physical_device_name,
        LastBackupDatetime = x.backup_start_date
FROM (  SELECT  bs.database_name,
                bs.backup_start_date,
                bmf.physical_device_name,
                  Ordinal = ROW_NUMBER() OVER( PARTITION BY bs.database_name ORDER BY bs.backup_start_date DESC )
          FROM  msdb.dbo.backupmediafamily bmf
                  JOIN msdb.dbo.backupmediaset bms ON bmf.media_set_id = bms.media_set_id
                  JOIN msdb.dbo.backupset bs ON bms.media_set_id = bs.media_set_id
          WHERE   bs.[type] = 'D'
                  AND bs.is_copy_only = 0 ) x
WHERE x.Ordinal = 1
ORDER BY DatabaseName;
14
Kenny Evitt

Définissez l'élément de registre pour votre instance de serveur. Par exemple:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.2\MSSQLServer\BackupDirectory

2
Hink

Comme l'a dit Faiyaz, pour obtenir l'emplacement de sauvegarde par défaut de l'instance, vous ne pouvez pas l'obtenir dans msdb, mais vous devez regarder dans le Registre. Vous pouvez l'obtenir dans T-SQL en utilisant la procédure stockée xp_instance_regread comme ceci:

EXEC  master.dbo.xp_instance_regread 
      N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer',N'BackupDirectory'

La double barre oblique inverse (\\) est due au fait que les espaces dans cette partie du nom de clé (Microsoft SQL Server). La partie "MSSQL12.MSSQLSERVER" est pour le nom d'instance par défaut pour SQL 2014. Vous devez vous adapter pour mettre votre propre nom d'instance (recherchez dans le Registre).

2
Matt Roy

Je ne pense pas que l'emplacement de sauvegarde par défaut soit stocké dans le serveur SQL lui-même. Les paramètres sont stockés dans le Registre. Recherchez "BackupDirectory" clé et vous trouverez la sauvegarde par défaut.

La table "msdb.dbo.backupset" se compose de la liste des sauvegardes effectuées, si aucune sauvegarde n'est effectuée pour une base de données, ça ne vous montrera rien

1
Faiyaz

Utilisez le script ci-dessous et changez le DatabaseName avec le nom de la base de données que vous avez sauvegardée. Dans la colonne physical_device_name, vous aurez le chemin complet de votre base de données sauvegardée:

select a.backup_set_id, a.server_name, a.database_name, a.name, a.user_name, a.position, a.software_major_version, a.backup_start_date, backup_finish_date, a.backup_size, a.recovery_model, b.physical_device_name
from msdb.dbo.backupset a join msdb.dbo.backupmediafamily b
  on a.media_set_id = b.media_set_id
where a.database_name = 'DatabaseName'
order by a.backup_finish_date desc
1
Pascal

as-tu essayé:

C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\Backup

Le script pour obtenir toutes les sauvegardes de la semaine dernière se trouve à l'adresse suivante:

http://wraithnath.blogspot.com/2010/12/how-to-find-all-database-backups-in.html

J'ai aussi beaucoup plus de scripts de sauvegarde SQL sur

http://wraithnath.blogspot.com/search/label/SQL

0
WraithNath

...\Program Files\Microsoft SQL Server\MSSQL 1.0\MSSQL\Backup

0
Kenny Evitt