sql - 从 .bak 文件恢复时动态获取数据库逻辑名称

标签 sql sql-server python-2.7 sql-server-2012

我正在尝试创建一个 python 脚本,该脚本将从 .bak 文件动态恢复数据库。运行查询

RESTORE DATABASE db_name FROM DISK = '\\path\to\db\db_name.bak' WITH REPLACE

如果原始数据库名称不存在,效果很好,但是由于有多个服务器并且经常出现重复的名称,情况并非总是如此。

如果.bak文件中包含的.mdf名称确实存在,则WITH MOVE语法很有用,如下所示

RESTORE DATABASE db_name 
  FROM DISK = '\\path\to\db\db_name.bak'
  WITH 
    MOVE 'Logical_name' TO '\\somepath\...\MyDB.mdf'

不幸的是,这需要在运行查询之前了解逻辑名称,因此对于通用脚本来说不是很有用。有没有办法获取逻辑名称并动态填充它以使其更通用?

最佳答案

使用restore filelistonly命令

关于sql - 从 .bak 文件恢复时动态获取数据库逻辑名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35903084/

相关文章:

sql - 正确命名表的 id 字段

SQL:间隙和岛屿、分组日期

python - 查找 Pandas 和 NumPy 之间的公共(public)列并提取列名称

sql - 如何选择返回超过 1 个值的子查询字段?

c# - SELECT .... WHERE something equals with 汉字

SQL将列类型从float转换为varchar

sql-server - 将 bacpac 文件还原到 SQL Server 2014 CTP2 时出现 "Unable to connect to target server"

python - Django(1.4.2)出现如下错误如何解决

Powershell 中的 Python 2 和 3

SQL Server 相当于 MySQL 的 NOW()?