本帖最后由 刘泽宇 于 2023-1-15 14:17 编辑
先决条件继续之前,请查看以下所有先决条件: 如果要将数据库从一个实例移到另一个实例,则必须先将数据库与任何现有 SQL 实例分离。 如果尝试附加未分离的数据库,会返回错误。 附加数据库时,数据库的所有数据文件都必须可用。 通常,对于数据文件,这些文件的扩展名为 .mdf 或 ndf;对于事务日志文件,则扩展名为 .ldf。 此外,FILESTREAM 数据的任何文件组都必须存在并且可用。 如果任何数据文件的路径不同于首次创建数据库或上次附加数据库时的路径,则必须指定文件的当前路径。 数据库引擎服务帐户必须具有读取其新位置中的文件的权限。 如果在你附加数据库时,MDF 和 LDF 文件位于不同目录,并且其中一条路径包含 \\?\GlobalRoot,则该操作将失败。
对于备份和还原,建议不要使用分离再附加操作。 分离要从 SQL Server 外部备份的文件时,没有事务日志备份或时间点还原可用。
权限需要 CREATE DATABASE、CREATE ANY DATABASE 或 ALTER ANY DATABASE 权限。 使用 SQL Server Management Studio (SSMS)移动数据库之前如果要移动数据库,请在将它与其现有 SQL Server 实例分离之前,使用“数据库属性”页查看与数据库关联的文件及其当前位置。 在SQL Server Management Studio 对象资源管理器中,连接到SQL Server数据库引擎的实例,然后展开实例。 展开 “数据库” ,并选择要分离的用户数据库的名称。 右键单击数据库名称,并选择“属性”。 选择“文件”页,并查看“数据库文件:”表中的条目。
分离、移动和附加之前,请务必考虑与数据库关联的所有文件。 然后,继续执行下一部分中的分离、文件复制和附加数据库步骤。 附加数据库在SQL Server Management Studio对象资源管理器中,连接到SQL Server数据库引擎的实例,然后选择在 SSMS 中展开该实例视图。 右键单击“数据库”,然后选择“附加”。 在“附加数据库”对话框中,若要指定要附加的数据库,请选择“添加”。 在“定位数据库文件”对话框中,选择数据库所在的位置,然后展开目录树来查找数据库的 .mdf 文件并将其选中,例如: C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\AdventureWorks2012_Data.mdf
“要附加的数据库”
显示所选数据库的有关信息。 <无列标题>
显示一个图标,用以指示附加操作的状态。 “状态”说明中介绍可能的图标。 MDF 文件位置
显示选定 MDF 文件的路径和文件名。 Database Name
显示数据库的名称。 附加为
根据需要,可以指定要附加数据库的其他名称。 所有者
提供数据库可能所有者的下拉列表,您可以根据需要从其中选择其他所有者。 Status
显示下表中相应的数据库状态:
图标 | 状态文本 | 说明 | (无图标) | (无文本) | 此对象的附加操作尚未启动或者可能挂起。 这是打开该对话框时的默认值。 | 绿色的右向三角形 | 正在进行 | 已启动附加操作,但是该操作未完成。 | 绿色的选中标记 | Success | 已成功附加该对象。 | 包含白色十字形的红色圆圈 | 错误 | 附加操作遇到错误,未成功完成。 | 包含左、右两个黑色象限和上、下两个白色象限的圆圈 | 已停止 | 由于你停止了附加操作,该操作未成功完成。 | 包含一个指向逆时针方向的曲线箭头的圆圈 | 已回滚 | 附加操作已成功,但已对其进行回滚,因为在附加其他对象的过程中出至舜砦蟆� |
消息
显示空消息或“找不到文件”超链接。 添加
查找必需的主数据库文件。 选择 .mdf 文件时,就会在“要附加的数据库”网格的相应字段中自动填充合适的信息。 删除
从 “要附加的数据库” 网格中删除选定文件。 “<database_name>”数据库详细信息
显示要附加的文件的名称。 原始文件名 显示属于数据库的已附加文件的名称。 文件类型
指示文件类型,即 “数据” 或 “日志” 。 当前文件路径
显示所选数据库文件的路径。 可以手动编辑该路径。 消息
显示空消息或 “找不到文件” 超链接。
使用 Transact-SQL移动数据库之前如果要移动数据库,请在将它与其现有 SQL Server 实例分离之前,使用 sys.database_files 系统目录视图查看与数据库关联的文件及其当前位置。 分离、移动和附加之前,请务必考虑与数据库关联的所有文件。 然后,继续执行下一部分中的分离、文件复制和附加数据库步骤。 附加数据库连接到 数据库引擎。 在标准栏上,选择“新建查询”。 将以下示例复制并粘贴到查询窗口中,然后选择“执行”。 本示例附加 AdventureWorks2019 数据库的所有文件,并将数据库重命名为 MyAdventureWorks。 CREATE DATABASE MyAdventureWorks ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'), (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf') FOR ATTACH; 你的数据库可能有其他数据文件(通常是 .mdf 或 .ndf),并且需要在 CREATE DATABASE ... FOR ATTACH 语句中包含其他文件。 此外,还必须在语句中包含 FILESTREAM 数据的任何文件组。
|