[英]Where is database .bak file saved from SQL Server Management Studio?
我试图使用 SQL Server Management Studio 2008 Express 为我的 SQL 服务器数据库创建备份。 我已经创建了备份,但它被保存在我找不到的某个路径中。 我将它保存在我的本地 HD 上,我检查了Program Files>Microsoft SQL Server>MSSQL 1.0>MSSQL>DATA>
但它不在那里。
这个 DB.bak 的默认保存路径是什么?
应该在
Program Files>Microsoft SQL Server>MSSQL 1.0>MSSQL>BACKUP>
就我而言
C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup
如果你使用gui或T-SQL,你可以指定你想要它的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
使用T-SQL,您还可以获取备份的位置,请参阅此处获取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
如果未在默认位置创建备份,则可以使用此T-SQL(在SSMS中运行)来查找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;
正如Faiyaz所说,要获取实例的默认备份位置,您无法将其置于msdb中,但您必须查看Registry。 您可以使用xp_instance_regread存储过程在T-SQL中获取它,如下所示:
EXEC master.dbo.xp_instance_regread
N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQLServer',N'BackupDirectory'
双反斜杠(\\\\)是因为该键名称部分(Microsoft SQL Server)中的空格。 “MSSQL12.MSSQLSERVER”部分用于SQL 2014的默认实例名称。您必须适应自己的实例名称(查看注册表)。
设置服务器实例的注册表项。 例如:
HKEY_LOCAL_MACHINE \\ SOFTWARE \\ Microsoft \\ Microsoft SQL Server \\ MSSQL.2 \\ MSSQLServer \\ BackupDirectory
我不认为默认备份位置存储在SQL服务器本身。 设置存储在注册表中。 查找“BackupDirectory”键,您将找到默认备份。
“msdb.dbo.backupset”表包含所采用的备份列表,如果没有为数据库进行备份,它将不会向您显示任何内容
使用下面的脚本,并使用您已备份的数据库的名称切换DatabaseName
。 在physical_device_name列上,您将拥有备份数据库的完整路径:
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
你有没有尝试过:
C:\\ Program Files \\ Microsoft SQL Server \\ MSSQL10.SQL2008 \\ MSSQL \\ Backup
可以在以下位置找到上周获取所有备份的脚本:
http://wraithnath.blogspot.com/2010/12/how-to-find-all-database-backups-in.html
我还有更多的备份SQL脚本
...\\Program Files\\Microsoft SQL Server\\MSSQL 1.0\\MSSQL\\Backup
所以最终在 SQL Server 2019 上你可以调用内置的 SERVERPROPERTY function 来查询默认备份文件夹:
select serverproperty('InstanceDefaultBackupPath')
您可能需要查看此工具,此工具将BAK文件从远程SQL Server保存到您的本地硬盘: FIDA BAK到本地
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.