使用 SQL Server 2012 恢复多个数据库的最佳脚本?

2024-03-27

我必须恢复大约 60 个不同大小的 SQL 数据库。我在谷歌上搜索找到一个脚本来依次恢复所有数据库,只需从我的文件夹中一一挑选它。我没有那么成功,可能是因为我对 SQL 等还很陌生。

它可以在 powershell 或 sql 命令行中完成,我现在发现的是这样的:

RESTORE DATABASE [db1] FROM  DISK = N'C:\folder\db1.bak' WITH  FILE = 1,  NOUNLOAD,  STATS = 10
GO
RESTORE DATABASE [db2] FROM  DISK = N'C:\folder\db2.bak' WITH  FILE = 1,  NOUNLOAD,  STATS = 10
GO

所以我要做的就是从某个文件夹中获取文件名,并将“db1.bak”等替换为我刚刚从文件夹中选择的名称,然后运行脚本。

我知道必须有一种更聪明的方法,或者是否可以将许多 .bak 文件“加载”到 SSMS 中,以便程序可以依次运行它们?


经过一些改编的 Collet 脚本对我有用。

首先通过运行以下 SQL 命令启用 xp_cmdshell:

-- To allow advanced options to be changed.  
EXEC sp_configure 'show advanced options', 1;  
GO  
-- To update the currently configured value for advanced options.  
RECONFIGURE;  
GO  
-- To enable the feature.  
EXEC sp_configure 'xp_cmdshell', 1;  
GO  
-- To update the currently configured value for this feature.  
RECONFIGURE;  
GO 

接下来,更新以下脚本以从备份文件恢复数据库。代替C:\Backup\与包含 .BAK 文件的本地目录并替换C:\Microsoft SQL Server\SQLINSTANCE\MSSQL\DATA\与您的 SQL Server 数据目录。该脚本还假设 .BAK 文件名与数据库名称匹配,否则脚本可能会抛出有关逻辑文件名不匹配的错误。

DECLARE @FilesCmdshell TABLE (
    outputCmd NVARCHAR (255)
)   
DECLARE @FilesCmdshellCursor CURSOR 
DECLARE @FilesCmdshellOutputCmd AS NVARCHAR(255)

INSERT INTO @FilesCmdshell (outputCmd) EXEC master.sys.xp_cmdshell 'dir /B  C:\Backup\*.bak'    
SET @FilesCmdshellCursor = CURSOR FOR SELECT outputCmd FROM @FilesCmdshell

OPEN @FilesCmdshellCursor
FETCH NEXT FROM @FilesCmdshellCursor INTO @FilesCmdshellOutputCmd
WHILE @@FETCH_STATUS = 0
BEGIN   
    DECLARE @sqlRestore NVARCHAR(MAX) = 'RESTORE DATABASE [' + SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX('.', @FilesCmdshellOutputCmd)) + '] FROM  DISK = N''C:\Backup\' + SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX('.', @FilesCmdshellOutputCmd)) + '.bak'' WITH  FILE = 1,  MOVE N''' + SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX('.', @FilesCmdshellOutputCmd)) + ''' TO N''C:\Microsoft SQL Server\SQLINSTANCE\MSSQL\DATA\' + SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX('.', @FilesCmdshellOutputCmd)) + '.mdf'',  MOVE N''' + SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX('.', @FilesCmdshellOutputCmd)) + '_log'' TO N''C:\Microsoft SQL Server\SQLINSTANCE\MSSQL\DATA\' + SUBSTRING(@FilesCmdshellOutputCmd, 0, CHARINDEX('.', @FilesCmdshellOutputCmd)) + '_log.ldf'', NOUNLOAD,  STATS = 10'
    EXEC(@sqlRestore)

    FETCH NEXT FROM @FilesCmdshellCursor INTO @FilesCmdshellOutputCmd
END
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 SQL Server 2012 恢复多个数据库的最佳脚本? 的相关文章

  • EntityFramework:“参数值超出范围。”

    我在 EntityFramework 模型优先 中保存小数时遇到问题 在我的 EDMX 中 我声明我的属性为 Decimal 30 10 然后我尝试保存该数字 1215867935736100000 结果是 Parameter value
  • 交易已在触发条件下结束。批次已中止。派生属性

    我有这个触发器 CREATE trigger dbo DeriveTheAge on dbo Student after insert update as begin declare sid as int declare sdate as
  • 在 CASE 语句中使用 CAST 时出现数据转换错误

    运行以下命令时出现错误 将数据类型 nvarchar 转换为 float 时出错 declare completeCommand nvarchar max x paramVal nvarchar 100 paramName nvarchar
  • 如何按月(“年”和“月”)对表进行分区并自动创建每月分区?

    我正在尝试按两者对表进行分区Year and Month 我将通过其进行分区的列是具有 ISO 格式 20150110 20150202 等 的日期时间类型列 例如 我有 2010 年 2011 年 2012 年的销售数据 我希望数据按年份
  • DATEADD(day, -7, GETDATE()) - 是否考虑了时间?

    我正在通过 Amazon Redshift 在 Aginity 中编写 SQL 查询来提取过去 7 天的数据 这Date我调用的列是变量类型 DATE 输出示例如下 5 30 2017 0 00 当我调用下面的函数时 运行此查询在一天中的什
  • 如何研究.NET 中的非托管内存泄漏?

    我有一个通过 MSMQ 运行的 WCF 服务 内存随着时间的推移逐渐增加 表明存在某种内存泄漏 我在本地运行该服务并使用 PerfMon 监视一些计数器 CLR 内存托管堆字节总数保持相对恒定 而进程的私有字节随着时间的推移而增加 这让我相
  • 收到警告:空值被聚合或其他 SET 操作消除

    我有这个架构 create table t id int d date insert into t id d values 1 getdate 2 NULL 做的时候 declare mindate date select mindate
  • SQL - 用 varchar 替换 is null 整数

    我正在尝试用新的列替换列varchar如果 select 语句中存在空值 则为字符串 personid ISNULL personid no person 我不想更新它 只是在查询结果中将值显示为 无人 但我收到一条错误消息 将 varch
  • 如何用NULL替换空格

    我在 sql server 2012 中有一个包含空格的列 我想用 NULL 替换这些空白 我已经编写了以下查询 但它不起作用 SELECT replace COLUMN1 NULL FROM Orders 如何实现上述功能 提前致谢 Us
  • 为列名创建动态选择获取值 - 在 SQL Server 中

    请帮助我创建一个选择 SQL 语句 其中的结果列名称是从原始表中的列值获取的 表名是Device Part 用户可以输入很多DeviceCode其中有许多动态PartTypeName PartTypeName 值为PartInfo 这可能有
  • 如何返回以列名作为第一行的 T-SQL 查询

    我正在编写一个 SSIS 包来将数据从 SQL Server 2012 数据库输出到 CSV为客户归档 要求是第一行是列名称 下面是我为数据流任务中的源编写的查询 问题是 它总是将列名返回为最后一行 而不是第一行 为什么 我该如何实现这一目
  • .Net 将 NULL 值从变量值插入 SQL Server 数据库

    也有类似的问题 但答案不是我想要的 如果引用为 NULL 或尚未分配值 我想将 NULL 值插入 SQL Server 数据库 目前我正在测试 null 它看起来像 String testString null if testString
  • 带附件的数据库电子邮件(excel 文件/pdf 文件)?

    我必须从数据库向我的邮件 ID 发送一封带有附件的邮件 EXEC msdb dbo sp send dbmail profile name Adventure Works Administrator recipients email pro
  • 如何从 SQL Server 2005 备份中恢复单个表?

    我已经使用常规 SQL Server 2005 备份命令进行了备份 有没有办法只恢复单个表 而不是整个数据库 将整个数据库恢复到另一台机器 或临时数据库 然后复制表对我来说似乎是最简单的
  • BCP 语法问题

    总之 我正在尝试编写一个可以每天从 SQL Server 2008 实例上的批处理文件运行的查询 我以前从未使用过 BCP 但在查看了一些在线示例后 我尝试创建一个真正的基本查询来测试计算机上的进程和权限 然后再将选择查询扩展到所需的数据集
  • 如何在 SQL Server 查询中的 FROM 子句中使用变量?

    我正在创建一个查询 该查询将选择表中的所有数据 查询将根据我将传递给存储过程的变量选择表 在我的例子中 如果我执行example sp table1它将选择table1 如果我使用同样的事情example table table2 应该选择
  • SQL Server 全文搜索 - 是否可以在单词中间进行搜索?

    我的数据库有全文搜索 是否可以在单词中间搜索某些文本 例如 我有一个描述列 其中包含以下文本 Revolution 是否可以搜索 EVO 并让它在 革命 一词中找到它 或者我是否一直在做 LIKE SELECT FROM Table WHE
  • SQL Server 2005 - 达到表行大小限制

    有没有一种干净的方法可以在向表添加新列之前确定表的行大小 并且不超过 8060 字节的限制 例如 如果表行长度当前为 8055 字节 并且我想添加日期时间 8 字节 则这将结束 因为它将变为 8063 字节 不包括空映射 但是 如果我添加一
  • SSIS ForEach File 循环 - 将文件名插入表

    我正在构建一个 SSIS 包 使用 VS 2017 来从特定文件夹加载一堆 CSV 文件 使用 ForEach File 循环效果很好 数据流任务具有平面文件源和 OLE DB 目标 我希望能够将文件名以及 CSV 文件中的数据保存在同一个
  • Sql 查询抛出标识符太长。最大长度为 128

    我正在处理一个简单的更新查询 在执行查询时看到以下错误 我非常清楚 这根本不应该是一个长度问题 可能是什么问题 Error 以identifier开头的标识符太长 最大长度为 128 我的查询 update dbo DataSettings

随机推荐

  • WCF - 回调客户端(双工?)

    我有一个问题 不知道该选择什么解决方案 我有一台正在运行的服务器 正在运行可以从网站接收订单的服务 多个客户端 远程计算机 以某种方式连接到该服务器 我真的很想使用 WCF 进行所有通信 但不确定是否可行 我不想在路由器中配置所有客户端防火
  • 握手期间连接终止

    这真的很令人沮丧 浪费了 3 天的时间来解决 但在 Macos Catalina 版本 10 15 1 和 Windows 7 上仍然出现卡住问题 我的两台电脑显示相同的错误 第一次当我尝试 获取包裹 时 它显示了 Users mamun
  • BL 服务:异常还是方法结果?

    最好的方法是什么 为什么 V1 try var service IoC Resolve
  • 如何为 Google 地图创建“大小圆圈”图例

    我有一个自定义的谷歌地图 它使用 GeoJSON 文件中的数据创建大小的圆圈 我需要做的是创建一个图例 键来解释每个圆圈的大小代表什么 我尝试按照 Google 的指南创建自定义图例 https developers google com
  • 我的 PHP 卷曲请求出了什么问题,请帮忙..我没有得到任何数据[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 它说浏览器
  • 如何(最好)将 WM_QUIT 发布到正在运行的进程?

    目标 关闭Windows下正在运行的32位GUI进程 我可以访问可执行路径名 该软件可能有多个副本正在运行 但只有一个副本是从唯一的可执行路径名启动的 由于可以运行该可执行文件的多个实例 因此只需查看顶层窗口就需要区分哪个可执行文件路径名实
  • jsPDF fromHTML() 不显示 HTML

    我正在研究一个简单的 javascript 我正在使用 jsPDF 库 但脚本加载了一个空白的 pdf 这是代码
  • 在 Objective-C 中查找一个不区分大小写的字符串

    我的问题类似于Objective C 中如何检查一个字符串是否包含另一个字符串 https stackoverflow com q 2753956 602011 如何检查字符串 NSString 是否包含另一个较小的字符串但忽略大小写 NS
  • 未找到:操作类型未注册“CountExtremelyRandomStats”

    在 docker 容器中运行 bazel 命令时出现以下错误 命令运行 bazel bin tensorflow serving model servers tensorflow model server port 9000 model n
  • 如何连接到docker Oracle实例

    我正在关注这些指示 https github com oracle docker images tree master OracleDatabase 我创建了一个像这样的 docker 容器 docker run name oracle p
  • 删除旧的 .PhpStorm 目录是否安全

    每次我将 PhpStorm 升级到新的单点版本时 我的主目录中都会保留以前的版本 我现在有 PhpStorm2017 1 PhpStorm2017 2 PhpStorm2017 3 PhpStorm2018 1 PhpStorm2018 2
  • 如何在 Android Studio 中编辑 .jar 文件

    如何使用 Android Studio 编辑 jar 文件中的 class 文件中的代码 当然 我已经尝试过编辑它 由于某种原因 我试图编辑的类是只读的 Jar文件是压缩档案 zipped files class文件 以及一些其他资源 cl
  • 学习 C# Excel 互操作的资源 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有哪些资源可以帮助我快速启动并运行 C 中的 Excel 互操作 文章从 Visual Studio 2005 开发人员的角度理解 Exc
  • 使用 scipy 中的 optimization.minimize 和 2 个变量和插值函数

    我没有找到使用多维函数从 scipy 执行 optimize minimize 的方法 在几乎所有示例中 解析函数都得到优化 而我的函数则被插值 测试数据集如下所示 x np array 2000 2500 3000 3500 y np a
  • Spark fat jar 在 YARN 上运行多个版本

    我有一个旧版本的 Spark 设置和 YARN 我不想删除它 但仍然想使用较新的版本 我找到了一个couple https community cloudera com t5 Advanced Analytics Apache Spark
  • 窗口对象中奇怪的 self 对象

    我不明白为什么window在下面self and self在下面window目的 如果你去开发工具或 Firebug 并写window你得到了DOM window反对self位于该对象下 奇怪的部分是window在下面self again
  • 在Vue js中显示错误消息

    我有一个以下组件 其中有一个更新员工的方法 我想在 ajax 调用的 错误 回调中分配 更改 erroMessage 变量后立即在视图中显示错误消息 var EmployeeEdit Vue extend template employee
  • 如何在android中创建选项菜单?

    我想使用 c 和 Xamarin Studio 在 Android 应用程序中创建一个简单的选项菜单 我该怎么做 我还没有找到任何这方面的 C 示例 有人可以简单解释一下如何创建选项菜单吗 定义菜单 创建菜单的一种方法是使用放置在 Xama
  • Maven编译器使用的JDK版本在哪里指定?

    当我没有在我的 pom xml 文件中定义如下内容时 在我的系统上的哪个位置为 Maven 定义了编译时使用哪个版本的 Java JDK 我的系统上安装了多个版本 JAVA HOME指向其中之一
  • 使用 SQL Server 2012 恢复多个数据库的最佳脚本?

    我必须恢复大约 60 个不同大小的 SQL 数据库 我在谷歌上搜索找到一个脚本来依次恢复所有数据库 只需从我的文件夹中一一挑选它 我没有那么成功 可能是因为我对 SQL 等还很陌生 它可以在 powershell 或 sql 命令行中完成