输入用户名和密码,先登录数据库
找到无法还原的数据库,右键-属性
数据库属性页面,点击左侧的‘选项’
点开状态,找到限制访问,修改选择值,把原来的multi_user,改成single_user,点击确定,保存修改
修改保存后,刷新数据库列表,可以看到该数据库后面已经显示‘单个用户’
这个时候,在重新还原数据库,应该就可以成功了
有2个方法:
1、进行像你所说的拿旧的备份在别的机器上进行全库恢复,然后再将那个删的表导出再导进服务器。
2、如果你的数据库有保留有数据库日志的,则可以这样恢复:
用日志工具Log Explorer
步骤:
1、查看日志
a、打开log explorer,选择菜单File--> attach log file
b、在Log File Selection窗口中,填写连接到要恢复数据的数据库服务器机器名、数据库登录ID及密码,然后点击"Connect"按钮。
c、若连接成功,则窗口左边树将显示命令菜单,这时我们点击Browser下的View Log命令,此时窗口右边则出现该数据库的Log。
2、恢复数据库
这时您只要选择您要恢复对事件点,右键点击选择"undo transation"命令,保存T-SQL代码,然后在查询分析器中执行该T-SQL代码
Log Explorer
>
此文是Sql Server实用 *** 作小技巧集合 包括安装时提示有挂起的 *** 作 收缩数据库 压缩数据库 转移数据库给新用户以已存在用户权限 检查备份集 修复数据库等 (一)挂起 *** 作 在安装Sql或sp补丁的时候系统提示之前有挂起的安装 *** 作 要求重启 这里往往重启无用 解决办法 到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager删除PendingFileRenameOperations (二)收缩数据库 重建索引DBCC REINDEXDBCC INDEXDEFRAG 收缩数据和日志DBCC SHRINKDBDBCC SHRINKFILE (三)压缩数据库 dbcc shrinkdatabase(dbname) (四)转移数据库给新用户以已存在用户权限 exec sp_change_users_login update_one newname oldname go (五)检查备份集 RESTORE VERIFYONLY from disk= E:\dvbbs bak (六)修复数据库 ALTER DATABASE [dvbbs] SET SINGLE_USERGODBCC CHECKDB( dvbbs repair_allow_data_loss) WITH TABLOCKGOALTER DATABASE [dvbbs] SET MULTI_USERGO CHECKDB 有 个参数: REPAIR_ALLOW_DATA_LOSS执行由 REPAIR_REBUILD 完成的所有修复 包括对行和页进行分配和取消分配以改正分配错误 结构行或页的错误 以及删除已损坏的文本对象 这些修复可能会导致一些数据丢失 修复 *** 作可以在用户事务下完成以允许用户回滚所做的更改 如果回滚修复 则数据库仍会含有错误 应该从备份进行恢复 如果由于所提供修复等级的缘故遗漏某个错误的修复 则将遗漏任何取决于该修复的修复 修复完成后 备份数据库 REPAIR_FAST 进行小的 不耗时的修复 *** 作 如修复非聚集索引中的附加键 这些修复可以很快完成 并且不会有丢失数据的危险 REPAIR_REBUILD 执行由 REPAIR_FAST 完成的所有修复 包括需要较长时间的修复(如重建索引) 执行这些修复时不会有丢失数据的危险 DBCC CHECKDB( dvbbs ) with NO_INFOMSGS PHYSICAL_ONLY SQL SERVER日志清除的两种方法 在使用过程中大家经常碰到数据库日志非常大的情况 在这里介绍了两种处理方法…… 方法一 一般情况下 SQL数据库的收缩并不能很大程度上减小数据库大小 其主要作用是收缩日志大小 应当定期进行此 *** 作以免数据库日志过大 设置数据库模式为简单模式 打开SQL企业管理器 在控制台根目录中依次点开Microsoft SQL Server >SQL Server组 >双击打开你的服务器 >双击打开数据库目录 >选择你的数据库名称(如论坛数据库Forum) >然后点击右键选择属性 >选择选项 >在故障还原的模式中选择 简单 然后按确定保存 在当前数据库上点右键 看所有任务中的收缩数据库 一般里面的默认设置不用调整 直接点确定 收缩数据库完成后 建议将您的数据库属性重新设置为标准模式 *** 作方法同第一点 因为日志在一些异常情况下往往是恢复数据库的重要依据 方法二 SET NOCOUNT ONDECLARE @LogicalFileName sysname @MaxMinutes INT @NewSize INTUSE tablename 要 *** 作的数据库名SELECT @LogicalFileName = tablename_log 日志文件名@MaxMinutes = Limit on time allowed to wrap log @NewSize = 你想设定的日志文件的大小(M) Setup / initializeDECLARE @OriginalSize intSELECT @OriginalSize = sizeFROM sysfilesWHERE name = @LogicalFileNameSELECT Original Size of + db_name() + LOG is +CONVERT(VARCHAR( ) @OriginalSize) + K pages or +CONVERT(VARCHAR( ) (@OriginalSize / )) + MB FROM sysfilesWHERE name = @LogicalFileNameCREATE TABLE DummyTrans(DummyColumn char ( ) not null)DECLARE @Counter INT @StartTime DATETIME @TruncLog VARCHAR( )SELECT @StartTime = GETDATE() @TruncLog = BACKUP LOG + db_name() + WITH TRUNCATE_ONLY DBCC SHRINKFILE (@LogicalFileName @NewSize)EXEC (@TruncLog) Wrap the log if necessary WHILE @MaxMinutes > DATEDIFF (mi @StartTime GETDATE()) time has not expiredAND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)AND (@OriginalSize / ) > @NewSizeBEGIN Outer loop SELECT @Counter = WHILE ((@Counter < @OriginalSize / ) AND (@Counter < ))BEGIN updateINSERT DummyTrans VALUES ( Fill Log )DELETE DummyTransSELECT @Counter = @Counter + ENDEXEC (@TruncLog)ENDSELECT Final Size of + db_name() + LOG is +CONVERT(VARCHAR( ) size) + K pages or +CONVERT(VARCHAR( ) (size / )) + MB FROM sysfilesWHERE name = @LogicalFileNameDROP TABLE DummyTransSET NOCOUNT OFF lishixinzhi/Article/program/SQLServer/201311/22232
将原来的数据库文件删除,将备份中的数据库文件拷到相对路径下
使用with
move选项
RESTORE
DATABASE
A
FROM
DISK
=
N'D:\B'
with
RECOVERY,
NOUNLOAD,
REPLACE,
STATS
=
10
,
MOVE
'数据库逻辑名'
TO
'数据库A的完整路径+数据文件名mdf',
MOVE
'日志逻辑名'
TO
'数据库A的完整路径+日志文件名ldf'
另外使用restore命令恢复数据库,一般不必先创建要恢复的数据库,可以直接从备份里恢复出来。
或者右键
Attach你的备份也可以。
检查一下你的数据库连接字符串,如果你恢复了你的数据库并且数据库正常的话,那就是你程序配置的问题了
数据库恢复:
1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server
2、SQL Server组--双击打开你的服务器--点图标栏的新建数据库图标,新建数据库的名字自行取
3、点击新建好的数据库名称--然后点上面菜单中的工具--选择恢复数据库
4、在d出来的窗口中的还原选项中选择从设备--点选择设备--点添加--然后选择你的备份文件名--添加后点确定返回,这时候设备栏应该出现您刚才选择的数据库备份文件名,备份号默认为1(如果您对同一个文件做过多次备份,可以点击备份号旁边的查看内容,在复选框中选择最新的一次备份后点确定)--然后点击上方常规旁边的选项按钮
5、在出现的窗口中选择在现有数据库上强制还原,以及在恢复完成状态中选择使数据库可以继续运行但无法还原其它事务日志的选项。在窗口的中间部位的将数据库文件还原为这里要按照你SQL的安装进行设置(也可以指定自己的目录),逻辑文件名不需要改动,移至物理文件名要根据你所恢复的机器情况做改动,如您的SQL数据库装在D:\Program Files\Microsoft SQL Server\MSSQL\Data,那么就按照您恢复机器的目录进行相关改动改动,并且最后的文件名最好改成您当前的数据库名(如原来是zw0001mdf,现在的数据库是zw0002,就改成zw0002mdf),日志和数据文件都要按照这样的方式做相关的改动(日志的文件名是ldf结尾的),这里的恢复目录您可以自由设置,前提是该目录必须存在(如您可以指定d:\sqldata\zw0002mdf或者d:\sqldata\zw0002ldf),否则恢复将报错
6、修改完成后,点击下面的确定进行恢复,这时会出现一个进度条,提示恢复的进度,恢复完成后系统会自动提示成功,如中间提示报错,请记录下相关的错误内容并询问对SQL *** 作比较熟悉的人员,一般的错误无非是目录错误或者文件名重复或者文件名错误或者空间不够或者数据库正在使用中的错误,数据库正在使用的错误您可以尝试关闭所有关于SQL窗口然后重新打开进行恢复 *** 作,如果还提示正在使用的错误可以将SQL服务停止然后重起看看,至于上述其它的错误一般都能按照错误内容做相应改动后即可恢复
如果备份的数据库有 个文件 分别是 LDF 和 MDF 打开企业管理器 在实例上右击 所有任务 附加数据库 然后选择那个 MDF文件 就可以了
或者在查询分析器中输入
sp_attach_db 数据库名称 路径\文件名 ldf 路径\文件名 MDF
SQL Server数据库备份有两种方式 一种是使用BACKUP DATABASE将数据库文件备份出去 另外一种就是直接拷贝数据库文件mdf和日志文件ldf的方式 下面将主要讨论一下后者的备份与恢复 本文假定您能熟练使用SQL Server Enterprise Manager(SQL Server企业管理器)和SQL Server Quwey Analyser(SQL Server查询分析器)
正常的备份 恢复方式
正常方式下 我们要备份一个数据库 首先要先将该数据库从运行的数据服务器中断开 或者停掉整个数据库服务器 然后复制文件
卸下数据库的命令 Sp_detach_db 数据库名
连接数据库的命令 Sp_attach_db或者sp_attach_single_file_db
s_attach_db [@dbname =] dbname [@filename =] filename_n [ ]
sp_attach_single_file_db [@dbname =] dbname [@physname =] physical_name
使用此方法可以正确恢复SQL Sever 和SQL Server 的数据库文件 要点是备份的时候一定要将mdf和ldf两个文件都备份下来 mdf文件是数据库数据文件 ldf是数据库日志文件
例子
假设数据库为test 其数据文件为test_data mdf 日志文件为test_log ldf 下面我们讨论一下如何备份 恢复该数据库
卸下数据库 sp_detach_db test
连接数据库 sp_attach_db test C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data mdf C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log ldf
sp_attach_single_file_db test C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_data mdf
// 本文转自 C++Builder 研究 // ccrun /article aspi= &d=oxit
只有mdf文件的恢复技术
由于种种原因 我们如果当时仅仅备份了mdf文件 那么恢复起来就是一件很麻烦的事情了
如果您的mdf文件是当前数据库产生的 那么很侥幸 也许你使用sp_attach_db或者sp_attach_single_file_db可以恢复数据库 但是会出现类似下面的提示信息
设备激活错误 物理文件名 C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log LDF 可能有误
已创建名为 C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_log LDF 的新日志文件
但是 如果您的数据库文件是从其他计算机上复制过来的 那么很不幸 也许上述办法就行不通了 你也许会得到类似下面的错误信息
服务器: 消息 级别 状态 行
未能打开新数据库 test CREATE DATABASE 将终止
设备激活错误 物理文件名 d:\test_log LDF 可能有误
lishixinzhi/Article/program/SQL/201311/16353
以上就是关于sqlserver2012数据库提示正在还原和停止(sql2008数据库显示正在恢复)全部的内容,包括:sqlserver2012数据库提示正在还原和停止(sql2008数据库显示正在恢复)、SQL Server 2000数据库恢复、SQL Server实用经验技巧集(1)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)