本主题介绍如何将分离的数据库移动到另一个位置,并将其重新附加到 SQL Server 2014 中的相同或不同的服务器实例。 但是,我们建议使用 ALTER DATABASE 计划迁移过程来移动数据库,而不是使用分离和附加操作。 有关详细信息,请参阅 移动用户数据库。
重要
建议不要从未知或不受信任的源附加或还原数据库。 此类数据库可能包含恶意代码,这些代码可能会执行非预期的 Transact-SQL 代码,或者通过修改架构或物理数据库结构导致错误。 在从未知或不受信任的源使用数据库之前,请在非生产服务器上对数据库运行 DBCC CHECKDB ,并在数据库中检查代码,例如存储过程或其他用户定义的代码。
程序
通过使用分离和附加操作来移动数据库
分离数据库。 有关详细信息,请参阅 分离数据库。
在 Windows 资源管理器或 Windows 命令提示符窗口中,将分离的数据库文件或文件和日志文件或文件移动到新位置。
注释
若要移动单文件数据库,如果文件大小足够小,以便容纳电子邮件,则可以使用电子邮件。
即使想要创建新的日志文件,也应移动日志文件。 在某些情况下,重新附加数据库需要其现有的日志文件。 因此,始终保留所有分离的日志文件,直到数据库在不需要这些文件的情况下成功连接。
注释
如果尝试附加数据库而不指定日志文件,则附加作将在其原始位置查找日志文件。 如果日志的副本仍然存在于原始位置,则会附加该副本。 若要避免使用原始日志文件,请指定新日志文件的路径或删除日志文件的原始副本(复制到新位置后)。
附加复制的文件。 有关详细信息,请参阅 Attach a Database。
示例:
连接到服务器实例的查询编辑器窗口中执行以下示例,它创建了 Transact-SQL 语句的一个副本。
拆分 Transact-SQL 语句:
USE master; GO EXEC sp_detach_db @dbname = N'AdventureWorks2012'; GO
使用所选方法将数据库文件(AdventureWorks208R2_Data.mdf和AdventureWorks208R2_log)分别复制到:C:\MySQLServer\AdventureWorks208R2_Data.mdf和 C:\MySQLServer\AdventureWorks208R2_Log.ldf。
重要
对于生产数据库,请将数据库和事务日志放在单独的磁盘上。
若要通过网络将文件复制到远程计算机上的磁盘,请使用远程位置的通用命名约定 (UNC) 名称。 UNC 名称采用 \\Servername\Sharename\Path\Filename 的格式。 与将文件写入本地硬盘一样,必须向 SQL Server 实例使用的用户帐户授予读取或写入远程磁盘上的文件所需的适当权限。
通过执行以下 Transact-SQL 语句可选地附加已移动的数据库及其日志:
USE master; GO CREATE DATABASE MyAdventureWorks ON (FILENAME = 'C:\MySQLServer\AdventureWorks2012_Data.mdf'), (FILENAME = 'C:\MySQLServer\AdventureWorks2012_Log.ldf') FOR ATTACH; GO
在 SQL Server Management Studio 中,新附加的数据库在对象资源管理器中不立即可见。 若要查看数据库,请在对象资源管理器中单击“ 视图”, 然后单击“ 刷新”。 在对象资源管理器中展开 “数据库” 节点时,新附加的数据库现在将显示在数据库列表中。