丢失LDF文件怎么办?

来源:互联网 发布:知乎 zun的地位 编辑:程序博客网 时间:2024/05/16 19:46

如何在SQL2005EE里导入 mdf ldf  

2010-05-16 11:38:30|  分类: 服务器|字号 订阅

方法一:
在sql server 2005 数据库中,一次误操作,分离数据库后,直接将日志文件删除掉了,后进行附加出错,无法附加上去,经过如下解决方案,数据库附加成功,操作如下:
第一步:先建立一个同名数据库,停止SQL SERVER2005,将原来的.mdf数据库文件覆盖刚新建的.mdf数据库文件,重新启动数据库。
第三步:在查询分析器中运行如下代码:

alter database 你的.mdf文件名 set emergency '--将数据库设置为紧急状态

use master

declare @databasename varchar(255)

set @databasename='你的.mdf文件名' '--你的.mdf文件文件名

exec sp_dboption @databasename, N'single', N'true' --将目标数据库置为单用户状态

dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)

dbcc checkdb(@databasename,REPAIR_REBUILD)

exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态




以上代码请同时运行,可能会出现“数据库其他多个文件与数据库主文件不匹配....”错误,请多次重试执行以上代码 。

方法二:

在SQL Server Mangement Studio 里连接上数据后,选择新建查询,然后执行语句

EXEC sp_attach_db @dbname = N 'DBNAME' , ->生成一个数据库的名字

@filename1 = N 'D:\filename.mdf',

@filename1 = N 'D:\filename.ldf',

如果数据库为只读属性:

打开SQL Server Configuration Manger 打开SQL Server EXPRESS属性

把内置帐号网络服务-〉本地系统 重新启动sql server 2005 express

 

方法三:

1  、在SqlServer 2005 导入已有的数据库(*.mdf)文件 在SQL Server Management Studio里连接上数据库后,选择新建查询,然后执行语句
   EXEC sp_attach_db @dbname = N’Sql2005DB’,
    @filename1 = N’D:\Sql2000DB.mdf’,
    @filename2 = N’D:\Sql2000DB.ldf’
数据就可以导入sqlserver2005了。
2 、直接拷贝数据文件
把数据库的数据文件(*.mdf)和日志文件(*.ldf)都拷贝到目的服务器,在SQL Server Query Analyzer中用语句进行恢复:
EXEC sp_attach_db @dbname = ’test’,
@filename1 = ’d:mssql7datatest_data.mdf’,
@filename2 = ’d:mssql7datatest_log.ldf’
这样就把test数据库附加到SQL Server中,可以照常使用。如果不想用原来的日志文件,可以用如下的命令:
EXEC sp_detach_db @dbname = ’test’
EXEC sp_attach_single_file_db @dbname = ’test’,
@physname = ’d:mssql7datatest_data.mdf’
这个语句的作用是仅仅加载数据文件,日志文件可以由SQL Server数据库自动添加,但是原来的日志文件中记录的数据就丢失了。
3 、附加的方法
在SQL 2005控制台  右击“数据库” 然后选择附加。
4 、SQL2000的数据库一般就只有两个文件:MDF和一个LDF,你直接将文件加载到SQL2005去就可以了,SQL2005会自动加一些东西进去。
将数据库从SQL2000迁移到SQL2005时,无法查看关系图的解决办法
选中这个数据库,新建一个查询,输入下面的脚本:
EXEC sp_dbcmptlevel database_name, 90
USE database_name
EXEC sp_changedbowner ’sa’
其中,database_name是此数据库的名称.
运行可能需要一段时间,运行完成后,点击"关系图",刷新,应该就可以看到关系图了.
MSSQL2000 数据库文件迁移到 MSSQL2005 可能要用的一些命令2008-03-11 17:39--修改对象所有者
EXEC sp_changeobjectowner ’user_database’, ’dbo’;
exec sp_changedbowner ’sa’
--检查空用户
sp_change_users_login ’report’
--修复空用户
sp_change_users_login ’Auto_Fix’, ’mydb’, NULL, ’mydb’
--合并物理文件,删除文件,清除活动事务
--和空, 文件进行收缩数据或信息文件中运行以下 Transact-SQL 语句:
DBCC SHRINKFILE (’逻辑 < 文件名 >’, EMPTYFILE )
--要从数据库, 删除文件运行以下 Transact-SQL 语句:
ALTER DATABASE <数据库名称> REMOVE FILE <逻辑文件名>
--重命名逻辑文件
--要修改的数据文件或日志文件, 逻辑名称指定要通过使用 Name 参数, 命名逻辑文件名称, 然后通过使用 NewName 参数指定文件的新逻辑名称。 重命名该逻辑文件, 运行下列 Transact-SQL 语句:
ALTER DATABASE <数据库名称> MODIFY FILE ( NAME = <current_logical_name>, NEWNAME = <new_logical_name>)