請教:有關SQLSERVER2005日誌文件刪除問題

kslynn 2008-06-18 11:21:18
我有一SQL2005數據庫,我將之分離,分離時勾選了刪除現有連接選項,刪除其日誌文件,再附加時不能附加.
於是我新建了一個同名的數據庫,將數據庫停止,用舊數據文件覆蓋目前的數據文件,然後啟動.
然後執行代碼:
USE MASTER
Go
SP_CONFIGURE 'ALLOW UPDATES', 1
GO
RECONFIGURE WITH OVERRIDE
Go
ALTER DATABASE TT SET EMERGENCY
GO
ALTER DATABASE TT SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
DBCC CHECKDB('TT', REPAIR_ALLOW_DATA_LOSS)
GO
結果執行到最後一行時顯示:
訊息 922,層級 14,狀態 1,行 2
資料庫 'TT' 正在復原。請等候復原完成。
/**********************************************************/
不知如何才可以將數據庫挽救回來?
求高手指教.不勝感激...
...全文
192 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
M1CR0S0FT 2008-06-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 arlin_hou 的回复:]
與數據文件個數多少有無關係?
刪除前我有四個數據文件,二個日誌文件.
新建是否也需要用四個數件文件,二個日誌文件?
[/Quote]

--联机帮助

To attach a database
CREATE DATABASE database_name
ON <filespec> [ ,...n ]
FOR { ATTACH [ WITH <service_broker_option> ]
| ATTACH_REBUILD_LOG }
[;]

FOR ATTACH_REBUILD_LOG
指定通过附加一组现有的操作系统文件来创建数据库。该选项只限于读/写数据库。如果缺少一个或多个事务日志文件,将重新生成日志文件。必须有一个指定主文件的 <filespec> 项。

注意:
如果日志文件可用,数据库引擎将使用这些文件,而不会重新生成日志文件。



FOR ATTACH_REBUILD_LOG 具有以下要求:

完全关闭数据库。


所有数据文件(MDF 和 NDF)都必须可用。


重要提示:
该操作会中断日志备份链。建议在完成该操作后执行完整数据库备份。有关详细信息,请参阅 BACKUP (Transact-SQL)。



通常,FOR ATTACH_REBUILD_LOG 用于将具有大型日志的可读/写数据库复制到另一台服务器,在这台服务器上,数据库副本频繁使用,或仅用于读操作,因而所需的日志空间少于原始数据库。

不能对数据库快照指定 FOR ATTACH_REBUILD_LOG。

懒牛科技 2008-06-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 happyflystone 的回复:]
反复  启动几次,

如果不行,去修改数据状态  看看
[/Quote]
cassie_2008 2008-06-21
  • 打赏
  • 举报
回复
SQL日志文件被删除是很危险的事情.
不过,万一日志被删除,保留有数据文件,是可以依据数据文件产生日志文件的
SQL2000中可以使用DBCC REBUILD命令.
SQL2005中可以使用CREATE DATABASE命令附加数据文件,同时产生日志文件

假定数据库名为DBName, 数据文件位置为 StrDBFile, 逻辑名为 LogicDBName
语法如下:

CREATE DATABASE DBName
ON (NAME=LogicDBName, FILENAME=StrDBFile)
FOR ATTACH_REBUILD_LOG

如果有多个数据文件, 可以在ON括号后面继续添加定义
-狙击手- 2008-06-19
  • 打赏
  • 举报
回复
反复 启动几次,

如果不行,去修改数据状态 看看
kslynn 2008-06-19
  • 打赏
  • 举报
回复
與數據文件個數多少有無關係?
刪除前我有四個數據文件,二個日誌文件.
新建是否也需要用四個數件文件,二個日誌文件?
liangCK 2008-06-18
  • 打赏
  • 举报
回复
USE master;
GO
sp_detach_db Archive;
GO
-- Get the SQL Server data path
DECLARE @data_path nvarchar(256);
SET @data_path = (SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
FROM master.sys.master_files
WHERE database_id = 1 AND file_id = 1);
-- Execute CREATE DATABASE FOR ATTACH statement
EXEC ('CREATE DATABASE Archive
ON (FILENAME = '''+ @data_path + 'archdat1.mdf'')
FOR ATTACH');
GO
liangCK 2008-06-18
  • 打赏
  • 举报
回复
USE master;
GO
EXEC sp_detach_db @dbname = 'AdventureWorks';
EXEC sp_attach_single_file_db @dbname = 'AdventureWorks',
@physname = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf';
liangCK 2008-06-18
  • 打赏
  • 举报
回复
create database 库名
on
(name='逻辑名',
filename='mdf路径'
)
for attach

22,301

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧