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?
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
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;
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
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).
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
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
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
...\Program Files\Microsoft SQL Server\MSSQL 1.0\MSSQL\Backup