今天发现一个问题,就是公司开发服务器上的SQL Server,还原一个数据库bak文件老是报错,错误如下:

TITLE: Microsoft SQL Server Management Studio
------------------------------ Restore of database 'Fraud' failed. (Microsoft.SqlServer.Management.RelationalEngineTasks) ------------------------------
ADDITIONAL INFORMATION: System.Data.SqlClient.SqlError: Directory lookup for the file "C:\Program Files\Microsoft SQL Server\MSSQL12.DA\MSSQL\DATA\Fraud.mdf" failed with the operating system error 3(The system cannot find the path specified.). (Microsoft.SqlServer.SmoExtended) For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=14.0.17199.0+((SSMS_Rel).171004-0254)&LinkId=20476 ------------------------------
BUTTONS: OK
------------------------------

可以看到这个错误是SQL Server在文件夹C:\Program Files\Microsoft SQL Server\MSSQL12.DA\MSSQL\DATA\下无法生成数据库文件Fraud.mdf。

后来经过调查发现,原来C:\Program Files\Microsoft SQL Server\MSSQL12.DA\MSSQL\DATA\这个文件夹路径在SQL Server所在服务器上根本不存在。。。

这个错误的原因是,默认情况下使用SQL Server Management Studio(SSMS)来还原数据库时,还原地址是备份数据库前的原始地址,如下所示:

可以看到,数据库Fraud由于备份前是在路径(Original File Name)C:\Program Files\Microsoft SQL Server\MSSQL12.DA\MSSQL\DATA\下的,而这个路径是数据库Fraud备份前所在服务器的地址。但是现在SQL Server Management Studio(SSMS)还原这个数据库时,也将数据库文件Fraud.mdf和日志文件Fraud_log.ldf还原到路径(Restore As)C:\Program Files\Microsoft SQL Server\MSSQL12.DA\MSSQL\DATA\下,那肯定是错误的,因为这个路径是备份前数据库Fraud所在服务器的地址,并不是当前我们还原这个数据库所在服务器的地址。

所以我们要在还原时,将上面的复选框Relocate all files to folder勾选上:

这样我们就可以将数据库文件Fraud.mdf和日志文件Fraud_log.ldf还原到我们指定的文件夹路径下,从而避免了SQL Server Management Studio(SSMS)将数据库还原到一个不存在的文件夹路径下,导致报错。

为何SQL SERVER使用sa账号登录还原数据库BAK文件失败,但是使用windows登录就可以的更多相关文章

  1. mssql server 2005还原数据库bak文件与“备份集中的数据库备份与现有的xx数据库不同”解决方法

    mssql server 2005还原数据库bak文件,网站使用虚拟主机建站会经常遇到,一般情况下,主机商有在线的管理程序,但有时候没有的话,就需要本地还原备份sql数据库了.这种情况mssql se ...

  2. SQL Server 2012 从备份中还原数据库

    1.首先把原数据库备份,检查原数据库的日志文件是否太大,如果过于大应该先收缩数据库日志 2.把备份的数据库文件在目标SQL Server还原,点击数据库,选择“还原文件或文件组” 3.如果需要修改还原 ...

  3. sql server还原数据库bak文件

    RESTORE DATABASE CCC FROM DISK = 'AAA.bak' with replace,  MOVE 'BBB' TO 'C:\Program Files\Microsoft ...

  4. SQL Server 2008 R2 下如何清理数据库日志文件

    废话不多说,直接上代码,清理后日志文件为1M USE [master] GO ALTER DATABASE [数据库名] SET RECOVERY SIMPLE WITH NO_WAIT GO ALT ...

  5. 安装SQL SERVER开启SA用户登录的方法

    家庭安装SQL SERVER开启SA用户登录的方法:(切记按照网址操作完后,最后一定要在"管理工具"的"服务"里把"SQL SERVER(MSSQL ...

  6. SQL Server差异备份的备份/还原原理

    SQL Server差异备份的备份/还原原理 记住一点:差异备份是基于最后一次完整备份的差异,而不是基于最后一次差异的差异   备份过程: 1-完整备份之后有无对数据库做过修改,如果有,记录数据库的最 ...

  7. SQL Server 2008 收缩日志 清空删除大日志文件 转载

    SQL Server 2008 收缩日志 清空删除大日志文件 由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消:(SQL2005)Ba ...

  8. sql System.Data.SqlClient.SqlError: 无法覆盖文件 'C:\Program Files\Microsoft SQL Server\MSSQL\data\itsm_Data.MDF'。数据库 'my1' 正在使用该文件的解决方案

    对数据库备份进行还原时遇到“sql System.Data.SqlClient.SqlError: 无法覆盖文件 'C:\Program Files\Microsoft SQL Server\MSSQ ...

  9. sql server 2008 express 安装的时提示“重启计算机失败"

    sql server 2008 express 安装的时提示"重启计算机失败" 解决办法: 打开注册表编辑器(regedit.exe),在HKEY_LOCAL_MACHINE\SY ...

随机推荐

  1. 理解Golang包导入

    Golang使用包(package)这种语法元素来组织源码,所有语法可见性均定义在package这个级别,与Java .python等语言相比,这算不上什么创新,但与C传统的include相比,则是显 ...

  2. C语言中求字符串的长度

    在C语言中求字符串的长度,可以使用sizeof()函数和strlen()函数,后者需要引入string.h (#include <string.h>) 因为C语言字符串是以 \0 结尾表示 ...

  3. vue-cli + element-ui + webpack 新建项目

    1.进入项目目录 2.全局安装vue-cli 输入命令:npm install vue-cli -g 若报错:ENOENT: no such file or directory, access.... ...

  4. Spring基础(8) : properties配置文件

    <context:property-placeholder location="p.properties"/> <bean id="p" cl ...

  5. Spring基础(7) : Bean的名字

    1.普通bean是用id标志,context.getBean时传入名称即可获得. <bean id="p" class="com.Person"/> ...

  6. echart 数据视图 样式重写

    来源http://blog.csdn.net/u010705091/article/details/75212724 echarts折线图的数据视图样式重写 在echarts.js中,点击折线图的数据 ...

  7. 安卓开发笔记①:利用高德地图API进行定位、开发电子围栏、天气预报、轨迹记录、搜索周边(位置)

    高德地图开发时需要导入的包在下面的网盘链接中:(由于高德地图api更新得太快,官网上最新的包使用起来没有之前的方便,所以以下提供最全面的原始包) 链接:http://pan.baidu.com/s/1 ...

  8. C# 数组 二维数组

    数组:相同数据类型的元素按一定顺序排列的集合.是一组变量 作用:操作大量数据    数组的定义1.数组里面的内容必须是同一类型2.数据必须有长度限制                           ...

  9. Linux下的SVN服务器搭建(转)

    Linux下的SVN服务器搭建   鉴于在搭建时,参考网上很多资料,网上资料在有用的同时,也坑了很多人 本文的目的,也就是想让后继之人在搭建svn服务器时不再犯错,不再被网上漫天的坑爹作品所坑害,故此 ...

  10. java中那些类是线程安全的?

    Java中各种集合(字符串类)的线程安全性!!! 一.概念: 线程安全:就是当多线程访问时,采用了加锁的机制:即当一个线程访问该类的某个数据时,会对这个数据进行保护,其他线程不能对其访问,直到该线程读 ...