【问题标题】:How to get file paths of MS SQL database that is stuck Restoring如何获取卡住的 MS SQL 数据库的文件路径
【发布时间】:2011-11-22 23:59:46
【问题描述】:

我以“With Replace”备份的形式将更新分发到我们的数据库,但用户可以将其安装到任何硬盘驱动器上的任何位置,这意味着我需要在运行“Restore With Move”之前对其执行“Exec SP_HelpFile” ”。但是 SP_HelpFile 要求我首先“使用数据库”,如果它已经陷入失败的还原,我就无法做到这一点。如果我不能告诉它在哪里恢复,我什至不能运行“With Recovery”。有没有办法使用主数据库来获取文件名?目前我唯一的解决方案是删除并重新安装,但我希望自动更新程序能够自行处理。

更新:服务器版本是 2005 和 2008

【问题讨论】:

  • 对于使用镜像的系统,这个问题一直出现。

标签: sql-server restore recovery


【解决方案1】:

在 SQL 2005+ 中,您可以使用系统视图 sys.master_files。

select name, physical_name
from sys.master_files
where db_id = db_id('your_database')

【讨论】:

    【解决方案2】:

    您应该能够在不使用数据库的情况下获取路径+文件名。 sp_helpfile 使用本地 sys.sysfiles 但现在至少您可以使用目录视图 sysaltfiles,出于向后兼容性的原因仍在 master 中...这是假设 SQL Server 2005+(请始终指定您正在使用的 SQL Server 版本):

    SELECT filename 
        FROM master.sys.sysaltfiles
        WHERE db_id = DB_ID('database name');
    

    【讨论】:

    • 不喜欢使用过时的东西,但它让我找到了 master.sys.master_files,所以指向你。
    • 啊,是的,忘记替换了。
    【解决方案3】:

    在 SQL Server 2008 中,你应该使用如下:

    SELECT filename 
        FROM master.sys.sysaltfiles
        WHERE dbid = DB_ID('db_name');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多