31

我试图使用 SQL Server Management Studio 2008 Express 为我的 SQL Server 数据库创建备份。我已经创建了备份,但它被保存在我无法找到的某个路径上。我将它保存在我的本地高清上,我签入Program Files>Microsoft SQL Server>MSSQL 1.0>MSSQL>DATA>但它不存在。

这个 DB .bak 的默认保存路径是什么?

4

10 回答 10

52

应该在

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
于 2011-01-14T14:37:03.570 回答
15

如果未在默认位置创建备份,则可以使用此 T-SQL(在 SSMS 中运行)查找 SQL Server 实例上所有 DB 的最新备份的文件路径:

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;
于 2011-01-14T14:42:34.743 回答
2

正如 Faiyaz 所说,要获取实例的默认备份位置,您无法将其放入 msdb,但您必须查看注册表。您可以使用 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 的默认实例名称。您必须适应放置自己的实例名称(查看注册表)。

于 2016-01-18T20:48:09.553 回答
2

为您的服务器实例设置注册表项。例如:

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

于 2016-06-16T17:32:07.063 回答
1

使用下面的脚本,然后切换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
于 2011-01-14T14:39:04.883 回答
1

我不认为默认备份位置存储在 SQL 服务器本身中。设置存储在注册表中。查找“BackupDirectory”键,您将找到默认备份。

msdb.dbo.backupset”表包含备份列表,如果没有备份数据库,它不会显示任何内容

于 2015-08-25T01:58:57.550 回答
0

你有没有尝试过:

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

于 2011-01-14T14:37:10.373 回答
0

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

于 2011-01-14T14:38:02.167 回答
0

所以最终在 SQL Server 2019 上,您可以调用内置的 SERVERPROPERTY 函数来查询默认备份文件夹:

select serverproperty('InstanceDefaultBackupPath')
于 2022-02-17T22:07:17.937 回答
-2

你可能想看看这里,这个工具将 BAK 文件从远程 SQL Server 保存到本地硬盘:FIDA BAK to local

于 2014-03-02T14:55:10.750 回答