从 Oracle 数据库生成发布

本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQL 从 SQL Server 2014 中的 Oracle 数据库创建发布。

本主题内容

在您开始之前

先决条件

  • 在创建发布之前,必须在 Microsoft SQL Server 分发服务器上安装 Oracle 软件,并且必须配置 Oracle 数据库。 有关详细信息,请参阅 配置 Oracle 发布服务器

使用 SQL Server Management Studio

使用“新建发布向导”从 Oracle 数据库创建快照或事务性发布。

首次从 Oracle 数据库创建发布时,必须在 SQL Server 分发服务器上标识 Oracle 发布服务器(不需要对同一数据库中的后续发布执行此作)。 可以通过“新建发布向导”或 “分发服务器属性 - <分发>”对话框确定 Oracle 发布者;本主题展示 “分发服务器属性 - <分发>”对话框。

在 SQL Server 分发服务器上识别 Oracle 发布者

  1. 在 SQL Server Management Studio 中,连接到将由 Oracle 发布者用作分发服务器的 SQL Server 实例,然后展开服务器节点。

  2. 右键单击 “复制 ”文件夹,然后单击“ 分发服务器属性”。

  3. “分发服务器属性 - <分发服务器>”对话框的“发布服务器”页上,单击“添加”,然后单击“添加 Oracle 发布服务器”。

  4. 在“ 连接到服务器 ”对话框中,单击“ 选项” 按钮。

  5. “登录 ”选项卡上:

    1. 输入 Oracle 数据库实例名称,或在“服务器实例组合”框中选择“浏览”以获取更多内容。

    2. 选择 Oracle 标准身份验证 (建议)或 Windows 身份验证

      如果选择 Windows 身份验证:必须将 Oracle 服务器配置为允许使用 Windows 凭据建立连接(有关详细信息,请参阅 Oracle 文档):并且当前必须使用为复制管理用户架构指定的相同Microsoft Windows 帐户登录。

    3. 如果选择 Oracle 标准身份验证,请在配置过程中输入在 Oracle 发布服务器上创建的复制管理用户架构的登录名和密码。

  6. 连接属性选项卡上,选择网关完成的发布者类型。

    “完整”选项旨在为快照和事务发布提供 Oracle 发布支持的完整功能集。 网关选项提供特定的设计优化,以提高系统之间复制作为网关的情况的性能。 如果计划在多个事务发布中发布同一表,则无法使用 网关 选项。 如果选择 网关,则表最多可以出现在一个事务发布中,以及任意数量的快照发布中。

  7. 单击 “连接”,创建与 Oracle 发布服务器的连接,并将其配置为复制。 “ 连接到服务器 ”对话框将关闭,并返回到 “分发服务器属性 - <分发服务器> ”对话框。

    注释

    如果网络配置存在任何问题,此时会收到错误。 如果在连接到 Oracle 数据库时遇到问题,请参阅 Oracle 发布服务器故障排除中的“SQL Server 分发服务器无法连接到 Oracle 数据库实例”部分。

  8. 单击 “确定”

从 Oracle 数据库生成发布物

  1. 连接到 Oracle 发布服务器将用作分发服务器的 SQL Server 实例,然后展开服务器节点。

  2. 展开 “复制 ”文件夹。

  3. 右键单击 “本地发布 ”文件夹,然后单击“ 新建 Oracle 发布”。

  4. 在“新建发布向导”的 “Oracle 发布服务器 ”页上,选择 Oracle 发布服务器。 如果未显示 Oracle 发布服务器,请单击“添加 Oracle 发布服务器”,该发布服务器会引导你完成上一过程的步骤。

  5. 在“ 发布类型 ”页上,选择 “快照发布 ”或 “事务发布”。

  6. 在“ 文章 ”页上,选择要发布的数据库对象。

    (可选)先展开表格,然后取消选中一个或多个列的复选框,来隐藏这些列。 单击“ 项目属性 ”以查看和修改项目属性,并在必要时指定备用数据类型映射。 有关数据类型映射的详细信息,请参阅 指定 Oracle 发布服务器的数据类型映射

  7. 在“ 筛选表行 ”页上,可以选择应用筛选器以从一个或多个表发布数据子集。

  8. “快照代理”页上,仅当已在订阅数据库中创建所有对象并添加所有必需数据时,才取消勾选“立即创建快照”选项。

  9. 代理安全页面上,指定快照代理(用于所有发布)和日志读取器代理(用于事务发布)的凭据。 代理使用指定的Microsoft Windows 帐户的上下文运行并连接到 SQL Server 分发服务器。 代理使用您指定为复制管理用户架构的帐户来连接到 Oracle 数据库。 有关详细信息,请参阅 配置 Oracle 发布服务器

    有关每个代理所需的权限的详细信息,请参阅 复制代理安全模型复制安全最佳做法

  10. “向导操作”页上,可以选择编写发布脚本。 有关详细信息,请参阅 脚本复制

  11. 在“ 完成向导” 页上,指定发布的名称。

使用 Transact-SQL

将 Oracle 数据库配置为发布服务器后,可以使用系统存储过程,以与从 Microsoft SQL Server 发布服务器相同的方式创建事务发布或快照发布。

创建 Oracle 发布

  1. 将 Oracle 数据库配置为发布服务器。 有关详细信息,请参阅 配置 Oracle 发布服务器

  2. 如果远程分发服务器不存在,请配置远程分发服务器。 有关详细信息,请参阅 “配置发布和分发”。

  3. 在 Oracle 发布服务器将使用的远程分发服务器上,执行sp_adddistpublisher(Transact-SQL)。@publisher 指定 Oracle 数据库实例的透明网络基底(TNS)名称,以及为 @publisher_type 指定ORACLEORACLE GATEWAY 的值。 Specify 从 Oracle 发布服务器连接到远程 SQL Server 分发服务器时使用的安全模式,如下所示:

    • 若要使用 Oracle 标准身份验证,默认值为 0 ,用于 @security_mode、在配置 @login 期间在 Oracle 发布服务器上创建的复制管理用户架构的登录名以及 @password的密码。

      重要

      如果可能,请提示用户在运行时输入安全凭据。 如果将凭据存储在脚本文件中,则必须确保文件的安全以防受到未经授权的访问。

    • 若要使用 Windows 身份验证,请为@security_mode指定值 1

      注释

      若要使用 Windows 身份验证,必须将 Oracle 服务器配置为允许使用 Windows 凭据建立连接(有关详细信息,请参阅 Oracle 文档):并且当前必须使用为复制管理用户架构指定的相同Microsoft Windows 帐户登录。

  4. 为发布数据库创建日志读取器代理作业。

    • 如果不确定已发布数据库的日志读取器代理任务是否存在,请在 Oracle 发布服务器使用的分发数据库上执行sp_helplogreader_agent(Transact-SQL)。@publisher 指定 Oracle 发布服务器的名称。 如果结果集为空,则必须创建日志读取器代理作业。

    • 如果发布数据库已存在日志读取器代理作业,请转到步骤 5。

    • 在用于 Oracle 发布服务器的分发数据库的分发服务器上,执行sp_addlogreader_agent(Transact-SQL)。 请指定代理运行时使用的 Windows 凭据,包括 @job_login@job_password

      注释

      @job_login参数必须与步骤 3 中提供的登录名匹配。 不要提供发布者安全信息。 日志读取器代理使用步骤 3 中提供的安全信息连接到发布者。

  5. 在分发服务器的分发数据库上执行 sp_addpublication(Transact-SQL) 以创建发布。 有关详细信息,请参阅 “创建发布”。

  6. 在分发者处的分发数据库上,执行sp_addpublication_snapshot(Transact-SQL)。 指定步骤 4 中用于@publication的发布名称和快照代理运行@job_name@password的 Windows 凭据。 若要在连接到发布服务器时使用 Oracle 标准身份验证,还必须为 @publisher_security_mode 指定值 0,并为@publisher_login@publisher_password指定 Oracle 登录信息。 这会为发布创建快照代理作业。

另请参阅

配置 Oracle 发布服务器
发布数据和数据库对象
为 Oracle 发布服务器配置交易集作业(复制 Transact-SQL 编程)
Oracle 发布概述
用于授予 Oracle 权限的脚本