繁体   English   中英

SQL Server Management Studio 中的 database.bak 文件保存在哪里?

[英]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脚本

http://wraithnath.blogspot.com/search/label/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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM