none
sql server (SQLEXPRESS)服务无法启动 数据库打不开 数据库如何恢复? RRS feed

  • 问题

  • 昨晚我在我的SQL安装目录下(D:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\Data)想重命名我的某个数据库文件名,但是提示正在被使用,于是我停用所有的SQL server 服务,后来成功改掉文件名。接着重新启动服务,所有服务启动成功,唯独SQL Server (SQLEXPRESS)启动时报错,提示“sql server (SQLEXPRESS)服务无法启动 请求失败或服务为及时响应”,(注:这是在SQL server配置管理器里面停用和启动的,当在服务启动服务时,提示“错误2系统找不到指定的文件”)回头发现数据库也已经无法打开,现在吧改过名字的数据库改回原来的也没用了,请问,这样还可以回复我的数据库吗?谢谢!
    2010年7月4日 10:21

答案

  • 正确修改数据库文件名字的方法:

    USE master;
    GO
    
    -- 查询数据库的逻辑名称和物理名称
    -- 查询的结果用于替换下面的脚本中的对应名称
    SELECT
    	name, physical_name
    FROM 数据库名.sys.database_files
    ;
    
    -- offline database
    ALTER DATABASE 数据库名
    SET
    	OFFLINE
    WITH
    	ROLLBACK AFTER 0
    ;
    
    -- 修改数据库文件名 (你可以直接在操作系统资源管理器中去完成这个)
    EXEC xp_cmdshell 'rename "d:\db.mdf" "新文件名"';
    
    -- 修改数据库文件, 指向新的文件名
    ALTER DATABASE 数据库名
    MODIFY FILE(
    	NAME = N'数据文件对应的逻辑名称',
    	FILENAME = N'd:\新文件名'
    );
    
    -- 将数据库 online
    ALTER DATABASE 数据库名
    SET
    	ONLINE
    ;
    2010年7月5日 4:36

全部回复

  • 如果sqlexpress无法启动,找一个正常运行的sqlserver,然后将之前的数据库附加上去


    有dba的职位吗(北京的),请联系我 stswordman#hotmail.com
    2010年7月4日 12:38
    版主
  • 呵呵 谢谢您  不过我不是很明白你说的 能麻烦你说具体些吗 谢谢了
    2010年7月4日 14:55
  • 如果sqlexpress无法启动,找一个正常运行的sqlserver,然后将之前的数据库附加上去


    有dba的职位吗(北京的),请联系我 stswordman#hotmail.com

    呵呵 谢谢您  不过我不是很明白你说的 能麻烦你说具体些吗 谢谢了
    2010年7月4日 15:06
  • Which db file did you rename? Can you post sql server log with completed error?
    2010年7月4日 17:25
  • 建议

    1.先停止你的sql server服务,然后把数据库文件修改回原来的名称,然后在启动sql 服务。

    或者

    2.删除原来出错的数据库。重新附加数据库文件。(删除前记得把你改名的那个数据库文件备份出来)

     


    family as water
    2010年7月5日 2:05
  • 把你改掉的名字改回去不就行了吗?

    服务正常启动之后, 再按照正确的改名方法改名就行了.

    2010年7月5日 4:29
  • 正确修改数据库文件名字的方法:

    USE master;
    GO
    
    -- 查询数据库的逻辑名称和物理名称
    -- 查询的结果用于替换下面的脚本中的对应名称
    SELECT
    	name, physical_name
    FROM 数据库名.sys.database_files
    ;
    
    -- offline database
    ALTER DATABASE 数据库名
    SET
    	OFFLINE
    WITH
    	ROLLBACK AFTER 0
    ;
    
    -- 修改数据库文件名 (你可以直接在操作系统资源管理器中去完成这个)
    EXEC xp_cmdshell 'rename "d:\db.mdf" "新文件名"';
    
    -- 修改数据库文件, 指向新的文件名
    ALTER DATABASE 数据库名
    MODIFY FILE(
    	NAME = N'数据文件对应的逻辑名称',
    	FILENAME = N'd:\新文件名'
    );
    
    -- 将数据库 online
    ALTER DATABASE 数据库名
    SET
    	ONLINE
    ;
    2010年7月5日 4:36