【问题标题】:Where is database .bak file saved from SQL Server Management Studio?从 SQL Server Management Studio 保存的数据库 .bak 文件在哪里?
【发布时间】:2011-06-09 04:38:47
【问题描述】:

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

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

【问题讨论】:

    标签: sql-server backup


    【解决方案1】:

    应该在

    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
    

    【讨论】:

      【解决方案2】:

      如果未在默认位置创建备份,您可以使用此 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;
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            【解决方案5】:

            使用下面的脚本,然后将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
            

            【讨论】:

              【解决方案6】:

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

              "msdb.dbo.backupset" 表包含已备份的列表,如果没有对数据库进行备份,则不会显示任何内容

              【讨论】:

                【解决方案7】:

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

                【讨论】:

                • 有人对答案中的... 感到困惑吗?这意味着您的 Program Files 文件夹的位置可能不是 C 驱动器的根目录。
                【解决方案8】:

                你试过了吗:

                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

                【讨论】:

                  【解决方案9】:

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

                  select serverproperty('InstanceDefaultBackupPath')
                  

                  【讨论】:

                    【解决方案10】:

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

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2014-04-24
                      • 2019-01-16
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多