发行说明


|6.7 使用 ODBC 来存取 Microsoft SQL Server 数据源(新章节)

| |

|在将 Microsoft SQL Server 数据源添加至 DB2 联合服务器之前,需要在联合服务器上安装并配置 ODBC 驱动程序。有关如何安装 ODBC 驱动程序的特定详细信息,参见随 ODBC 驱动程序提供的文档中的安装过程。

|要设置联合服务器以存取存储在 Microsoft SQL Server 数据源上的数据,需要:

  1. |在联合服务器上安装并配置 ODBC 驱动程序。有关如何安装 ODBC 驱动程序的特定详细信息,参见随 ODBC 驱动程序提供的文档中的安装过程。

    |在“DB2 Windows NT 版”服务器上:
    |使用 ODBC 设备管理器来配置系统 DSN。在“Windows ODBC 数据源管理器”中,指定 |SQL Server 驱动程序并完成该对话框以添加新的“系统 DSN”。指定“使用由用户提供的“登录标识”和密码的 SQL Server 认证。”

    |在“DB2 AIX 版”服务器上:
    |安装由 MERANT 提供的库的线程版本,将 MERANT |库目录指定为 LIBPATH 中的第一个条目,并设置 .odbc.ini 文件。 |
  2. |安装 DB2 Relational Connect 版本 7.2。参见6.3.3, 安装 DB2 Relational Connect
  3. |将 Microsoft SQL Server 数据源添加至联合服务器。
  4. |指定 Microsoft SQL Server 代码页。(仅用于 Windows NT) |

|本章讨论第 3 步和第 4 步。

|本章中的指示信息适用于 Windows NT 和 AIX 平台。特定于平台的区别在出现这些平台时作了注释。

|6.7.1 将 Microsoft SQL Server 数据源添加至联合服务器

|在安装 ODBC 驱动程序和 DB2 Relational Connect 之后,使用下列步骤将 Microsoft SQL Server 数据源添加至联合服务器:

  1. |设置环境变量(仅 AIX)。
  2. |运行 shell 脚本(仅 AIX)。
  3. |可选:设置 DB2_DJ_COMM 环境变量。(仅 AIX)
  4. |回收 DB2 实例(仅 AIX)。
  5. |创建包装器。
  6. |创建服务器。
  7. |创建用户映射。
  8. |为表和视图创建别名。
  9. |可选:获取 ODBC 跟踪。 |

|下列各节中详细说明了这些步骤。

|6.7.1.1 第 1 步:设置环境变量(仅 AIX)

|

|通过修改 db2dj.ini 文件并发出 db2set |命令来设置数据源环境变量。db2dj.ini |文件包含用来连接至 Microsoft SQL Server 数据源的配置信息。db2set 命令使用您的设置来更新 DB2 概要文件注册表。

|在分区数据库系统中,可对特定实例中的所有节点使用单个 db2dj.ini 文件,也可以对特定实例中的一个或多个节点使用唯一的 db2dj.ini 文件。对于每个实例,非分区数据库系统只能有一个 db2dj.ini 文件。

|要设置环境变量:

  1. |编辑位于 $HOME/sqllib/cfg/ 中的 |db2dj.ini 文件,并设置下列环境变量:
    |ODBCINI=$HOME/.odbc.ini
    |DJX_ODBC_LIBRARY_PATH=<path to the Merant driver>/lib
    |DB2ENVLIST=LIBPATH
    | 
    |

|发出 db2set |命令来使用您的更改来更新 DB2 概要文件注册表。db2set 的语法取决于数据库系统结构:

|要设置指向客户机库的路径,发出以下命令:

|db2set DB2LIBPATH=<path to the Merant client library>
|db2set DB2ENVLIST=LIBPATH

|6.7.1.2 第 2 步:运行 shell 脚本(仅 AIX)

|

|djxlink.sh shell 脚本将客户机库链接至包装器库。要运行 shell 脚本:

|djxlink

|6.7.1.3 第 3 步:可选:设置 DB2_DJ_COMM 环境变量(仅 AIX)

|

|如果您发现花了过长的时间来存取 Microsoft SQL Server 数据源,则可以将 DB2_DJ_COMM 环境变量设置为在初始化联合系统时装入包装器,而不是在尝试存取数据源时才装入包装器,以提高性能。将 DB2_DJ_COMM |环境变量设置为包括与您在第 5 步中指定的包装器相对应的包装器库。例如: |

|在“DB2 Windows NT 版”服务器上:
|db2set DB2_DJ_COMM=djxmssql3.dll

|在“DB2 AIX 版”服务器上:
|db2set DB2_DJ_COMM=libmssql3.a
|

|必须确保等号(=)两边都没有空格。

|有关包装器库名的更多信息,参见 DB2 SQL Reference

|6.7.1.4 第 4 步:回收 DB2 实例(仅 AIX)

|为确保在程序中设置了环境变量,应回收 DB2 实例。回收实例时,刷新 DB2 实例以接受您所作的更改。通过发出下列命令来回收 DB2 实例:

|db2stop
|db2start

|6.7.1.5 第 5 步:创建包装器

|

|“DB2 通用数据库”具有两种不同的协议(称为包装器),可以用来存取 Microsoft SQL Server 数据源。包装器是联合服务器用来与数据源进行通信以及从数据源中检索数据的机制。您使用的包装器取决于运行“DB2 通用数据库”的平台。使用表 3来作为选择适当的包装器的指南。
|

|表 3. ODBC 驱动程序

ODBC 驱动程序 平台 包装器名
ODBC 3.0(或更高级别)驱动程序 Windows NT DJXMSSQL3
MERANT DataDirect Connect ODBC 3.6 驱动程序 AIX MSSQLODBC3

|使用 CREATE WRAPPER 语句来指定将用来存取 Microsoft SQL Server 数据源的包装器。以下示例显示了 CREATE WRAPPER 语句:

|CREATE WRAPPER DJXMSSQL3 

|其中,DJXMSSQL3 是在“DB2 Windows NT 版”服务器(使用 ODBC 3.0 驱动程序)上使用的缺省包装器名称。如果您具有“DB2 AIX 版”服务器,则将指定 MSSQLODBC3 包装器名。

|可以用您选择的名称来替代缺省包装器名。但是,如果这样做的话,则必须在 |CREATE WRAPPER 语句中包括 LIBRARY 参数以及联合服务器平台的包装器库的名称。例如:

|在“DB2 Windows NT 版”服务器上:
|CREATE WRAPPER wrapper_name LIBRARY 'djxmssql3.dll'

|其中,wrapper_name 是您想给予包装器的名称,而 'djxmssql3.dll' 是库名。

|在“DB2 AIX 版”服务器上:
|CREATE WRAPPER wrapper_name LIBRARY 'libmssql3.a'

|其中,wrapper_name 是您想给予包装器的名称,而 'libdjxmssql.a' 是库名。 |

|有关包装器库名的更多信息,参见 DB2 SQL Reference |中的 CREATE WRAPPER 语句。

|6.7.1.6 第 6 步:创建服务器

|

|使用 CREATE SERVER 语句来定义您想连接的每个 Microsoft SQL Server 数据源。例如:

|CREATE SERVER sqlserver TYPE MSSQLSERVER VERSION 7.0 WRAPPER djxmssql3
|OPTIONS (NODE 'sqlnode', DBNAME 'database_name')

|其中: |

|sqlserver
|是为 Microsoft SQL Server 服务器指定的名称。此名称必须是唯一的。

|MSSQLSERVER
|是正在配置要存取的数据源的类型。

|7.0
|是您正在存取的 Microsoft SQL Server 的版本。“DB2 通用数据库”支持 Microsoft SQL Server 的版本 6.5 和 7.0。

|DJXMSSQL3
|是您在 CREATE WRAPPER 语句中定义的包装器名。

|'sqlnode'
|是引用您正在存取的 Microsoft SQL Server 的 Microsoft SQL Server 版本的系统 |DSN 名。此值是区分大小写的。“DB2 通用数据库”支持 Microsoft SQL Server 的版本 6.5 和 7.0。

|尽管节点名(系统 DNS 名)被指定为 CREATE SERVER 语句中的一个选项,但是它是 Microsoft SQL Server 数据源所必需的。在 |Windows 上,从“Windows ODBC 数据源管理器”工具的“系统 DSN”选项卡获取 DSN。在 AIX 上,从 DB2 实例所有者主目录中的 |.odbc.ini 文件获取 DSN。

|有关可配合 |CREATE WRAPPER 语句使用的其他选项,参见 DB2 SQL Reference

|'database_name'
|是您正在连接的数据库的名称。

|尽管数据库的名称被指定为 |CREATE SERVER 语句中的一个选项,但是它是 Microsoft SQL Server 数据源所必需的。 |

|6.7.1.7 第 7 步:创建用户映射

|如果联合服务器上的用户标识和密码与 |Microsoft SQL Server 数据源上的用户标识或密码不同,则使用 CREATE USER MAPPING 语句来将本地用户标识映射为在 Microsoft SQL Server 数据源中定义的用户标识和密码;例如:

|CREATE USER MAPPING FOR db2user SERVER server_name
|OPTIONS (REMOTE_AUTHID 'mssqluser', REMOTE_PASSWORD 'day2night')

|其中: |

|db2user
|是您正在映射至在 Microsoft SQL Server 数据源中定义的用户标识的本地用户标识。

|server_name
|是在 CREATE SERVER 语句中定义的服务器的名称。

|'mssqluser'
|是将 db2user 映射至的 Microsoft SQL Server 数据源的登录标识。此值是区分大小写的。

|'day2night'
|是与 'mssqluser' 相关联的密码。此值是区分大小写的。 |

|有关可配合 CREATE USER MAPPING 语句使用的其它选项,参见 DB2 SQL Reference

|6.7.1.8 第 8 步:为表和视图创建别名

|对位于您想存取的 Microsoft SQL Server 数据源中的每个视图或表指定别名。当您查询 |Microsoft SQL Server 数据源时将使用这些别名。使用 CREATE NICKNAME 语句来指定别名。别名是区分大小写的。以下示例显示了 CREATE NICKNAME |语句:

|CREATE NICKNAME mssqlsales FOR server_name.salesdata.europe

|其中: |

|mssqlsales
|是 Microsoft SQL Server 表或视图的唯一别名。

|server_name.salesdata.europe
|三部分组成的标识符,遵循以下格式:

|data_source_server_name.remote_schema_name.remote_table_name

|建议对别名的 remote_schema_nameremote_table_name 部分用双引号引起来。 |

|当您创建别名时,DB2 试图存取数据源目录表(在 Microsoft SQL Server 中将它们称为系统表)。这会测试与数据源的连接。如果连接失败,则将接收到错误消息。

|对您想为其创建别名的所有数据库表和视图重复此步骤。

|有关 CREATE NICKNAME 语句的更多信息,参见 DB2 SQL Reference。有关一般别名和验证数据类型映射的更多信息,参见《DB2 管理指南》

|6.7.1.9 第 9 步:可选:获取 ODBC 跟踪

|

|如果在存取数据源时遇到了问题,则可以获取 ODBC 跟踪信息以分析和解决这些问题。为了确保 ODBC 跟踪正常工作,应使用由“ODBC 数据源管理员”提供的跟踪工具。激活跟踪将影响系统的性能,因此,一旦解决了问题,就应该关闭跟踪。

|6.7.2 复查 Microsoft SQL Server 代码页(仅用于 Windows NT)

|

|Microsoft SQL Server 支持 DB2 UDB 所支持的许多常见“本地语言支持”(NLS)代码页。使用与 DB2 使用的代码集相同的代码集的数据源不需要转换。表 3 中列示了“DB2 通用数据库”和 Microsoft SQL Server 都支持的代码页。
|

|表 4. DB2 UDB 和 Microsoft SQL Server 代码页选项

代码页 受支持的语言
1252 ISO 字符集
850 多种语言
437 美国英语
874 泰国语
932 日语
936 简体中文
949 韩国语
950 繁体中文
1250 中欧语
1251 斯拉夫语
1253 希腊语
1254 土耳其语
1255 希伯莱语
1256 阿拉伯语

|当 DB2 联合服务器和 Microsoft SQL Server 正在运行不同的“本地语言支持”(NLS)代码页时,必须将 |Microsoft SQL Server 数据源配置为对应于这些等效选项,或者客户机代码必须能够检测不匹配项,并将它标志为错误,或者使用它自己的语义来映射数据。如果找不到从源代码页至目标代码页的转换表,则 DB2 会发出错误消息。有关更多信息,参考 Microsoft SQL Server 文档。


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]