SQLSERVER数据库备份后无法还原的解决办法_MsSql

有时候完全备份, 当还原的时候说不时数据库文件不让还原, 解决办法:
可以直接复制数据库文件, xxx.mdf 和 xxx.ldf (实际复制过程中需要先停止sqlserver服务才可以)

用 sp_attach_db 存储过程 就能搞定.

示例
下面的示例将 pubs 中的两个文件附加到当前服务器。

EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'

N表示Unicode的含义,就象类型中有varchar和nvarchar一样,一个Unicode字符占两个字节.使用N'的情况主要是在双字节系统环境中强制系统对每个字符用Unicode标准来解释,否则如果你的数据库.mdf文件是中文名而又不加N'的话,数据库加载后名称可能就变成乱码,因为系统按单字节处理字符造成!

............................................................

如果确认是SQL SERVER无法启动,请按照下面步骤操作:
1.重装SQL SERVER(注意要保留原来数据库的数据库文件,日志文件可不要)
2.在SQL Analysis中用sp_attach_db将数据库加到服务器

sp_attach_db用法:
sp_attach_db
将数据库附加到服务器。

语法
sp_attach_db [ @dbname = ] 'dbname'
, [ @filename1 = ] 'filename_n' [ ,...16 ]

参数
[@dbname =] 'dbname'

要附加到服务器的数据库的名称。该名称必须是唯一的。dbname 的数据类型为 sysname,默认值为 NULL。

[@filename1 =] 'filename_n'

数据库文件的物理名称,包括路径。filename_n 的数据类型为 nvarchar(260),默认值为 NULL。最多可以指定 16 个文件名。参数名称以 @filename1 开始,递增到 @filename16。文件名列表至少必须包括主文件,主文件包含指向数据库中其它文件的系统表。该列表还必须包括数据库分离后所有被移动的文件。

返回代码值
0(成功)或 1(失败)

结果集

注释
只应对以前使用显式 sp_detach_db 操作从数据库服务器分离的数据库执行 sp_attach_db。如果必须指定多于 16 个文件,请使用带有 FOR ATTACH 子句的 CREATE DATABASE。

如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应该运行 sp_removedbreplication 从数据库删除复制。

权限
只有 sysadmin 和 dbcreator 固定服务器角色的成员才能执行本过程。

时间: 2024-12-05 08:59:57

SQLSERVER数据库备份后无法还原的解决办法_MsSql的相关文章

SQLSERVER数据库备份后无法还原的解决办法

有时候为了考虑数据安全我们都会备份数据库,sqlserver的备份格式一般都是bak结尾的,但覆盖时容易出问题,这里简单介绍下,需要的朋友可以参考下   有时候完全备份, 当还原的时候说不时数据库文件不让还原, 解决办法: 可以直接复制数据库文件, xxx.mdf 和 xxx.ldf (实际复制过程中需要先停止sqlserver服务才可以) 用 sp_attach_db 存储过程 就能搞定. 示例 下面的示例将 pubs 中的两个文件附加到当前服务器. EXEC sp_attach_db @db

91助手备份后无法还原联系人和短信解决办法

  91助手备份后无法还原联系人和短信解决办法.现在,不少人都在使用91助手这个软件.有些用户在进行备份后,却发现无法还原联系人和短信.那么,91助手备份后无法还原联系人和短信怎么办?一起来看看91助手备份后无法还原联系人和短信解决办法吧. [联系人] 1.打开助手--功能大全-联络人管理-导入导出(将备份的联系人文件单独导入) 91助手 2.如果不能导入请确认以下两点 a.确认备份文件的大小,如果文件大小为0,说明之前的备份是没有成功无法还原. b.如果有内容请将备份的文件发送给技术人员处理.

java-关于Java接数据库所出现的问题及解决办法

问题描述 关于Java接数据库所出现的问题及解决办法 小白一个,Java链接数据库过程中经常会出错,想问一下各位有遇到的什么问题以及解决办法吗? 解决方案 你自己写一个连接数据库的 如果正确的话就保留下来 以后如果还需要就可以直接用 当然如果报错的话 你就需要改代码 直到你的代码正确就可以 百度 谷歌 解决方案二: 开发时间长了,就总结出来了! 解决方案三: java链接数据库:http://blog.csdn.net/qq_19558705/article/details/49947317 遇

线程-关于Win32核心编程中DLL注入后无反应的解决办法

问题描述 关于Win32核心编程中DLL注入后无反应的解决办法 #include #include HINSTANCE hProcess; PWSTR pszLibFileRemote; HINSTANCE hThread; void StartInject(int ProcessID, char * DllName); void OverInject(char * DllName); void EnableDebugPrivilege(HANDLE processHandle); int ma

SQLServer数据库备份及还原策略解析

a.数据丢失的原因: 程序错误 人为错误 计算机错误 磁盘失败 灾难(如火灾,地震)和偷窃 b.什么是备份 备份即建立数据的副本 用于在系统发生故障后还原和恢复数据 文件复制不等于备份 c.备份类型 完全备份:备份完成时刻的数据库提供了任何其他备份的基准 差异备份:事先已执行过一次完全备份,对上一次完全备份之后所有的更改的数据做备份 事务日志备份:事先已执行过一次完全备份,从上一次事务日志备份或者完全备份到当前事务日志的尾部截断已确认的事务日志的备份. 文件或文件组备份 d.SQL Server

解决SQL SERVER数据库备份时出现“操作系统错误5(拒绝访问)。BACKUP DATABASE 正在异常终止。”错误的解决办法_MsSql

SQL SERVER数据库进行备份时出现"操作系统错误5(拒绝访问).BACKUP DATABASE 正在异常终止."错误.我们应该如何解决这个问题?小编今天为大家推荐一个解决办法. 一般备份文件选择的目录为磁盘根目录或备份所选分区未授予sqlserver用户读写权限时会出现此错误. 解决办法就是给sqlserver用户授予权限:    选择要备份的文件夹 ,右键-->属性-->安全-->看下"组或用户"是否包涵Authenticated User

sqlserver 此数据库没有有效所有者错误的解决方法_MsSql

某一天,在调试程序时突然发现,在附加数据库后,想添加关系表,结果出来了下面的错误: 此数据库没有有效所有者,因此无法安装数据库关系图支持对象.若要继续,请首先使用"数据库属性"对话框的"文件"页或Alter AUTHORIZATION语句将数据库所有者设置为有效登录名,然后再添加数据库关系图支持对象. 按照第一种方式更改怎么也不行,并且文件的所有者也是sa.在csdn中找了半天,有个同志给出了第二种解法,使用ssms.具体在SSMS中运行以下命令: Alter AU

sqlserver数据库备份实现方法

进入sql Server,选择管理-维护计划,右击"维护计划",找到"新建维护计划"并选择.   2.看到"新建维护计划"可以默认或者修改名称,点击"确定"按钮:   3.看到如下图:在右侧选择"计划"选项卡,选择右侧的 按钮.   4.在"频率"选项卡中, 选择"每天" , 执行一次,时间为:这个参数可以修改为合适的时间.至此,点击"确定"按钮.

php mysql数据库备份与数据还原类

 /**   * 说明,该类适用于小型的网站的数据库备份,内置mysql连接,只需要简单配置数据连接   * 及存贮备份的位置即可.   * 类实列化并且连接数据库以后可执行以下操作   * get_db_table($database)    取得所有数据表   * export_sql($table,$subsection=0))   生成sql文件,注意生成sql文件只保存到服务器目录,不提供下载   * import_sql($dir)     恢复数据只导入服务器目录下的sql文件