2011-01-14 196 views
24

我正在尝试使用SQL Server Management Studio 2008 Express为我的SQL Server数据库创建备份。我创建了备份,但它正在保存在我无法找到的某个路径。我将它保存在本地HD上,我检查了Program Files>Microsoft SQL Server>MSSQL 1.0>MSSQL>DATA>但它不在那里。从SQL Server Management Studio保存的数据库.bak文件在哪里?

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

回答

41

应在

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,你也可以得到备份的位置,在这里看到Getting the physical device name and backup time for a SQL Server database

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 
0

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

+0

是否有人迷茫了`...`的答案吗?这意味着您的* Program Files *文件夹的位置可能不是* C *驱动器的根目录。 – 2014-02-19 21:18:31

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 
10

如果备份不是在默认位置创建的,你可以使用这个T-SQL(SSMS中运行这个)找到的文件路径为最近备份您的SQL Server实例的所有DBS:

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; 
0

你可能想在这里看看,这个工具可以节省从远程SQL Server中的BAK文件到本地硬盘:FIDA BAK to local

1

我不认为默认备份loc ation存储在SQL服务器本身内。 这些设置存储在注册表中。找到“BackupDirectory”密钥,您将找到默认备份。

“msdb.dbo.backupset”表由采取备份的列表,如果没有备份是采取一个数据库,它不会告诉你任何东西

1

正如Faiyaz说,获取实例的默认备份位置,但无法将其导入到msdb中,但必须查看Registry。你可以得到它在T-SQL中使用这样xp_instance_regread存储过程:

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的默认实例名称。您必须适应放置自己的实例名称(查看注册表)。

0

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

HKEY_LOCAL_MACHINE \ SOFTWARE \微软\ Microsoft SQL Server的\ MSSQL.2 \的MSSQLServer \ BackupDirectory

相关问题