4th*_*ace 13 sql sql-server sql-server-2008
我正在尝试附加Yafnet.mdfSQL Server Management Studio,它没有日志文件.
我收到以下错误.有什么想法可以做到这一点?
执行Transact-SQL语句或批处理时发生异常.(Microsoft.SqlServer.ConnectionInfo)
无法打开物理文件"C:\ sql_logs\YAFnet_log.ldf".操作系统错误2:"2(系统找不到指定的文件.)".(Microsoft SQL Server,错误:5120)
Aar*_*and 27
对于您的初始情况,您似乎尝试过类似这样的事情(或者当您浏览对话框时GUI为您准备的任何内容):
CREATE DATABASE YAFnet ON (FILENAME = N'C:\sql_data\YAFnet.mdf')
FOR ATTACH;
Run Code Online (Sandbox Code Playgroud)
但是,此方法需要mdf文件和ldf文件.否则,您会收到类似于的错误消息:
消息5120,级别16,状态101,行1
无法打开物理文件"C:\ sql_logs\YAFnet_log.ldf".操作系统错误2:"2(系统找不到指定的文件.)".
现在,即使您只有mdf文件,也有办法继续.假设您有一个mdf与SQL Server正确分离的文件,您应该能够mdf使用以下语法附加没有日志文件的文件:
CREATE DATABASE YAFnet ON (FILENAME = N'C:\sql_data\YAFnet.mdf')
FOR ATTACH_REBUILD_LOG;
Run Code Online (Sandbox Code Playgroud)
但是,在您的情况下,似乎文件未从SQL Server中正确分离:
消息1813,级别16,状态2,行1
物理文件名"C:\ sql_logs\YAFnet_log.ldf"可能不正确.无法重建日志,因为数据库关闭时没有打开的事务/用户,数据库没有检查点,或者数据库是只读的.如果由于硬件或环境故障手动删除或丢失事务日志文件,则可能发生此错误.
有几种可能的解释,包括错误消息中提到的那些解释.也许它是从一些无效的SAN阴影中检索出来的,或者在只读时分离,或者在SQL Server或底层系统崩溃之后恢复,或者在复制/下载过程中损坏,或者谁知道还有什么.
您需要回到Yaf的支持或其服务提供商的支持,以查看是否有适当的备份,或者如果没有,则备份该mdf文件的副本.还要记住,我们都不知道Yaf是什么,或者有什么方法可以验证你在谈论哪个Yaf.
否则,好像你运气不好,因为这个特殊的mdf文件是无效的,因此不会让你走得太远.
这正是为什么分离/附加和/或O/S级文件复制方法对于SQL Server来说不是非常有用的备份(或迁移)方法的原因.您需要一个适当的备份/恢复计划,这意味着适当的完整/差异/日志备份适合您的数据丢失容忍度.分离数据库几乎总是一个低级的想法 - 当mdf分离期间或之后文件发生某些事情时,您现在拥有数据库的ZERO副本.