我收到以下错误.有什么想法可以怎么做?
An exception occurred while executing a Transact-sql statement or batch.
(Microsoft.sqlServer.ConnectionInfo)Unable to open the physical file “C:\sql_logs\YAFnet_log.ldf”. Operating system
error 2: “2(The system cannot find the file specified.)”.
(Microsoft sql Server,Error: 5120)
解决方法
CREATE DATABASE YAFnet ON (FILENAME = N'C:\sql_data\YAFnet.mdf') FOR ATTACH;
但是,该方法同时需要一个mdf文件和一个ldf文件.否则您会收到类似于以下错误消息:
Msg 5120,Level 16,State 101,Line 1
Unable to open the physical file “C:\sql_logs\YAFnet_log.ldf”. Operating system error 2: “2(The system cannot find the file specified.)”.
现在,即使你只有mdf文件,还有一种方法可以继续.假设您有一个正确从sql Server分离的mdf文件,您应该可以使用以下语法附加没有日志文件的mdf文件:
CREATE DATABASE YAFnet ON (FILENAME = N'C:\sql_data\YAFnet.mdf') FOR ATTACH_REBUILD_LOG;
但是,在您的情况下,该文件与sql Server没有正确分离:
Msg 1813,State 2,Line 1
The physical file name “C:\sql_logs\YAFnet_log.ldf” may be incorrect. The log cannot be rebuilt because there were open transactions/users when the database was shutdown,no checkpoint occurred to the database,or the database was read-only. This error could occur if the transaction log file was manually deleted or lost due to a hardware or environment failure.
有几种可能的解释,包括错误信息中提到的解释.也许是从一些无效的SAN阴影中检索到的,或者在只读时分离,或在sql Server或底层系统崩溃后恢复,或者在复制/下载期间被破坏,或者谁知道还有什么.
您将需要返回Yaf的支持或其服务提供商的支持,以查看是否提供了适当的备份,或者是否存在mdf文件的备用副本.还要记住,我们中没有一个人真的知道Yaf是或有什么办法来验证你说的是什么Yaf.
否则,似乎你没有运气,因为这个特定的mdf文件是无效的,因此不会让你很远.
这正是为什么分离/附加和/或O / S级别文件复制方法对于sql Server不是非常有用的备份(或迁移)的方法.您需要一个适当的备份/恢复计划,这意味着适当的完整/差异/日志备份适合您的数据丢失容限.分离数据库几乎总是一个较差的想法 – 当分离过程中或之后的mdf文件出现某些情况时,您现在有数据库的零拷贝.