除了安装 SQL Server 迁移助手 (SSMA),还必须在运行SQL Server的计算机上安装组件。 这些组件包括支持数据迁移的 SSMA 扩展包,以及用于实现服务器间连接的 Oracle 提供程序。
SSMA for Oracle 扩展包
SSMA 扩展包部署扩展存储过程,并将sysdb数据库添加到SQL Server的指定实例。 扩展存储过程提供模拟 Oracle 功能和行为所需的功能,而 sysdb 数据库包含迁移数据所需的表和存储过程。
注释
扩展存储过程在 SQL Server 中已弃用,将在将来的版本中删除。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 请改为创建 公共语言运行时 (CLR) 过程 。
此外,当将数据迁移到 SQL Server 时,如果使用服务器端数据迁移引擎进行迁移,SSMA 会创建 SQL Server 代理 作业。
先决条件
在 SQL Server 上安装用于 Oracle 服务器组件的 SSMA 之前,请确保系统满足以下要求:
Windows 11及更高版本,或Windows Server 2022及更高版本。
.NET Framework 版本 4.7.2 或更高版本。 下载 .NET Framework。
已安装SQL Server实例。
用于 Oracle 的 OLE DB 提供程序(如果正在使用 OLE DB),并连接到要迁移的 Oracle 数据库。 可以从 Oracle 产品媒体或 Oracle 网站安装提供程序。
重要
SSMA 扩展包的扩展存储过程与 UTF-8 服务器排序规则 不兼容(例如,
Latin1_General_100_CI_AI_SC_UTF8)。 SSMA 生成的函数将输出参数声明为 varchar(max),而内部 ODBC 驱动程序会将其映射到旧版 LOB 类型。 在使用 UTF-8 排序规则的服务器上,master数据库还使用 UTF-8,这会导致扩展存储过程的环回调用失败。 使用 ODBC 驱动程序 17 时,此失败将产生无提示错误的结果。 使用 ODBC 驱动程序 18 时,会收到错误:Cannot convert to text/ntext or collate to 'Latin1_General_100_CI_AI_SC_UTF8'如果服务器使用 UTF-8 排序规则,请不要依赖于 SSMA 扩展包扩展存储过程。SQL Server Browser 服务必须在安装过程中运行。 该服务在安装向导中填充SQL Server实例的列表。 安装后,可以禁用 SQL Server Browser 服务。
如果 SQL Server Browser 服务正在运行,但仍看不到安装程序中的实例列表,则必须取消阻止 UDP 端口 1434。 可以使用 Windows 防火墙暂时取消阻止端口,也可以暂时禁用 Windows 防火墙。 可能还必须暂时禁用防病毒软件。 请确保在安装后启用防火墙和防病毒软件。
安装扩展包
在将数据迁移到SQL Server之前,可以随时安装扩展包。
重要
若要安装扩展包,你必须是 SQL Server 实例上的 sysadmin 固定服务器角色的成员。
安装扩展包:
将
SSMAforOracleExtensionPack_<n>.msi(其中<n>为内部版本号)复制到运行 SQL Server 的计算机上。双击该 MSI 文件即可运行。
在 “欢迎 ”页上,选择“ 下一步”。
在 End-User 许可协议 页上,阅读许可协议。 如果同意,请选择 “我接受协议”,然后选择“ 下一步”。
在“ 选择设置类型 ”页上,选择“ 典型”。
在“准备安装”页面上,选择“安装”。
在“ 完成安装的第一步 ”页上,选择“ 下一步”。
此时会显示一个新对话框。 选择扩展包类型。
选择所需的安装类型,然后选择“ 下一步”。
重要
仅当在运行于 Linux 上的 SQL Server 上安装扩展包,或目标为 Azure SQL 托管实例 时,才使用远程选项。 请始终在本地安装扩展包,以便在Windows上运行SQL Server安装。 Azure SQL 数据库和Azure Synapse Analytics不支持扩展包。
如果在本地SQL Server实例上安装扩展包,可以选择将 Oracle 架构迁移到的SQL Server的本地实例。 在下拉列表中选择一个实例,然后选择“ 下一步”。
默认实例与计算机同名。 命名实例后面紧跟着一个反斜杠和实例名称。
在连接页上,选择身份验证方法,然后选择“ 下一步”。
Windows 身份验证使用 Windows 凭据尝试登录到 SQL Server 实例。 如果选择服务器身份验证,则必须输入 SQL Server 登录名和密码。
下一步要求设置主密钥的密码,用于在服务器端数据迁移期间加密扩展包数据库中存储的任何敏感数据。 提供一个强密码,然后选择“下一步”。
在下一页上,选择 “安装实用工具数据库 n ”和“安装扩展包库”,其中 n 是版本号,然后选择“ 下一步”。
使用
sysdb表创建数据库,并且在此数据库中创建数据迁移所需的存储过程(使用服务器端数据迁移引擎)。安装完成后,会出现一条提示,询问是否要在SQL Server的另一个实例上安装 Utilities Database。 选择 “是”,然后选择“ 下一步”。 若要退出向导,请选择 “否 ”,然后选择“ 退出”。
在 SQL Server Management Studio 中或使用
sqlcmd实用工具运行以下脚本以启用 CLR:EXECUTE sp_configure 'clr enabled', 1; GO RECONFIGURE; GO如果未启用 CLR,SSMA 连接到SQL Server时会收到以下错误:
SSMA could not retrieve the extension pack assembly version information. Reinstall the extension pack on the database server.
SQL Server 数据库对象
安装扩展包后,表 ssma_oracle.bcp_migration_packages 将显示在 sysdb 数据库中。
每次将数据迁移到 SQL Server 时,SSMA 都会创建 SQL Server 代理作业。 这些作业已命名ssma_oracle data migration package {GUID},可以在“作业”文件夹中SQL Server Management Studio的SQL Server 代理节点中看到这些作业。
以下扩展存储过程将添加到 master 数据库:
xp_ora2ms_exec2xp_ora2ms_exec2_exxp_ora2ms_versioninfo2