SQL Server 2012 restore数据库时在文件夹下看不到.bak文件的解决办法

问题描述
有两台SQL Server 2012 分别称为ServerA、ServerB,目标是利用backup/restore的方法将ServerA上的数据库db1转移到ServerB上。步骤如下:

  1. 使用sa用户登录到ServerA的Management Studio,选择Object Explorer|ROOT|databases|db1右键单击db1,弹出右键菜单选择Tasks|back up… 将数据库备份到文件db1.bak中。
  2. 将db1.bak复制到ServerB的机器上
  3. 使用sa用户登录到ServerB的Management Studio,选择Object Explorer|ROOT|databases 右键单击databases弹出右键菜单选择Tasks|restore|databases…,弹出对话框,在对话框中加入db1.bak

但是在第3步的时候遇到了一个问题,db1.bak原本copy后放在D:\backups文件夹中,但是restore添加备份文件时在backups文件夹下看不到任何文件。将db1.bak复制到其他目录下就可以看到了。

问题调查
首先我们比较两个文件夹的区别,发现唯一的区别就是backups文件夹局域网中有共享其他文件夹没有共享,初步怀疑问题和这个有关系。于是将backups文件夹的共享属性去掉,再试还是不行。于是一通试验,发现新建的没有共享过的文件夹可以工作,文件夹只要共享过(共享后取消共享也不行)就不行了。问题至此确定了重现的步骤即copy sqlserver的backup文件到一个共享过的文件夹中,则无法使用restore从这个文件夹中读取备份文件。

问题的解决
既然找到了重现的步骤那么解决的办法就很直接了,如下的方法一和方法二都是直接规避“共享过”的文件夹而产生的方法。虽然直接但不够优雅,不够本质,所以有了方法三。
方法一,新建一个没有共享过的文件夹存放备份文件
方法二,将备份文件放到磁盘根目录下
方法三,以上两个方法都可以解决这个问题,但是不够完美。于是继续在网上搜索,果然搜到一个帖子,http://dba.stackexchange.com/questions/47304/bak-file-not-visible-in-any-directory-in-ssms
这个帖子的解决办法是将NT SERVICE\MSSQLSERVER这个用户加入文件的访问列表中并赋予相应的权限,如下图:
这里写图片描述

问题总结
看过这个帖子可以清楚这个问题的本质是MSSQLSERVER这个用户是否有权限访问备份文件所在的文件夹,默认情况下新建的文件夹是可以访问的,但是共享破坏了授权,即使取消共享也无法恢复对MSSQLSERVER用户的授权,所以只要是共享过的文件夹MSSQLSERVER用户都无法访问。解决的办法就是显式将MSSQLSERVER加入文件夹的访问列表中。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要批量恢复多个BAK文件,可以使用SQL Server Management Studio(SSMS)或Transact-SQL(T-SQL)命令来完成。 1. 使用SSMS批量恢复BAK文件: - 打开SSMS并连接到SQL Server实例。 - 在对象资源管理器中,右键单击“数据库文件夹,选择“还原数据库”选项。 - 在“还原数据库”对话框中,选择“设备”选项卡。 - 点击“添加”按钮并浏览到包含BAK文件文件夹。 - 选中所有需要恢复的BAK文件,点击“确定”按钮。 - 在“还原数据库”对话框中,选择需要还原的数据库和恢复选项。可以使用默认选项或根据需要进行自定义设置。 - 点击“确定”按钮开始恢复过程。 2. 使用T-SQL命令批量恢复BAK文件: - 打开SQL Server Management Studio并连接到SQL Server实例。 - 打开新的查询窗口并输入以下命令: ``` RESTORE DATABASE [DatabaseName] FROM DISK = 'FilePath1' WITH REPLACE, RECOVERY; RESTORE DATABASE [DatabaseName] FROM DISK = 'FilePath2' WITH REPLACE, RECOVERY; RESTORE DATABASE [DatabaseName] FROM DISK = 'FilePath3' WITH REPLACE, RECOVERY; ``` 其中,[DatabaseName]是需要还原的数据库名称,FilePath1、FilePath2、FilePath3是需要恢复的BAK文件路径。 - 执行命令以开始恢复过程。 注意事项: - 在恢复数据库之前,请确保已经备份了目标数据库并且目标数据库不存在。 - 如果需要恢复到不同的数据库名称,请在命令或对话框中指定新的数据库名称。 - 恢复过程可能需要一些间,具体间取决于BAK文件的大小和恢复选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值