cgs*_*ari 1 sql-server-2005 sql-server-2008 sql-server
我在本地系统上创建了一个数据库。考虑数据库名称是 test。该数据库的主要文件是 test.mdf、test_log.ldf。并且也包含 ndf 文件。
然后我停止了 sql server 服务。然后将这些主文件复制到另一台服务器机器* (不是 ndf 文件)。*
现在我必须在该服务器计算机上创建一个数据库“test1”,并且必须附加这些 test.mdf 和 test_log.ldf 文件。
在主数据库上创建数据库 test1 ( file name='C:\test.mdf'), ( file name='C:\test_log.ldf') 用于附加 go
这个查询在服务器机器上执行。它说错误为 """ Msg 5120, Level 16, State 5, Line 1 Unable to open the physical file "D:\data\ExistTable\FG1_lt_4000.ndf". 操作系统错误 2: "2(系统找不到指定的文件。)”。
消息 5120,级别 16,状态 5,第 1 行无法打开物理文件“D:\data\ExistTable\FG2_4000_8000.ndf”。操作系统错误 2:“2(系统找不到指定的文件。)”。
消息 5120,级别 16,状态 5,第 1 行无法打开物理文件“D:\data\ExistTable\FG3_8000_inf.ndf”。操作系统错误 2:“2(系统找不到指定的文件。)”。
消息 1813,级别 16,状态 2,第 1 行无法打开新数据库“测试”。CREATE DATABASE 已中止。"""
现在该怎么办???
Aar*_*and 11
那么,你有没有尝试过:
create database test1 on primary
( filename='C:\test.mdf'),
( filename='C:\FG1_lt_4000.ndf'),
( filename='C:\FG2_4000_8000.ndf'),
( filename='C:\FG3_8000_inf.ndf'),
( filename='C:\test_log.ldf')
for attach;
Run Code Online (Sandbox Code Playgroud)
是的,您也需要复制 ndf 文件。这些是数据库的关键部分,而不是垃圾。
否则,请返回到您的原始服务器,进行备份,然后在新服务器上通过移动进行还原。
(不是 ndf 文件)。
这就是你的问题。MDF 包含构成数据库的所有文件(及其位置)的列表。如果缺少单个文件,那么您就没有整个数据库,也不能只附加原始数据库的一个片段。您需要复制所有文件,包括 NDF 和您可能拥有的任何辅助 LDF。所有的文件。然后再次尝试附加,指定所有片段(MDF、NDF、LDF)。
但是,正如 Aaron 已经指出的那样,已经有更好的方法来做到这一点。进行备份,然后用MOVE 恢复:
restore database test1 from disk='...'
with move 'test' to '...',
move 'fg1' to '...',
move 'fg2' to '...',
...
move 'test_log' to '...';
Run Code Online (Sandbox Code Playgroud)
要查看备份文件使用的内容,RESTORE FILELIST ONLY
您将确切知道在还原期间要移动哪些文件。不指定 WITH MOVE 将尝试在与本地数据库机器上完全相同的驱动器/目录中恢复文件。
归档时间: |
|
查看次数: |
7679 次 |
最近记录: |