附加和分离数据库
附加和分离数据库
Microsoft® SQL Server™ 2000 允许分离数据库的数据和事务日志文件,然后将其重新附加到另一台服务器,甚至同一台服务器上。分离数据库将从 SQL Server 删除数据库,但是保持在组成该数据库的数据和事务日志文件中的数据库完好无损。然后这些数据和事务日志文件可以用来将数据库附加到任何 SQL Server 实例上,包括从中分离该数据库的服务器。这使数据库的使用状态与它分离时的状态完全相同。
如果想按以下方式移动数据库,则分离和附加数据库很有用:
1. 从一台计算机移到另一台计算机,而不必重新创建数据库,然后手动还原数据库备份。
2. 移到另一物理磁盘上,例如,当包含该数据库文件的磁盘空间已用完,您希望扩充现有的文件而又不愿将新文件添加到其它磁盘上的数据库。
将数据库或数据库文件移动到另一服务器或磁盘:
1. 分离数据库。
2.将数据库文件移到另一服务器或磁盘。
3.通过指定移动文件的新位置附加数据库。
当附加在数据库上时,必须指定主数据文件的名称和物理位置。主文件包含查找由数据库组成的其它文件所需的信息,除非自分离了数据库后那些文件中的一个或多个已改变了位置。除主文件外,还必须指出其它任何已改变位置的文件。否则,SQL Server 将试图基于存储在主文件中的不正确的文件位置信息附加文件,且不能成功附加数据库。
如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库用于复制,则应运行 sp_removedbreplication 从数据库中删除复制。或者,可以在分离数据库之前从数据库中删除复制。
分离数据库时所产生的错误可能会防碍干净地关闭数据库和重建事务日志。如果收到错误信息,请执行下列操作以纠正错误:
1. 重新附加所有与数据库相关联的文件,而不仅是主文件。
2. 解决导致错误信息的问题。
3. 再次分离数据库。
示例 B 创建一个包含下列物理文件的名为 Archive 的数据库:
c:\program files\microsoft sql server\mssql\data\archdat1.mdf
c:\program files\microsoft sql server\mssql\data\archdat2.ndf
c:\program files\microsoft sql server\mssql\data\archdat3.ndf
c:\program files\microsoft sql server\mssql\data\archlog1.ldf
c:\program files\microsoft sql server\mssql\data\archlog2.ldf
可以使用 sp_detach_db 存储过程分离该数据库,然后使用带有 FOR ATTACH 子句的 CREATE DATABASE 重新附加。
--使用 sp_detach_db 存储过程分离该数据库
sp_detach_db Archive
GO
--使用带有 FOR ATTACH 子句的 CREATE DATABASE 重新附加
CREATE DATABASE Archive
ON PRIMARY (FILENAME = 'c:\program files\microsoft sql server\mssql\data\archdat1.mdf')
FOR ATTACH
GO
Microsoft® SQL Server™ 2000 允许分离数据库的数据和事务日志文件,然后将其重新附加到另一台服务器,甚至同一台服务器上。分离数据库将从 SQL Server 删除数据库,但是保持在组成该数据库的数据和事务日志文件中的数据库完好无损。然后这些数据和事务日志文件可以用来将数据库附加到任何 SQL Server 实例上,包括从中分离该数据库的服务器。这使数据库的使用状态与它分离时的状态完全相同。
如果想按以下方式移动数据库,则分离和附加数据库很有用:
1. 从一台计算机移到另一台计算机,而不必重新创建数据库,然后手动还原数据库备份。
2. 移到另一物理磁盘上,例如,当包含该数据库文件的磁盘空间已用完,您希望扩充现有的文件而又不愿将新文件添加到其它磁盘上的数据库。
将数据库或数据库文件移动到另一服务器或磁盘:
1. 分离数据库。
2.将数据库文件移到另一服务器或磁盘。
3.通过指定移动文件的新位置附加数据库。
当附加在数据库上时,必须指定主数据文件的名称和物理位置。主文件包含查找由数据库组成的其它文件所需的信息,除非自分离了数据库后那些文件中的一个或多个已改变了位置。除主文件外,还必须指出其它任何已改变位置的文件。否则,SQL Server 将试图基于存储在主文件中的不正确的文件位置信息附加文件,且不能成功附加数据库。
如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库用于复制,则应运行 sp_removedbreplication 从数据库中删除复制。或者,可以在分离数据库之前从数据库中删除复制。
分离数据库时所产生的错误可能会防碍干净地关闭数据库和重建事务日志。如果收到错误信息,请执行下列操作以纠正错误:
1. 重新附加所有与数据库相关联的文件,而不仅是主文件。
2. 解决导致错误信息的问题。
3. 再次分离数据库。
示例 B 创建一个包含下列物理文件的名为 Archive 的数据库:
c:\program files\microsoft sql server\mssql\data\archdat1.mdf
c:\program files\microsoft sql server\mssql\data\archdat2.ndf
c:\program files\microsoft sql server\mssql\data\archdat3.ndf
c:\program files\microsoft sql server\mssql\data\archlog1.ldf
c:\program files\microsoft sql server\mssql\data\archlog2.ldf
可以使用 sp_detach_db 存储过程分离该数据库,然后使用带有 FOR ATTACH 子句的 CREATE DATABASE 重新附加。
--使用 sp_detach_db 存储过程分离该数据库
sp_detach_db Archive
GO
--使用带有 FOR ATTACH 子句的 CREATE DATABASE 重新附加
CREATE DATABASE Archive
ON PRIMARY (FILENAME = 'c:\program files\microsoft sql server\mssql\data\archdat1.mdf')
FOR ATTACH
GO