如果想要在同一 Microsoft SQL Server 实例中将一个地理数据库的内容移动到另一个数据库,可以创建第二个地理数据库并移动数据。如果想要将地理数据库移动到新的 SQL Server 实例中,可以通过 SQL Server 使用几个可用选项之一移动整个数据库。
将数据移动至同一 SQL Server 实例中的另一个地理数据库
同一 SQL Server 实例中的数据库和地理数据库名称必须唯一;因此,如果想要在同一实例中将数据移动到不同的地理数据库,请在实例中创建另一个地理数据库,然后将现有数据移动到新的地理数据库。可使用“导出”工具、使用“提取数据”向导或使用 XML 工作空间文档,通过复制和粘贴在 ArcGIS 中移动数据。
请注意,在将数据加载到新的地理数据库时登录的用户将成为数据的所有者。如果希望在新的地理数据库中该数据仍归同一用户所有,则应使每个用户都移动自己的数据。
将数据库移动到新的 SQL Server 实例中
如果想要将地理数据库移动到新的 SQL Server 实例中,可使用 SQL Server 工具移动整个数据库。移动 SQL Server 数据库的选项包括:从 SQL Server 实例中分离数据库文件并将其附加到新的实例中、创建数据库备份并还原到新的 SQL Server 实例中,或者使用“复制数据库”向导。
无论使用哪种方法移动 SQL Server 数据库,都不能对数据库重命名。例如,在还原数据库时,您可以用其他名称来还原数据库。但建议您不要对地理数据库进行这种操作;否则将无法与其建立连接。
地理数据库系统表中的所有对象名称都是通过数据库名称进行完全限定的。此外,许多存储过程在其代码中使用三部分命名语法,其格式为 <数据库>.<所有者>.<对象>。如果数据库名称发生了更改,您将无法执行此类过程。
使用分离和附加操作
要移动内部 SQL Server 数据库中存储的地理数据库,最简便的方法就是将数据库从源服务器中分离,然后将其附加到目标服务器。请记住以下几点:
- 分离时,任何用户都不能连接到该数据库。
- 分离操作会将数据库彻底关闭。
- 分离/附加操作比数据库备份和还原操作要快。
- 分离/附加操作将会在源服务器和目标服务器上创建相同的数据库。
- 该方法适合移动大量的数据。
- 要从 SQL Server 实例中分离数据库,必须至少对该数据库拥有 db_owner 权限。
- 必须拥有 CREATE DATABASE 权限才能将数据库附加到 SQL Server 实例。
- 对于 SQL Server 的企业级地理数据库,您可使用 CREATE DATABASE FOR ATTACH SQL 命令来指定所有数据和日志文件。
还原其他数据库的备份
另一种移动内部 SQL Server 数据库的方法是,创建数据库的完整备份,然后将该备份文件还原到目标服务器。请记住以下几点:
- 在还原操作期间,不能更改逻辑文件名。
- 备份过程中可附加用户,但还原过程不可附加用户。
有关还原 SQL Server 数据库的备份的详细信息,请参阅 SQL Server 文档。
复制数据库向导
SQL Server Management Studio 提供的“复制数据库”向导可用于移动数据库。使用“复制数据库”向导时要考虑以下几个方面:
- 可复制多个数据库。
- 不能使用“复制数据库”向导在同一实例中建立数据库的副本。
- 不能从“复制数据库”向导中排除用户登录信息,所以这些信息会与新服务器用户 ID (SID) 一起传递到复制的数据库。
- 该向导要求源服务器与目标服务器相连。