Microsoft Service for DRDA - Platform Modernization Alliance

Transcription

Microsoft Service for DRDA - Platform Modernization Alliance
Microsoft Service for DRDA
Whitepaper
March 2014
(c)2014 Microsoft Corporation. All rights reserved. This document is provided "as-is." Information and
views expressed in this document, including URL and other Internet Web site references, may change
without notice. You bear the risk of using it.
Some examples are for illustration only and are fictitious. No real association is intended or inferred.
This document does not provide you with any legal rights to any intellectual property in any Microsoft
product. You may copy and use this document for your internal, reference purposes.
Contents
Contents ................................................................................................................................................................ 2
Overview ............................................................................................................................................................... 5
Planning ................................................................................................................................................................. 6
Distributed Relational Database Architecture ...........................................................................................................6
Enterprise Single Sign-On ..........................................................................................................................................7
Microsoft SQL Server .................................................................................................................................................7
Architecture ........................................................................................................................................................... 9
Connectivity ...............................................................................................................................................................9
Compatibility ...........................................................................................................................................................11
Administration .........................................................................................................................................................12
Deployment ......................................................................................................................................................... 14
Installing and Configuring Service for DRDA ...........................................................................................................14
Configuring DRDA AR Client Connections ................................................................................................................15
Configuring SQL Server Connections .......................................................................................................................17
SQL Application .......................................................................................................................................................21
Security ....................................................................................................................................................................21
Configuring Database Alias Mappings ....................................................................................................................25
Configuring Package Bind Processing .....................................................................................................................27
Configuring SQL Syntax Transformations ................................................................................................................31
Configuring Data Type Mappings ............................................................................................................................32
Configuring Date Time Conversions ........................................................................................................................32
Configuring Service Encodings.................................................................................................................................36
Configuring Application Encodings ..........................................................................................................................38
Configuring Collation Mapping ...............................................................................................................................39
Configuring Trace Listeners .....................................................................................................................................41
Configuring Enterprise Single Sign-On .....................................................................................................................47
Configuring Microsoft Client Connections ...............................................................................................................48
Configuring DB2 for z/OS ........................................................................................................................................51
Operations ........................................................................................................................................................... 61
Managing DRDA Service..........................................................................................................................................61
Service for DRDA
Microsoft Corporation
Page 2
Connecting DRDA Clients to SQL Server Databases .................................................................................................62
Processing Package Binds .......................................................................................................................................63
Performance ............................................................................................................................................................65
Security and Protection ....................................................................................................................................... 70
Security ....................................................................................................................................................................70
Protection ................................................................................................................................................................72
Troubleshooting .................................................................................................................................................. 80
Trace Listeners .........................................................................................................................................................80
Event Logs ...............................................................................................................................................................80
Data Type Mapping .................................................................................................................................................84
Code Page Mappings ...............................................................................................................................................84
Troubleshooting Tools .............................................................................................................................................84
Solutions to Common Problems ..............................................................................................................................87
Development – Programmer’s Guide ................................................................................................................... 98
Understanding Static SQL for DB2 Custom Packages ..............................................................................................98
Creating Static SQL for DB2 Custom Packages ........................................................................................................98
Calling Static SQL for DB2 Custom Packages ...........................................................................................................99
Converting packages to stored procedures ...........................................................................................................100
Static SQL Package Statements .............................................................................................................................101
DRDA Service Package Bind Options .....................................................................................................................102
DRDA Service Static SQL Cursors ...........................................................................................................................103
Data Type Conversions ..........................................................................................................................................105
Date Time Formats and Conversions .....................................................................................................................109
BLOB and CLOB......................................................................................................................................................110
Error Code Mapping ..............................................................................................................................................110
Development - Programmer’s Reference ........................................................................................................... 112
Locale Encoding .....................................................................................................................................................112
Distributed Relational Database Architecture .......................................................................................................112
PowerShell Module ................................................................................................................................................113
Static SQL for DB2 Custom Packages XML Schema V90 ........................................................................................138
Static SQL for DB2 Custom Packages XML Schema V85 ........................................................................................156
Samples ............................................................................................................................................................. 173
Service for DRDA
Microsoft Corporation
Page 3
Custom Listeners ...................................................................................................................................................173
Enterprise Single Sign-On ......................................................................................................................................178
Service for DRDA
Microsoft Corporation
Page 4
Overview
The Microsoft Service for DRDA enables DRDA clients, such as IBM DB2 for z/OS, to execute static SQL
statements mapped to SQL Server stored procedures. The DRDA Service provides host-initiated data
integration essential to enterprises during a phased workload migration, or for daily operations in
support of remote batch or business intelligence solutions. The DRDA Service offers the following
features.













Deployed on Windows Server including virtualization with Hyper-V
Respond to DRDA client requests across a TCP/IP network connection
Access SQL Server on local computer or remotely using SqlClient provider
Authenticate in-bound client connections using Enterprise Single Sign-On
Encrypt data using Secure Sockets Layer and Transport Layer Security
Map SQL Server transactions using MSDTC to DB2 DRDA transactions using XA
Convert static SQL statements in DB2 packages to SQL Server stored procedures
Transform dynamic SQL statements in ANSI SQL to SQL Server T-SQL
Map DB2 DRDA data types to SQL Server data types
Encode SQL Server ANSI and UNICODE strings as DB2 EBCDIC
Map SQL Server error codes and text to DRDA reply messages with SQLSTATE and SQLCODE
Configure and administer service using PowerShell module cmdlet commands
Trace connections and commands using Event Tracing for Windows (ETW)
Figure 1. HIS 2013 integrates existing IBM host systems with Microsoft server applications.
The DRDA Service is a feature of Microsoft Host Integration Server 2013 (HIS 2013). Read the HIS 2013
Release Notes and Installation Guide for more information on software prerequisites and installation.
HIS 2013 Release Notes and Installation Guide are posted to the Microsoft Download Center
(http://www.microsoft.com/download/details.aspx?id=39951). HIS 2013 On-Line Documentation is
available on MSDN (http://msdn.microsoft.com/en-us/library/gg241192(v=bts.10).aspx) and TechNet
(http://technet.microsoft.com/en-us/library/gg241192(v=BTS.10).aspx)
Microsoft HIS 2013 is licensed as supplemental software to Microsoft BizTalk Server 2013 (BTS 2013).
HIS 2013 Evaluation Copy is available on the Microsoft Download Center
(http://www.microsoft.com/download/details.aspx?id=39950).HIS 2013 Enterprise Edition is available
on the Microsoft Volume License site. HIS 2013 Developer Edition is available on MSDN
(http://msdn.microsoft.com/subscriptions/downloads) and TechNet
(http://technet.microsoft.com/subscriptions/downloads). Visit the Microsoft Host Integration Server
website (http://www.microsoft.com/hiserver) for more information on HIS 2013 and BTS 2013.
Service for DRDA
Microsoft Corporation
Page 5
Planning
Enterprise IT organizations need to deliver new solutions, while increasing developer efficiency and
reducing costs. The DRDA Service offers technology and tools to enable IT professionals and enterprise
developers to deploy new solutions based on Microsoft SQL Server, while connecting existing workloads
based on IBM DB2.
Figure 2. Connecting IBM DB2 client programs via the DRDA Service to Microsoft SQL Server databases.
Distributed Relational Database Architecture
IBM DB2 clients and servers communicate using Distributed Relational Database Architecture (DRDA)
protocol and formats. The DRDA Service functions as a DRDA Application Server (AS) to enable DRDA
Application Requester (AR) clients to interact with Microsoft SQL Server databases. The DRDA Service
supports a limited set of DRDA code points as defined in the architecture references published by The
Open Group (http://www.opengroup.org).



DRDA, Version 5, Volume 1: Distributed Relational Database Architecture (DRDA)
DRDA, Version 5, Volume 2: Formatted Data Object Content Architecture (FD:OCA)
DRDA, Version 5, Volume 3: Distributed Data Management (DDM) Architecture
You can download DRDA V5 Vol. 3: Distributed Data Management Architecture, publication number
C114, from The Open Group bookstore (http://go.microsoft.com/fwlink/?LinkID=219127).
IBM DB2 DRDA Clients and Servers
Microsoft, IBM, and third-party vendors implement DRDA protocols and formats in various DRDA
Application Requester (AR) client technologies. The DRDA Service supports in-bound connections from
DRDA AR clients that conform to the DRDA Version 5 standard, including DRDA ARs in these IBM
products.


IBM DB2 for z/OS V9.1 and V10
IBM DB2 for i5/OS V6R1 and V7R1
Service for DRDA
Microsoft Corporation
Page 6

IBM DB2 for Windows, AIX, HP-UX, Solaris, Linux V9.7 and V10
Microsoft DRDA Client for DB2
Microsoft HIS 2013 includes a DRDA Application Requester client designed to connect to remote IBM
DB2 database server, supporting a subset of DRDA Version 5.0.
 Microsoft ODBC Driver for DB2
 Microsoft OLE DB Provider for DB2
 Microsoft ADO.NET Framework Data Provider for DB2
 Microsoft BizTalk Adapter for DB2
 Microsoft Entity Framework Provider for DB2
Enterprise Single Sign-On
Microsoft Enterprise Single Sign-On is a technology included with HIS 2013 and BTS 2013 to map
Windows credentials for foreign credentials (e.g. IBM RACF username) to enable single sign-on
solutions. Optionally, the DRDA Service can utilize Microsoft Enterprise Single Sign-On to map in-bound
host credentials (e.g. RACF user authorization identifier) to out-bound Windows Active Directory (AD)
credentials, allowing the DRDA Service to connect to SQL Server using Integrated Security.
Figure3. Enterprise Single Sign-One enabled the DRDA Service to map inbound DRDA credentials to
outbound SQL Server credentials.
Host-initiated ESSO requires elevated permissions in Active Directory (Kerberos constrained delegation,
and Use any authentication protocol). ESSO requires a Kerberos Service Principal Name for the SQL
Server computer to which the DRDA Service connects. For more information on ESSO, see
Understanding Enterprise Single Sign-On (http://msdn.microsoft.com/enUS/library/aa754070(v=BTS.10).aspx).
Microsoft SQL Server
Enterprise administrators and developers rely on Microsoft SQL Server to build mission critical data
platforms for line-of-business applications. SQL Server helps enterprises to unlock new insights through
data discovery across the organization while providing tools consistent data and large scale analytics and
Service for DRDA
Microsoft Corporation
Page 7
data warehousing. The DRDA Service can connect existing IBM host workloads to new solutions based
on Microsoft SQL Server to enable heterogeneous enterprise applications and business intelligence.
The DRDA Service relies on the Microsoft SQL Server network client and ADO.NET Framework Data
Provider for SQL Server for connectivity and data access to SQL Server databases. For more information
on Microsoft SQL Server, see http://www.microsoft.com/sql.
Windows Operating Systems
The DRDA Service requires one of the following Microsoft operating systems (32-bit x86 or 64-bit x64).








Microsoft Windows® 8.1
Microsoft Windows 8
Microsoft Windows 7 SP1
Microsoft Windows Server® 2012 R2
Microsoft Windows Server 2012
Microsoft Windows Server 2008 R2 SP1
Virtualization with Hyper-V®
Virtualization with Windows Azure™
Prerequisite Software
The DRDA Service requires the following software products as installation prerequisites.




Microsoft .NET Framework 4.0 (http://www.microsoft.com/enus/download/details.aspx?id=17851)
Microsoft PowerShell 3.0 (Windows Management Framework 3.0)
(http://www.microsoft.com/en-us/download/details.aspx?id=34595)
Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package (x86)
(http://www.microsoft.com/en-us/download/details.aspx?id=8328)
Microsoft Visual C++ 2010 Service Pack 1 Redistributable Package (x64)
(http://www.microsoft.com/en-us/download/details.aspx?id=13523)
Note: When installing on a 64-bit (x64) operating system, you must install both x86 and x64 of Visual
Studio 2010 Service Pack 1 C++ Runtime packages.
Service for DRDA
Microsoft Corporation
Page 8
Architecture
The DRDA Service enables connectivity from a remote IBM DB2 client program and a local Microsoft SQL
Server database, by providing compatibility services based on the industry-standard DRDA (Distributed
Relational Database Architecture) that defines DB2 client-to-server communications in the form of a set
of protocol code points and formats. The DRDA Service operates within the DRDA as an Application
Server (AS). The IBM DB2 client programs (e.g. COBOL TOS and CICS for z/OS) are locally-attached to DB2
for z/OS and functions within the DRDA as Application Requester (AS) clients. The DRDA Service is a
Windows service program that hosts an instance of the Microsoft .NET Framework, connects to a local
or remote Microsoft SQL Server using the Microsoft ADO.NET Framework Data Provider for SQL Server
and underlying Microsoft SQL Server network client.
Figure 4. DRDA Service connects IBM DB2 for z/OS to Microsoft SQL Server.
Connectivity
DRDA Protocol and Formats
The DRDA Service converts DRDA code points and data formats into corresponding Microsoft ADO.NET
connections, transactions, commands, data types, and error objects. The primary function of the DRDA
Service is to functionally map static SQL for DB2 packages and statement execution to Microsoft SQL
Server stored procedure and CALL statements. The DRDA Service processes the DRDA protocol flows as
defined within the architecture based on the various DRDA managers.
Network transports and transactions
The DRDA Service supports in-bound authenticated DRDA client connections across a TCP/IP network.
The DRDA Service does not support SNA APPC over LU6.2 using HPR/IP (High Performance Routing over
Internet Protocol). To connect to SQL Server, the DRDA Service uses an underlying Microsoft ADO.NET
Provider for SQL Server and SQL network client, supporting in-memory, named pipes, and TCP/IP
network connections.
By default, the DRDA Service will listen on the default DRDA port 446 for in-bound connections,
accepting any DRDA client connection request. Optionally, the DRDA Service can listen on another preconfigured port number. Also, to improve security, the DRDA Service can be configured to accept inbound connection requests from a pre-defined list of remote network addresses.
Service for DRDA
Microsoft Corporation
Page 9
To enable reliable updates across the network, the DRDA Service supports DRDA DUW (Distributed Unit
of Work) two-phase commit transactions. The DRDA DUW transactions are mapped to SQL Server
transactions through the Microsoft ADO.NET Framework Data Provider for SQL Server and underlying
SQL network client.
Pooling and load balancing
The DRDA Service supports the SQL client connection pooling through configuring the SQL client pooling
options in the SQL Server connection string arguments in the DRDA Service app config. Also, the DRDA
Service offers an internal connection pool, mapping in-bound DRDA AR client connections and
authentication credentials to out-bound SQL Server database connections and credentials.
Figure 6. DRDA Service primary and partner server work together for load balancing.
The DRDA Service can operate in groups of two (2) servers, one per computer, to provide basic fault
tolerance. When a DRDA AR client connects to a SQL Server database (DSN1), the DRDA Service (SRV1)
returns a DRDA SRVLST (Server List) with a weighted list of Data Server instances (DSN1 on SRV1 and
DSN1 on SRV2). In case of failover of a primary DRDA Service (SRV1), the DRDA AR can use this
information to connect to the partner member (SRV2) of a pair of DRDA Service computers.
Authentication and encryption
To secure information, the DRDA Service supports common DRDA authentication and data encryption
technologies. For example, the DRDA Service can support basic authentication (plain text EBCDICencoded username with password) or secure authentication using 256-bit Advanced Encryption
Standard (AES). Also, the DRDA Service can support combined authentication and encryption using
Secure Sockets Layer (SSL) V3.0 or Transport Layer Security (TLS) V1.0.
To provide integrated authentication, the DRDA Service can combine in-bound credential validation and
mapping using Microsoft Enterprise Single Sign-On (ESSO), with out-bound SQL Server authentication
using Windows SSPI (Security Support Provider Interface). For example, the DRDA Service can work with
ESSO to map an IBM RACF (Resource Access Control Facility) username and password to a Microsoft
Windows Active Directory domain\username, with which to connect with integrated security to a
remote SQL Server database.
Service for DRDA
Microsoft Corporation
Page 10
Compatibility
Static and Dynamic SQL
Primarily, the DRDA Service enables DB2 client programs to execute remotely-defined static SQL for DB2
packages, by mapping the package statements to SQL Server stored procedures. For example, when a
DB2 administrator or programmer bind copies a DB2 package to SQL Server, the DRDA Service converts
the DRDA BNDSQLSTT (Bind SQL Statement) flows into SQL Server T-SQL CREATE PROCEDURE
statements. When the DB2 program executes the remote package statement, the DRDA Service
converts the DRDA OPNQRY (Open Query) or EXCSQLSTT (Execute SQL Statement) into a CALL
statement.
Secondarily, the DRDA Service supports limited dynamic SQL operations to allow DB2 client programs to
execute remote SQL Server T-SQL commands. For example, a DB2 administrator can utilize QMF (Query
Management Facility) for z/OS to query a remote SQL Server table.
SQL Syntax
The DRDA Service has a limited DB2 ANSI to SQL Server T-SQL command syntax transformer that it
utilizes for binding packages, executing static and dynamic SQL statements. Optionally, the DRDA Service
offers additional compatible DB2 functions in the form of SQL Server CLR-based functions.
The DRDA Service offers a replaceable package bind component for processing DRDA BNDSQLSTT (Bind
SQL Statement) to SQL Server T-SQL CREATE PROCEDURE statements. For example, an ISV (Independent
Software Vendor) or enterprise developer can implement a custom-defined package binding component
to support syntax, data type, encoding, or other required conversions.
Catalog and schema names
The DRDA Service offers basic mapping of high-level object identifiers, including catalog and schema
names. For example, the DRDA Service can map an in-bound DRDA RDBNAM (Relational Database
Name) to an out-bound SQL Server database name. Also, the DRDA Service can map an in-bound DRDA
COLLID (Collection Identifier) to an outbound SQL Server schema name.
Data type conversion
To support cross platform interoperability between SQL Server databases running on Windows
operating systems and DB2 servers running on z/OS and i5/OS, the DRDA Service offers a set of data
type mappings and conversions defined in XML files (DB2ToMSSql.xml and MSSQLToDB2.xml). For
example, the DRDA Service can maps and will convert in-bound DB2 DECIMAL to out-bound SQL Server
money.
String encodings
The DRDA Service supports converting from DB2 EBCDIC string encodings to SQL Server ANSI and
UNICODE encodings. Optionally, the DRDA Service supports modified replaceable Windows EBCDIC-toUNICODE NLS (National Language Support) conversion files. Also, the DRDA Service offers in-line
character replacement based on a pre-defined map using CCSID (Coded Character Set Identifier)
hexadecimal value pairs.
Datetime formatting
The DRDA Service offers in-line DB2 DATE/TIME/TIMESTAMP to SQL Server date/time/datetime2 format
and string literal value conversions. For example, the DRDA Service can convert an in-bound DB2
Service for DRDA
Microsoft Corporation
Page 11
formatted TIMESTAMP string literal value in the form YYYY-MM-DD-hh.mm.ss.tttttt to an out-bound SQL
Server datetime2(6) value in the form YYYY-MM-DD hh:mm:ss.tttttt.
Administration
An administrator can configure the DRDA Service by modifying the MsDrdaService.exe.config file, along
with ancillary XML files (data types and error mapping), prior to starting the DRDA Service. Optionally,
the DRDA Service offers immediate reading of the MsDrdaService.exe.config to enable dynamic
configuration updates.
Configuration
IT professionals can specify all required DRDA Service configuration settings by running the interactive
or unattended installation program. See topic titled “To install the product”. See also, topic titled “To
install the product unattended”.
Post-installation, IT professionals can customize the DRDA Service configuration by editing the
MsDrdaService.exe.config file and updating other XML files. The following is a listing of DRDA Service
components, configurable items, and configuration stores.
Component
Items
Configuration Store
DRDA Service
Service Credentials
Windows Registry
Security Policy Rights
MsDrdaService.exe.config
Connection Manager
MSDRDAErrorMappings.xml
Security Manager
SQL Access Manager
Database Manager
Data Conversion
Data Type Mappings
Date, Time, DateTime Formats
DB2ToMSSql.xml
MSSQLToDB2.xml
MsDrdaService.exe.config
Code Page Conversion
Bind Listeners
Custom Code Pages
Windows Registry
Code Point Mappings
MsDrdaService.exe.config
Default
MsDrdaService.exe.config
Custom
Trace Listeners
Text Listener
MsDrdaService.exe.config
Console Listener
ETW Listener
Custom
Service for DRDA
Microsoft Corporation
Page 12
Component
Items
Configuration Store
Event Log
Events
Application Log
Performance Monitor
Counters
Windows Registry
MsDrdaService.exe.config
Table 1. Configurable DRDA Service components, items, and configuration stores.
PowerShell
Windows PowerShell® is a task-based command-line shell and scripting language designed especially for
system administration. Built on the .NET Framework, Windows PowerShell helps IT professionals and
power users control and automate the administration of the Windows operating system and
applications that run on Windows. The DRDA Service offers a PowerShell module,
Microsoft.HostIntegration.PowerShell, with a number of Cmdlet commands to add/get/remove/set
MsDrdaService.exe.config elements and attributes, as well as commands to start/stop listeners.
Tracing
The DRDA Service supports multiple trace options console listener tracing, text listener tracing, event log
listener, ETW (Event Trace for Windows) listener, ETW (Event Tracing for Windows) listener, and custom
tracing. The administrator uses the console tracing when running the DRDA Service in Windows console
mode, to output trace data to the screen. The administrator uses text tracing when running the DRDA
Service in Windows service mode or console mode, to output trace data to a text-readable file. The
DRDA Service automatically posts event log listener trace items to the Windows Event Log. The
administrator uses ETW tracing for high speed data collection. Optionally, the enterprise developer can
implement a custom trace listener to output all or selected trace data to another component.
Accounting and logging
The DRDA Service supports the standard DRDA accounting code points: Client Workstation Name; Client
User ID; Client Application Name; and Client Accounting. An enterprise developer can specify dynamic
values in their program with which to populate the DRDA client accounting properties. The DRDA Service
reads the values at runtime to populate the DRDA Service trace, allowing correlation of problems to
specific application and user context. Optionally, the enterprise developer can implement a DRDA
Service customer trace listener with which log DRDA AR client requests. For example, a customer trace
listener can log selected network and database access, based on a client account value, to a remote SQL
Server logging database.
Error mapping
The DRDA Service returns SQL Server errors in the form of either a DRDA code point Reply Message
(RM) or DRDA SQLCARD (SQL Communications Area Reply Data). By default, for common issues, the
DRDA Service uses a built-in table to map SQL error codes and error strings to DRDA reply messages and
errors. Also, the DRDA Service uses an external MsDrdaErrorMappings.xml file to map from SQL Server
error code and error text to SQLCODE, SQLSTATE, Reason Code, and Error Message.
Service for DRDA
Microsoft Corporation
Page 13
Deployment
The HIS 2013 setup and configuration wizard provide installation and basic configuration of the DRDA
Service. IT professionals will modify the MsDrdaService.exe.config application configuration file and
PowerShell module cmdlet commands to further configure and administer the DRDA Service.
Installing and Configuring Service for DRDA
To install the DRDA Service, use the HIS 2013 “server” setup program and configuration wizard. The HIS
2013 setup and configuration wizard support both interactive and command-line operations for install,
configure, and removal of the DRDA Service software as a feature of HIS 2013. See the HIS 2013 Release
Notes, Installation Guide, and on-line help for more information. HIS 2013 Release Notes and
Installation Guide are posted to the Microsoft Download Center
(http://www.microsoft.com/download/details.aspx?id=39951).HIS 2013 On-Line Documentation is
available on MSDN (http://msdn.microsoft.com/en-us/library/gg241192(v=bts.10).aspx) and TechNet
(http://technet.microsoft.com/en-us/library/gg241192(v=BTS.10).aspx)
Service Credentials
Using Windows Services Microsoft Management Console (MMC) snap-in, you can change the account
name and password in which context to run the DRDA Service (C:\Program Files\Microsoft Host
Integration Server 2013\system\MsDrdaService.exe). The configuration is stored in the Windows
registry.
1. On the Start menu, point to All Programs, point to Administrative Tools, and click Computer
Management.
2. In the Computer Management (local) settings pane, navigate to Services under Services and
Applications.
3. In the Service pane, double click Microsoft Service for DRDA.
4. In the Microsoft Service for DRDA Properties (local) dialog, click Log On.
5. In the Log On dialog, click This account. Type a computer_name\user_name or
domain_name\user_name. Optionally, click Browse to select a local or domain account.
Note: When ESSO to map foreign credentials to AD credentials, this log on service account must be a
member of the SSO Affiliate Administrators group.
6. Type a corresponding password in the Password and Confirm password edit boxes. Click OK to
continue.
Note: You must stop and re-start the service in order for the new credentials to utilize the newlyentered log service credentials.
Service Security Policy Rights
Using the Windows Policy Editor Microsoft Management Console (MMC) snap-in, you can change policy
objects associated with the MsDrdaService and credentials. The MsDrdaService requires the Log on as a
service policy rights.
Service for DRDA
Microsoft Corporation
Page 14
This security setting allows a security principal to log on as a service. Services can be configured to run
under the Local System, Local Service, or Network Service accounts, which have a built in right to log on
as a service. Any service that runs under a separate user account must be assigned the right.
Application Configuration File
The DRDA Service configuration is stored in the MsDrdaService.exe.config application configuration (app
config) file, and associated XML files (error message mapping and data type mapping). At runtime, the
DRDA Service will monitor the MsDrdaService.exe.config file for changes. When detected, the DRDA
Service will read and utilize the changed configuration information when processing new in-bound
connections.
Post-installation, IT professionals can customize the DRDA Service configuration by editing the
MsDrdaService.exe.config application configuration (app config) file using an XML editor and the
associated %SNAROOT%\System\Schemas\HostIntegrationDrdaServiceConfiguration.xsd file.
Configuring DRDA AR Client Connections
The DRDA Service handles communication with DRDA AR clients across TCP/IP network connections. The
DRDA Service supports optional encryption and failover features to improve security and reliability. You
can edit the MsDrdaService.exe.config file to instruct the DRDA Service on how to manage the DRDA AR
client connections. The connectionManager element of the MsDrdaService.exe.config file contains the
network, security and failover settings for managing in-bound DRDA client connections. The
connectionManager type is the Microsoft.HostIntegration.Drda.Server.TcpConnectionManager, which
supports in-bound DRDA AR client connections across a TCP/IP network connection.
Network
The DRDA Service listens and responds to in-bound TCP/IP network connections on a specified network
port.
TCP/IP Listener Port
The port attribute defines the TCP/IP Port number on which the DRDA Service must listen for in-bound
DRDA Application Requester client connection requests. This optional attribute accepts an integer
value. The default value is 446. If you specify a port different from the default DRDA port 446, then
DRDA clients must specify the non-default port number in requests to the computer or they will not
connect to the DRDA Service.
Transaction Log Synchronization IP Address
The resyncIpAddress attribute instructs the DRDA Service the TCP/IP address to send to the DRDA Client
in the DRDA Access Relational Database Reply Message (ACCRDBRM), following a successful data
connection to the target SQL Server database. The DRDA Client uses the resyncIpAddress value and the
configured port value to establish a transaction log synchronization connection. This optional attribute
accepts a string value. The default value is an empty string, which instructs the DRDA Service to return
the TCP/IP address used by the DRDA Client on the data connection.
Transaction Log Synchronization Port
The DRDA Service listens for in-bound DRDA Client transaction log synchronization connections on the
same TCP/IP Listener Port used for in-bound DRDA Client data connections. See TCP/IP Listener Port for
more information.
Service for DRDA
Microsoft Corporation
Page 15
Security
The DRDA Service supports Secure Sockets Layer 3.0 (SSL) and Transport Layer Security 1.0 (TLS) to
encrypt the authentication and data between DRDA AR client and DRDA Service.
Client IP Addresses Allowed
The clientIpAddressesAllowed attribute restricts the DRDA Service to accepting in-bound TCP/IP
network connections from a list of known DRDA AR client computers. This optional attribute accepts a
string value. The default value is an empty string, which allows the DRDA Service to respond to all inbound client connection requests. The list is comprised of a TCP/IP address or alias semi-colon
delimited. The TCP/IP address can be defined in either IPv4 or IPv6 format. For example, 123.34.45.57;
123.34.45.58 defines a valid client list in IPv4 network address format.
Secure Sockets Layer and Transport Layer Security
The useSSL attribute instructs the DRDA Service to use Secure Sockets Layer (SSL) Version 3.0 and
Transport Layer Security (TLS) Version 1.0 when responding to in-bound TCP/IP network connections.
This optional attribute accepts a Boolean value. The default value is false.
The sslCertificatePath attribute specifies the SSL or TLS certificate contained in an X.509 certificate file,
including file path, file name, and file extension. This optional attribute is required when useSSL=true,
and accepts a string value. The default value is an empty string. For example, “c:\testdir\testssl.cer” is a
fully-qualified file path and file name with file extension containing information for a X.509 certificate.
For more information on certificates, see http://technet.microsoft.com/en-us/library/cc754122.aspx.
Failover
The DRDA Service can operate within a group to provide fault tolerant failover. The group is defined by
specifying a local service role (primary or secondary), available failover partner servers, and a ping
interval for monitoring the health of servers within a group.
Primary Server
The isPrimary attribute instructs the DRDA Service whether to operate in a primary role within a group
of servers. This optional attribute accepts a Boolean value. The default value is true. The primary server
will respond to all DRDA AR client requests by processing EXCSAT (Exchange Server Attributes), ACCSEC
(Access Security) and ACCRDB (Access Relational Database), including returning a SRVLST (Server List) on
the ACCRDBRM (ACCRDB Reply Message). The Server List contains a weighted priority list of primary
(highest weighted value) and secondary servers (lowest weighted values), to inform the DRDA AR clients
to which DRDA Service computer to connect.
Partner Servers
The partnerServers attribute defines the list of secondary server computers. This optional attribute is
required when isPrimary=false, and accepts a string value. The default value is an empty string. The list
is comprised of a TCP/IP address or alias colon-separated by a TCP/IP port number. The TCP/IP address
can be defined in either IPv4 or IPv6 format. The list can contain multiple partner server computers
semi-colon delimited. For example, 123.34.45.57:446; 123.34.45.58:446 defines a valid partner server
list in IPv4 network address format.
Service for DRDA
Microsoft Corporation
Page 16
Ping Interval
The pingInterval attribute instructs the DRDA Service how frequently to monitor the health of partner
server computers, by executing an EXCSAT (Exchange Server Attribute) flow and checking for an
EXCSATRD (EXCSAT Reply Data). This optional attribute accepts an integer value. The default value is
10000 milliseconds (10 seconds).
Performance
The DRDA Service supports Windows Performance Monitor.
Performance Monitors Counters
The peformanceCountersOn attribute instructs the DRDA Service to collect information into
performance counters. This optional attribute accepts a Boolean value. The default value is false. See
the Performance topic in the Operations book for more information.
Configuring SQL Server Connections
The DRDA Service communicates to upstream local or remote SQL Server databases using the ADO.NET
Framework Provider for SQL Server. The underlying SQL Client access SQL Server via an in-memory
connection, or across a network using either Named Pipes or TCP/IP. The SQL Client supports optional
encryption and failover features to improve security and reliability. The DRDA Service supports optional
single sign-on and pooling features to improve security and performance. You can edit the
MsDrdaService.exe.config file to instruct the DRDA Service on how to manage the SQL client to SQL
Server connections.
Network
The DRDA Service connects to SQL Server through the Microsoft ADO.NET Framework Provider for SQL
Server and underlying SQL Client. The database element of the MsDrdaService.exe.config file contains
the network settings for managing out-bound SQL client connections. The database type is the
Microsoft.HostIntegration.Drda.RDB.SqlDatabase, which defines the network settings for out-bound SQL
client connections.
Connection String
The connectionString attribute defines the list of argument name and value pairs for use by the DRDA
Service in defining a Microsoft ADO.NET Framework Data Provider for SQL Server connection object.
This required attribute accepts a string value. The default value is Data Source=localhost;Integrated
Security=true;MultipleActiveResultSets=true.
Item
Description
Application Name
The Application Name property instructs the SQL Client the name
of the application to associate with the connection. This optional
property accepts a string value. The default value is an empty
string.
Service for DRDA
Microsoft Corporation
Page 17
Item
Description
Connect Timeout
The Connect Timeout property instructs the SQL Client the length
of time (in seconds) to wait for a connection to the server before
terminating the attempt and generating an error.
This optional property accepts an integer value. Valid values are
greater than or equal to 0 and less than or equal to
2147483647.The default value is 15 seconds.
Data Source
The Data Source property defines the name or network address of
the instance of SQL Server to which to connect using TCP/IP or
Named Pipes. This required property accepts a string value. The
default value is an empty string.
For TCP/IP, the formatted value starts with a “tcp:” prefix,
followed by a TCP/IP alias or address in IPv4 or IPv6 format,
followed by a backslash-separated SQL Server instance name or
comma-separated TCP/IP port number.

tcp:<host name>\<instance name>

tcp:<host name>,<TCP/IP port number>
For Named Pipes, the formatted value starts with an “np:” prefix,
followed by a host name and named pipe name.

np:\\<host name>\pipe\<pipe name>
Encrypt
The Encrypt property instructs the SQL Client to use Secure
Sockets Layer (SSL) to encrypt all data sent between SQL Client
and SQL Server. This optional property accepts a Boolean value of
true, false, yes, and no. The default value is false.
Failover Partner
The Failover Partner property informs the SQL Client of the name
of the SQL Server where database mirroring is configured. This
optional property accepts a string value. The default value is an
empty string.
Initial Catalog
The Initial Catalog property instructs the SQL Client to which
database to connect. This optional property accepts a string value
of up to 128 characters. The default value is an empty string.
Service for DRDA
Microsoft Corporation
Page 18
Item
Description
Integrated Security
The Integrated Security property instructs the SQL Client to
connect to SQL Server using Windows Authentication through the
Security Support Provider Interface (SSPI). This optional property
accepts a Boolean value of true, false, yes, and no. The default
value is false.
When this property value is true or yes, the DRDA Service will
connect to SQL Server using Windows Authentication.

Connection credentials are derived from the running
MsDrdaService.exe (service account or logged in user
when running from command line).

Connection credentials are derived from Enterprise Single
Sign-On service, when the separate Affiliate Application
argument is specified with a value. See topic on Affiliate
Application for more information.
When this property value is false or no, the DRDA Service will
connect to SQL Server using SQL Server Authentication.

Connection credentials are derived from the User ID and
Password arguments in the ConnectionString.

Connection credentials are derived from the DRDA
Application Requester Data Client, when User ID and
Password arguments are not present.
Note: You must specify false, when using Windows-initiated
Enterprise Single Sign-On and Mapped Authentication Domain
features.
Max Pool Size
The Max Pool Size property defines the maximum number of
connections the SQL Client should retain in the connection pool.
This optional property accepts an integer value. The default value
is 100.
MultipleActiveResultSets
The MultipleActiveResultSets property instructs SQL Server to
maintain multiple maintain multiple active result sets (MARS),
including open server cursor objects. This required property
accepts a Boolean value of true, false, yes, and no. The default
value is true.
Note: The DRDA Service requires MARS to support server cursors
created by static SQL CURSOR WITH HOLD statements.
Service for DRDA
Microsoft Corporation
Page 19
Item
Description
Network Library
The Network Library property instructs the SQL Client to connect
to SQL Server using shared memory or TCP/IP. This optional
property accepts a string value of dbmslpcn (Shared Memory),
dbnmpntw (Named Pipes), or dbmssocn (TCP/IP). The default
value is dbmslpcn.
Packet Size
The Packet Size property defines the size in bytes of the network
packets the SQL Client will use to communicate with an instance of
SQL Server. This optional property accepts an integer value, of
512 to 32676. The default value is 8192.
Password
The Password property defines the value for login password when
the SQL Client uses SQL Server Authentication. This optional
property accepts a string value of up to 128 characters. The
default value is an empty string.
Pooling
The Pooling property instructs the SQL Client to add newly created
connections will be added to the pool when closed by the DRDA
Service. In a next attempt to open the same connection, with the
same connection string property values, that connection will be
drawn from the pool. This optional property accepts a Boolean
value of true, false, yes, and no. The default value is false.
TrustServerCertificate
The TrustServerCertificate instructs the SQL Client to encrypt the
channel when bypassing walking the certificate chain to validate
trust. This optional property accepts a Boolean value of true,
false, yes, and no. The default value is false.
User ID
The User ID property defines the value for login user ID when the
SQL Client uses SQL Server Authentication. This optional property
accepts a string value of up to 128 characters. The default value is
an empty string.
Workstation ID
The Workstation ID property defines the name of the workstation
when connecting to SQL Server. This optional property accepts a
string value of up to 128 characters. The default value is an empty
string.
Table 2. DRDA Service supports these SqlClient Connection String argument names and values.
For more information, see SqlClient provider SqlConnection.ConnectionString property
(http://msdn.microsoft.com/library/system.data.sqlclient.sqlconnection.connectionstring.aspx).
Client Application Name
The clientApplicationName attribute instructs the DRDA Service how to set the SQL Client Application
Name connection property. This optional attribute accepts a string value. The default value is
Service for DRDA
Microsoft Corporation
Page 20
externalName, which is the DRDA External Name (EXTNAM) representing the name of the job, task or
process of the DRDA AR client program. Optionally, specify a value of transactionIdentifier, which is
bytes 5-8 of the EXTNAM representing the name of the transaction identifier of the DRDA AR client
program when running in CICS for z/OS.
Stored Procedure CALL Timeout
The storedProcedureCallTimeout attribute instructs the DRDA Service the length of time (in seconds) to
wait for SQL Server to process a CALL statement to execute a stored procedure, before terminating the
attempt and generating an error. This optional attribute accepts an integer value. Valid values are
greater than or equal to 0 and less than or equal to 2147483647. A value of 0 indicates no limit (an
attempt to execute a command will wait indefinitely). The default value is 30 seconds.
Note: This timeout value is the cumulative time-out for all network reads during command execution or
processing of the results. A timeout can still occur after the first row is returned, and does not include
user processing time, only network read time.
SQL Application
The sqlApplicationManager element of the MsDrdaService.exe.config file contains the application
settings for managing out-bound SQL client connections. The sqlApplicationManager type is the
Microsoft.HostIntegration.Drda.Server.SqlApplicationManager, which processes the out-bound SQL
client connections.
Rollback Transaction on Error
The rollbackTransactionOnError attribute instructs the DRDA Service to execute a ROLLBACK following a
negative SQL Server database error. This optional attribute accepts a Boolean value. The default value is
true.
Note: Setting this value to false may provide compatibility with custom programs attached to DB2 for
z/OS. However, setting this value to false may break compatibility with standard open platform (e.g.
ODBC) DRDA application requester clients, such as IBM DB2 Connect JDBC Driver.
Security
The DRDA Service processes authentication of in-bound TCP/IP network connections. The DRDA Service
supports optional encryption and single sign-on features to improve security and performance. The
securityManager element of the MsDrdaService.exe.config file contains the security settings for
managing in-bound DRDA client connections. The securityManager type is the
Microsoft.HostIntegration.Drda.Server.SecurityManager, which processes authentication of in-bound
TCP/IP network connections.
ESSO Host-Initiated Affiliate Application
The hostInitiatedAffiliateApplication attribute defines the Affiliate Application name that the DRDA
Service should use with Microsoft Enterprise Single Sign-On to map the in-bound DRDA AR client
credentials to a Windows Active Directory domain user, when the SQL Client uses Windows
Authentication. This optional property accepts a string value. The default value is an empty string,
which instructs the DRDA Service to not use host-initiated ESSO.
Service for DRDA
Microsoft Corporation
Page 21
Note: When using host-initiated ESSO, you must specify Integrated Security=true in the SQL Server
connection string.
Affiliate applications are logical entities that represent a system or sub-system such as a host, back-end
system, or IBM DB2 database client. Contact your SSO administrator for the SSO Affiliate Application
name. For more information, see Understanding Enterprise Single Sign-On
(http://msdn.microsoft.com/en-US/library/aa754070(v=BTS.10).aspx).
ESSO Windows-Initiated Affiliate Application
The windowsInitiatedAffiliateApplication attribute defines the Affiliate Application name that the DRDA
Service should use with Microsoft Enterprise Single Sign-On to map the Windows Active Directory
domain user to an out-bound SQL Client credentials, when the SQL Client uses SQL Server
Authentication. This optional property accepts a string value. The default value is an empty string,
which instructs the DRDA Service to not use Windows-initiated ESSO.
Optionally, specify a value of isRdbName to instruct the DRDA Service to retrieve SQL Server database
connection information from Windows-initiated Affiliate Application mapping records. For example, the
mapping record can contain an Initial Catalog argument value pair, instructing the DRDA Service to
dynamically re-direct the connection to an alternate SQL Server database. By default, the DRDA Service
connects to the SQL Server database using the DRDA client-to-server connection information—RDBNAM
(Relational Database Name) field in the DRDA client-to-server ACCRDB (Access Relational Database)
protocol flow. To use this feature, the ESSO Administrator creates a Windows-initiated Affiliate
Application with the same name as the expected in-bound DRDA RDBNAM value, defining the Affiliate
Application to contain a third field (Username, Password, “ConnectionString”), and then including in the
user credential mapping the SQL Server connection string argument value pairs. In this example, the
original RDBNAM value might be “SQL1” with corresponding Affiliate Application named “SQL1”. The
user credential mapping for “USER1” might contain “MS$SAME” for Username and Password fields, and
then “Initial Catalog=”SQLALT1” for the ConnectionString field—instructing the DRDA Service to
dynamically re-route connection requests from USER1 for database SQL1 to alternate SQL Server
database named SQLALT1.
Note: When using Windows-initiated ESSO, you must specify Integrated Security=false in the SQL Server
connection string.
Affiliate applications are logical entities that represent a system or sub-system such as a host, back-end
system, or IBM DB2 database client. Contact your SSO administrator for the SSO Affiliate Application
name. For more information, see Understanding Enterprise Single Sign-On
(http://msdn.microsoft.com/en-US/library/aa754070(v=BTS.10).aspx).
Security Token Timeout
The DRDA Service will cache the security token obtained from Microsoft Enterprise Single Sign-On and
Mapped Authentication Domain features for a configured duration of time, with which to use when
connecting to SQL Server configured for Windows authentication using integrated Security Support
Provider Interface (SSPI).
The securityTokenTimeout attribute instructs the DRDA Service to retain a security token for a duration
of time, after which to obtain a new Windows Client Identifier (CID). This optional attribute accepts a
Service for DRDA
Microsoft Corporation
Page 22
duration value. The default value is PT8H (Period of Time is 8 hours). The duration value is specified in
the form PnYnMnDTnHnMnS.
Item
Description
P
Period of time for the duration (required)
nY
Number of years.
nM
Number of months.
nD
Number of days.
T
Start of a time section (required to specify a time duration consisting of hours, minutes, or
seconds).
nH
Number of hours.
nM
Number of minutes.
S
Number of seconds.
Table 3. Duration of time expressed in XML format.
Mapped Authentication
The mappedAuthenticationDomain attribute instructs the DRDA Service to which Microsoft Windows
Active Directory domain to map the in-bound DRDA client credentials (user name and password), when
connecting to SQL Server configured for Windows authentication using integrated Security Support
Provider Interface (SSPI), but not when using Microsoft Enterprise Single Sign-On. This optional attribute
accepts a string value. The default value is an empty string.
Note: The Mapped Authentication Domain security authentication requires the following additional
configuration.
SQL Server Database Connection
The Integrated Security argument in the SQL Server connection string must be set to a value of true.
The hostInitiatedAffiliateApplication attribute within the database element of the
MsDrdaService.exe.config file must be set to a value of empty string. You cannot utilize host-initiated
ESSO concurrently with Mapped Authentication Domain security authentication.
Windows Security for the DRDA Service Account
The MsDrdaService.exe must run in the context of a domain user account (Domain\User).
The service account must be a member of the HIS Administrators and HIS Runtime Users Local Groups.
Local Security Policy
The service account requires these Local Security Policy settings to run as a service:

The service account requires Log on as a service.

The service account requires Act as part of the operating system.
Service for DRDA
Microsoft Corporation
Page 23

The service account requires Access Credential Manager as a trusted caller.

The service account requires Enable computer and user accounts to be trusted for delegation.
DB2 for z/OS Connection Database (CDB)
Table
Column
Value
Description
SYSIBM.IPNAMES
SECURITY_OUT
P
The value “P” denotes password with
authorization identifier.
SYSIBM.IPNAMES
USERNAMES
O
The value “O” denotes outbound identifier from
SYSIBM.USERNAMES table.
SYSIBM.USERNAMES
TYPE
O
The value “O” denotes outbound translation.
SYSIBM.USERNAMES
AUTHID
<string> The string value is the Windows Active Directory
domain user name.
SYSIBM.USERNAMES
PASSWORD
<string> The string value is the Windows Active Directory
domain password.
Table 4. DB2 for z/OS Connection Database settings required to support Mapped Authentication Domain
security authentication.
Authentication Lookup Timeout
The authenticationLookupTimeout attribute instructs the DRDA Service the duration of time to wait for
a security authentication lookup request before failing. This optional attribute accepts a duration value.
The default value is PT30S (Period of Time is 30 seconds). The duration value is specified in the form
PnYnMnDTnHnMnS.
Item
Description
P
Period of time for the duration (required)
nY
Number of years.
nM
Number of months.
nD
Number of days.
T
Start of a time section (required to specify a time duration consisting of hours, minutes, or
seconds).
nH
Number of hours.
nM
Number of minutes.
S
Number of seconds.
Table 5. Duration of time expressed in XML format.
Service for DRDA
Microsoft Corporation
Page 24
Authentication Lookup Retries
The authenticationLookupRetries attribute instructs the DRDA Service the number of times to attempt
a security authentication lookup request before failing. This optional attribute accepts an integer value.
The default value is 3 retries.
SET Statements
The DRDA Service connects to SQL Server through the Microsoft ADO.NET Framework Provider for SQL
Server and underlying SQL Client. The sqlSet element of the MsDrdaService.exe.config file contains the
SET statements the DRDA Service will issue for each SQL Server connection, in order to alter the current
session handling of specific information.
SET ARITHABORT
The arithAbort attribute instructs the DRDA Service to issue the SET ARITHABORT statement at
connection time, to request SQL Server to terminate a query when an overflow or divide-by-zero error
occurs during query execution. This optional attribute accepts a string value. The default is ON.
Configuring Database Alias Mappings
IBM DB2 and Microsoft SQL Server databases utilize different terminology for naming objects, as can be
seen in the following table defining the fully-qualified three-part object identifier for a table. The DRDA
Service can map DB2 catalog and schema names to SQL Server catalog and schema names.
Platform
Catalog
Schema
Table
DB2 for z/OS
LOCATION
COLLECTION (aka
OWNER)
TABLENAME
DB2 for i5/OS
RELATIONAL DATABASE NAME
(RDBNAM)
COLLECTION (aka
LIBRARY)
TABLENAME
DB2 for LUW
DATABASE
SCHEMA
TABLENAME
SQL Server
DATABASE
SCHEMA
TABLENAME
DRDA
RELATIONAL DATABASE NAME
(RDBNAM)
COLLECTION
TABLENAME
Table 6. Three-part table naming conventions.
The databaseAliases element instructs the DRDA Service to map in-bound catalog and schema names to
outbound catalog and schema names, for use when executing static SQL packages for DB2 commands
mapped to SQL Server stored procedures. The databaseAlias element contains a sourceLocation,
sourceCollection, targetDatabase, and targetSchema to define one or more optional object name
mappings.
Note: The databaseAliases element is not used when binding packages or executing dynamic SQL
statements.
Service for DRDA
Microsoft Corporation
Page 25
Source Location
The sourceLocation attribute defines an in-bound DRDA RDBNAM (Relational Database Name) that the
DRDA Service should use when mapping to an out-bound SQL Server database name. This optional
property accepts a string value. The default value is an empty string, which denotes any value.
Note: When connecting DB2 for z/OS to the DRDA Service, the sourceLocation value may be the
database alias (DBALIAS) value from the DB2 for z/OS Connection Database (CDB) table
SYSIBM.LOCATIONS.
Source Collection
The sourceCollection attribute defines an in-bound DRDA COLID (Collection Identifier) that the DRDA
Service should use when mapping to an out-bound SQL Server schema name. This optional attribute
accepts a string value. The default value is an empty string, which denotes any value.
Target Database
The targetDatabase attribute defines an out-bound SQL Server database name that the DRDA Service
should use when mapping from an in-bound DRDA RDBNAM value. This optional attribute accepts a
string value. The default value is an empty string, which denotes any value.
Target Schema
The targetSchema attribute defines an out-bound SQL Server schema name that the DRDA Service
should use when mapping from an in-bound DRDA COLID value. This optional attribute accepts a string
value. The default value is an empty string, which denotes any value.
Example: The DRDA Service can map a DB2 location name (e.g. CONTOSO) to a SQL Server database
name (e.g. ContosoRetailDW), and a DB2 collection name (e.g. PROD1) to a SQL Server database schema
name (e.g., dbo).
<databaseAliases>
<databaseAlias
sourceLocation="CONTOSO"
sourceCollection="PROD1"
targetDatabase="ContosoRetailDW"
targetSchema="dbo" />
<databaseAlias sourceLocation="NWIND"
sourceCollection="DSN8HC91"
targetDatabase="Northwind"
targetSchema="DSN8910" />
</databaseAliases>
Example. DRDA Service can map DB2 catalog and schema names to SQL Server names.
At runtime, the DB2 DRDA AR connects to the relational database using the DBALIAS value.
DrdaAs Information: 1 : [<timestamp>] Processing ACCRDB
DrdaAs Information: 1 : [<timestamp>] Processing ACCRDB
RDBNAME="ContosoRetailDW"
...
Service for DRDA
Microsoft Corporation
Page 26
DrdaAs Information: 0 : [<timestamp>] Transformed:
SELECT * FROM CONTOSO.DSN8HC91.FACTSALES FOR FETCH ONLY
SELECT * FROM ContosoRetailDW.DSN8910.FACTSALES FOR FETCH ONLY
Example. DRDA Service trace output of the DRDA ACCRDB connection and EXCSQLSTT command.
Configuring Package Bind Processing
Internal Package Binder
The DRDA Service will convert static SQL for DB2 packages into SQL Server stored procedures, by
processing DRDA Begin Bind (BGNBND) and Bind SQL Statement (BNDSQLSTT) commands into SQL
Server DROP PROCEDURE and CREATE PROCEDURE statements. A DRDA BGNBND flow will contain one
or more BNDSQLSTT flows, one per SQL statement stored within the package. The DRDA Service maps
one DRDA static SQL package section (with one statement) to one SQL Server stored procedure. The
DRDA Service maps or preserves the BGNBND package bind options in comments within the stored
procedures, and optional extended stored procedure properties. The DRDA Service uses an internal SQL
transformer to convert SQL command syntax, parameters, data types, cursors, and results sets.
Optionally, you can develop a custom package bind listener to process the packages interactively with
the DRDA Service or off-line.
Package Procedure
The createPackageProcedure attribute instructs the DRDA Service to process a single BGNBND flow into
a SQL Server stored procedure, transforming the original statements as defined by the DRDA
BNDSQLSTT flows into corresponding SQL Server syntax. This optional attribute accepts a Boolean value.
The default value is true.
Package XML
The createPackageXml attribute instructs the DRDA Service to process a single BGNBND flow into a
static SQL for DB2 package XML file, preserving the original bind options and statements as defined by
the DRDA BNDSQLSTT flows. This optional attribute accepts a Boolean value. The default value is false.
Note: The DRDA Service will process a DRDA PKGRPLOPT (Package Replacement Option) by transforming
this code point into a DROP PROCEDURE statement.
Package XML Format
The packageXmlFormat attribute instructs the DRDA Service to write the static SQL for DB2 XML file in
the either v90 or v85 format. This optional attribute accepts a string value of either v85 or v90. The
default value is v90.
Note: Microsoft HIS 2010 2013 (V9) supports both the old and new format, which includes an associated
XML schema for validating the XML document. Microsoft HIS 2009 and HIS 2010 (V8.5) support the old
format only.
Package XML Location
The packageXmlLocation attribute instructs the DRDA Service where to write the static SQL for DB2
package XML file. This optional attribute accepts a string value. The default value is c:\temp.
Service for DRDA
Microsoft Corporation
Page 27
Note: The DRDA Service does not validate the SQL command syntax when processing the DRDA
BGNBND to static SQL for DB2 XML file. The DRDA Service preserves the original bind options, SQL
statement syntax, data types, and other values.
Stored Procedure Name
DRDA defines a fully-qualified static SQL package using a PKGNAMCT (Package Name and Consistency
Token) that consists of these multiple parts.





RDBNAM (Relational Database Name)
DRDA RDBCOLID (RDB Collection Identifier)
DRDA PKGID (RDB Package Identifier)
DRDA PKGCNSTKN (RDB Package Consistency Token)
DRDA PKGSN (Package Section Number)
The DRDA Service converts the DRDA package name into a SQL Server stored procedure name, removing
the RDBNAM part, separating the RDBCOLID using a period, and then separating the remaining three
parts using a single underscore character.
DRDA BGNBND static SQL package naming convention:
RDBNAME.RDBCOLID.PKGID.PKGCNSTKN.PKGSN
DRDA Service mapped SQL Server stored procedure naming convention:
CollectionIdentifer.PackageIdentifier_PackageConsistencyToken_Pac
kageSectionNumber
Original package schema and name:
CONTOSO.DSN8HC91_PKGSAMP1_43484152544F4B31_1
Mapped package schema and name:
ContosoRetailDW.DSN8910_PKGSAMP1_43484152544F4B31_1
The storedProcedureNameSeparator attribute instructs the DRDA Service what separator character to
use when mapping a DRDA package name to a SQL Server stored procedure name. This optional
attribute accepts a string value. The default value is a single underscore character (_).
Package Bind Options
The createPackageProcedureWithExtendedProperties attribute instructs the DRDA Service to preserve
the BGNBND package bind options as extended properties on the SQL Server stored procedure. This
optional attribute accepts a Boolean value. The default value is false.
Package Procedure Schema
The DRDA Service will process DRDA EXCSQLSTT (Execute SQL Statement) and OPNQRY (Open Query)
commands by executing a SQL Server CALL statement against a corresponding SQL Server stored
procedure. The DRDA Service will locate the target SQL Server stored procedure in a schema name
derived from the value of the DRDA RDBCOLID (RDB Collection Identifier), within the DRDA PKGNAMCT
(Package Name and Consistency Token) or fully-qualified package name that is part of the DRDA
EXCSQLSTT and OPNQRY command flows.
Service for DRDA
Microsoft Corporation
Page 28
The packageProcedureSchemaList instructs the DRDA Service to locate the target SQL Server stored
procedure in alternative schemas. This optional attribute accepts a string value. The default value is an
empty string. The string is comprised of a comma-separated SQL Server schema names.
packageProcedureSchemaList="DBO,DSN8910"
The packageProcedureSchemaList attribute is similar to the IBM DB2 for z/OS CURRENT PACKAGESET
special register and SET CURRENT PACKAGESET statement. The DRDA Service will combine the naming
mapping conventions contained within both the databaseAliases element and the
packageProcedureSchemaList attribute.
Original package schema and name:
CONTOSO.DSN8HC91_MSDB2SDK_43484152544F4B31_1
Mapped package schema and name:
ContosoRetailDW.DSN8910_MSDB2SDK_43484152544F4B31_1
First, the DRDA Service will attempt to locate the metadata for the target SQL Server stored procedure
within the DRDA Service package procedure cache, using the literal package procedure name, and then
using the mapped name using the package procedure schema list values.
Second, the DRDA Service will attempt to locate the metadata for the target SQL Server stored
procedure within the SQL Server database catalog, using the literal package procedure name, and then
using the mapped name using the package procedure schema list values.
Package Procedure Cache
The DRDA Service will process DRDA EXCSQLSTT (Execute SQL Statement) and OPNQRY (Open Query)
commands by executing a SQL Server CALL statement against a corresponding SQL Server stored
procedure. Prior to executing the CALL statement, the DRDA Service will fetch metadata for the SQL
Server stored procedure with which to verify the statement type (SELECT, INSERT, UPDATE, DELETE),
cursor type (WITH HOLD), parameter data types (e.g. CHAR FOR BIT), and other attributes (e.g. has
results). After fetching the metadata, the DRDA Service will cache this information, including the
mapped procedure name, for a configured interval in a package procedure cache.
Package Procedure Cache Flush
The packageProcedureCacheFlush attribute instructs the DRDA Service to flush the package procedure
cache after a specified interval of time. This optional attribute accepts a duration value. The default
value is P1D (Period of Time is 1 Day). The duration value is specified in the form PnYnMnDTnHnMnS.
Item
P
nY
nM
nD
T
nH
nM
Description
Period of time for the duration (required)
Number of years.
Number of months.
Number of days.
Start of a time section (required to specify a time duration consisting of hours, minutes, or
seconds).
Number of hours.
Number of minutes.
Service for DRDA
Microsoft Corporation
Page 29
Item Description
S
Number of seconds.
Table 7. Duration of time expressed in XML format.
Package Procedure Last Invoke
The packageProcedureLastInvoke attribute instructs the DRDA Service to write the names of objects in
the package procedure cache to a text file, %DRDAROOT%\LastInvokePackageProcedures.txt, after a
specified interval of time. This optional attribute accepts a duration value. The default value is PT0S
(Period of Time is Zero Seconds), which disables the reading and writing of the
LastInvokePackageProcedures.txt file. At service startup, the DRDA Service will load this text file to prefetch schema for procedures listed in the file. The duration value is specified in the form
PnYnMnDTnHnMnS.
Item
P
nY
nM
nD
T
Description
Period of time for the duration (required)
Number of years.
Number of months.
Number of days.
Start of a time section (required to specify a time duration consisting of hours, minutes, or
seconds).
nH
Number of hours.
nM
Number of minutes.
S
Number of seconds.
Table x. Duration of time expressed in XML format.
Note: To improve performance of service startup, you can edit this file and remove unneeded stored
procedure names. To improve performance of runtime execution, you can edit this file to include
additional stored procedure names. To disable the reading and writing of the
LastInvokePackageProcedures.txt file, set the timespan to PT0S (Period of Time Zero Seconds).
Custom Package Binder
The DRDA Service supports custom package binders in the form of a .NET Framework custom listener.
See Programmer’s Guide and Reference for information on the custom package bind listener sample.
The packageBindListeners element contains one or more packageBindListener elements to instruct the
DRDA Service to send bind package with bind SQL statement output to optional custom bind listeners.
The packageBindListener element contains a set of attributes to define a custom bind listener. The type
is Microsoft.HostIntegration.Drda.Common.PackageBindListener, which defined a DRDA Service custom
bind listener.
Custom Bind Listener
The createPackageProcedureWithCustomSqlScripts attribute instructs the DRDA Service to process
DRDA BGNBND and BNDSQLSTT through an external custom package bind listener component. This
optional attribute accepts a Boolean value. The default value is false.
Note: The custom package bind listener component must be referenced in the
MsDrdaService.exe.config as follows.
<packageBindListeners>
Service for DRDA
Microsoft Corporation
Page 30
<packageBindListener
type="Microsoft.HostIntegration.Drda.Common.PackageBindListener,
Microsoft.HostIntegration.Drda.Common, Version=9.0.1000.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
errorWhenNoCallback="true"
/>
</packageBindListeners>
Example x. Default values for packageBindListener in the DRDA Service application configuration file.
Error When No Callback
The errorWhenNoCallback attribute instructs the DRDA Service to return BGNBNDRM (Begin Bind Reply
Message) to the DRDA AR client, when the custom bind listener component does not return any
information on the callback interface. This optional attribute accepts a Boolean value. The default value
is true.
Configuring SQL Syntax Transformations
The DRDA Service will utilize a set of SQL command syntax transformers. The primary SQL transformer is
within the MsDrdaService.exe and is referred to as the SQL parser, providing core transformations for
most commonly required syntax. The secondary SQL transformer is within the SQL Server database .NET
CLR (Common Language Runtime), where the MsDrdaService setup program will install optional DB2 to
SQL Server mapped functions. The DRDA Service supports STRIP, TRANSLATE, HEX, and CHAR mapped
CLR functions.
SQL Transformer
The sqlTransforms attribute instructs the DRDA Service to utilize internal service or external CLR-based
SQL transforms. This optional attribute accepts a string value of Service or Clr. The default value is
Service.
Note: To enable SQL Server CLR Integration, execute the following stored procedure.
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO
Example x. SQL Server stored procedure to enable CLR integration.
For more information on Enabling CLR Integration, see http://msdn.microsoft.com/enus/library/ms131048.aspx.
SQL Transformer Unicode Output
The SQL Transformer will output NCHAR and NVARCHAR for all string values. The
sqlTransformsUnicodeOutput attribute instructs the DRDA Service to encode output from the CLRbased SQL transformer in Unicode or ANSI. This optional attribute accepts a Boolean value. The default
value is false, which instructs the DRDA Service to output ANSI CHAR and VARCHAR strings.
Service for DRDA
Microsoft Corporation
Page 31
Configuring Data Type Mappings
The DRDA Service converts base data types from DB2 to SQL Server, and from SQL Server to DB2.
Optionally, you can edit these XML files to modify the base data type mappings.
C:\Program Files\Microsoft Host Integration Server 2013\system\
DB2ToMSSql.xml
C:\Program Files\Microsoft Host Integration Server 2013\system\
MSSQLToDB2.xml
Configuring Date Time Conversions
The DRDA Service will format string literal date time values from source and into target formats when
processing dynamic and static SQL statements, for specific date time and character data types. The
conversionFormats element contains dateMasks, timeMasks, and dateTimeMasks for converting to and
from DB2 and SQL Server datetime formats.
1. When reading data from DB2 and writing to SQL Server, the MsDrdaService will read string
literal values that match source DB2 formats specified in the app config, and then write string
literal values into the default SQL Server format.
2. When reading data from SQL Server and writing to DB2, the MsDrdaService will read string
literal values that match known input formats, and then write string literal values into the DB2
target format specified in the app config.
<conversionFormats>
<dateTimeMasks>
</dateTimeMasks>
<timeMasks>
</timeMasks>
<dateMasks>
</dateMasks>
</conversionFormats>
Example x. Example of the conversionFormats portion of the MsDrdaService.exe.config file.
Date
The DRDA Service will process string literal date values within DB2 and SQL Server DATE, CHAR (10), and
VARCHAR (10) data types, to convert from DB2 date format to SQL Server date format, and to convert
from SQL Server date format to DB2 date format. The dateMasks contains one or more dateMask
elements to define date mappings. The dateMask element contains a db2ToSql or sqlToDb2 to indicate
the direction, and a sourceFormat and a targetFormat to specify the mapping. The db2ToSql defines the
direction from DB2 to SQL Server. The sqlToDb2 defines the direction from SQL Server to DB2.
DB2 DATE to SQL Server date
When reading data from DB2 and writing to SQL Server, the MsDrdaService will read string literal DB2
date values that match input DB2 date source formats specified in the app config, and then write string
literal SQL Server date values into the default SQL Server date format.
<dateMask>
<db2ToSql sourceFormat="YmdHyphen"/>
</dateMask>
Service for DRDA
Microsoft Corporation
Page 32
Example x. DRDA Service will process strings to match the input DB2 date source format YYYY-MM-DD.
The sourceFormat attribute defines the format of the source string that the DRDA Service should
identify as an input string literal date value. This optional attribute accepts an enumerated value. The
default is YmdHyphen.
Format Name Format Mask Description
ISO
yyyy-mm-dd
ISO date format seperator
Usa
mm/dd/yyyy
USA date format seperator
Eur
dd.mm.yyyy
EUR date format seperator
Jis
yyyy-mm-dd
JIS date format seperator
DmyBlank
dd mm yy
Day Month Year with blank seperator
DmyComma
dd,mm,yy
Day Month Year with comma seperator
DmyHyphen
dd-mm-yy
Day Month Year with hyphen seperator
DmyPeriod
dd.mm.yy
Day Month Year with period seperator
DmySlash
dd/mm/yy
Day Month Year with slash seperator
JulBlank
yy ddd
Julian with blank seperator
JulComma
yy,ddd
Julian with comma seperator
JulHyphen
yy-ddd
Julian with hyphen seperator
JulPeriod
yy.ddd
Julian with period seperator
JulSlash
yy/ddd
Julian with slash seperator
MdyBlank
mm dd yy
Month Day Year with blank seperator
MdyComma
mm,dd,yy
Month Day Year with comma seperator
MdyHyphen
mm-dd-yy
Month Day Year with hyphen seperator
MdyPeriod
mm.dd.yy
Month Day Year with period seperator
MdySlash
mm/dd/yy
Month Day Year with slash seperator
YmdBlank
yy mm dd
Year Month Day with blank seperator
YmdComma
yy,mm,dd
Year Month Day with comma seperator
YmdHyphen
yy-mm-dd
Year Month Day with hyphen seperator
YmdPeriod
yy.mm.dd
Year Month Day with period seperator
YmdSlash
yy/mm/dd
Year Month Day with slash seperator
Table 8. Supported sourceFormat attribute values for use with db2ToSql dateMask conversion.
SQL Server date to DB2 DATE
When reading data from SQL Server and writing to DB2, the MsDrdaService will read string literal date
values that match known input SQL Server date formats, and then write string literal date values into the
DB2 date target format specified in the app config.
<dateMask>
<sqlToDb2 targetFormat="YmdHyphen"/>
</dateMask>
Example x. DRDA Service will process strings to match the DB2 date target format YYYY-MM-DD.
The targetFormat attribute defines the format of the target string that the DRDA Service should produce
as an output string literal date value. This optional attribute accepts an enumerated value. The default
is YmdHyphen.
Service for DRDA
Microsoft Corporation
Page 33
Format Name Format Mask Description
ISO
yyyy-mm-dd
ISO date format seperator
Usa
mm/dd/yyyy
USA date format seperator
Eur
dd.mm.yyyy
EUR date format seperator
Jis
yyyy-mm-dd
JIS date format seperator
DmyBlank
dd mm yy
Day Month Year with blank seperator
DmyComma
dd,mm,yy
Day Month Year with comma seperator
DmyHyphen
dd-mm-yy
Day Month Year with hyphen seperator
DmyPeriod
dd.mm.yy
Day Month Year with period seperator
DmySlash
dd/mm/yy
Day Month Year with slash seperator
JulBlank
yy ddd
Julian with blank seperator
JulComma
yy,ddd
Julian with comma seperator
JulHyphen
yy-ddd
Julian with hyphen seperator
JulPeriod
yy.ddd
Julian with period seperator
JulSlash
yy/ddd
Julian with slash seperator
MdyBlank
mm dd yy
Month Day Year with blank seperator
MdyComma
mm,dd,yy
Month Day Year with comma seperator
MdyHyphen
mm-dd-yy
Month Day Year with hyphen seperator
MdyPeriod
mm.dd.yy
Month Day Year with period seperator
MdySlash
mm/dd/yy
Month Day Year with slash seperator
YmdBlank
yy mm dd
Year Month Day with blank seperator
YmdComma
yy,mm,dd
Year Month Day with comma seperator
YmdHyphen
yy-mm-dd
Year Month Day with hyphen seperator
YmdPeriod
yy.mm.dd
Year Month Day with period seperator
YmdSlash
yy/mm/dd
Year Month Day with slash seperator
Table 9. Supported targetFormat attribute values for use with sqlToDb2 dateMask conversion.
Time
The DRDA Service will process string literal time values within DB2 and SQL Server TIME, CHAR (8), and
VARCHAR (8) data types, to convert from DB2 time format to SQL Server time format, and to convert
from SQL Server time format to DB2 time format. The timeMasks contains one or more timeMask
elements to define time mappings. The timeMask element contains a db2ToSql or sqlToDb2 to indicate
the direction, and a sourceFormat and a targetFormat to specify the mapping. The db2ToSql defines the
direction from DB2 to SQL Server. The sqlToDb2 defines the direction from SQL Server to DB2.
DB2 TIME to SQL Server time
When reading data from DB2 and writing to SQL Server, the MsDrdaService will read string literal DB2
time values that match input DB2 time source formats specified in the app config, and then write string
literal SQL Server time values into the default SQL Server time format.
<timeMask>
<db2ToSql sourceFormat="HmsColon"/>
</timeMask>
Example x. DRDA Service will process strings to match the input DB2 time source format HH:MM:SS.
Service for DRDA
Microsoft Corporation
Page 34
The sourceFormat attribute defines the format of the source string that the DRDA Service should
identify as an input string literal time value. This optional attribute accepts an enumerated value. The
default is HmsColon.
Format Name Format Mask Description
HmsBlank
hh mm ss
Hour Minute Second with blank separator
HmsColon
hh:mm:ss
Hour Minute Second with colon separator
HmsComma
hh,mm,ss
Hour Minute Second with comma separator
HmsPeriod
hh.mm.ss
Hour Minute Second with period separator
Table 10. Supported sourceFormat attribute values for use with db2ToSql timeMask conversion.
SQL Server time to DB2 TIME
When reading data from SQL Server and writing to DB2, the MsDrdaService will read string literal time
values that match known input SQL Server time formats, and then write string literal time values into
the DB2 time target format specified in the app config.
<timeMask>
<sqlToDb2 targetFormat="HmsColon"/>
</timeMask>
Example x. DRDA Service will process strings to match the DB2 time target format HH:MM:SS.
The targetFormat attribute defines the format of the target string that the DRDA Service should produce
as an output string literal time value. This optional attribute accepts an enumerated value. The default
is HmsColon.
Format Name Format Mask Description
HmsBlank
hh mm ss
Hour Minute Second with blank separator
HmsColon
hh:mm:ss
Hour Minute Second with colon separator
HmsComma
hh,mm,ss
Hour Minute Second with comma separator
HmsPeriod
hh.mm.ss
Hour Minute Second with period separator
Table 11. Supported targetFormat attribute values for use with sqlToDb2 timeMask conversion.
Timestamp
The DRDA Service will process string literal timestamp values within DB2 and SQL Server TIMESTAMP,
DATETIME2 (6), CHAR (26), and VARCHAR (26) data types, to convert from DB2 timestamp format to SQL
Server datetime2 (6) format, and to convert from SQL Server datetime2 (6) format to DB2 timestamp
format. The dateTimeMasks contains one or more dateTimeMask elements to define timestampdatetime mappings. The dateTimeMask element contains a db2ToSql or sqlToDb2 to indicate the
direction, and a sourceFormat and a targetFormat to specify the mapping. The db2ToSql defines the
direction from DB2 to SQL Server. The sqlToDb2 defines the direction from SQL Server to DB2.
DB2 TIMESTAMP to SQL Server datetime2
When reading data from DB2 and writing to SQL Server, the MsDrdaService will read string literal DB2
timestamp values that match input DB2 timestamp source formats specified in the app config, and then
write string literal SQL Server datetime2 (6) values into the default SQL Server datetime2 (6) format.
<dateTimeMask>
<db2ToSql sourceFormat="Db2TimestampFormat"/>
</dateTimeMask>
Service for DRDA
Microsoft Corporation
Page 35
Example x. DRDA Service will process strings to match the input DB2 timestamp source format YYYYMM-DD hh:mm:ss.nnnnnn.
The sourceFormat attribute defines the format of the source string that the DRDA Service should
identify as an input string literal timestamp value. This optional attribute accepts an enumerated value.
The default is Db2TimestampFormat.
Format Name
Format Mask
Db2TimestampFormat
YYYY-MM-DD-hh:mm:ss.tttttt
IsoTimestampFormat
YYYY-MM-DD.hh.mm.ss.tttttt
SqlServerTimestampFormat YYYY-MM-DD hh:mm:ss.tttttt
AnyTimeStampFormat
YYYY?MM?DD?hh?mm?ss?tttttt
Table 12. Supported sourceFormat attribute values for use with db2ToSql dateTimeMask conversion.
SQL Server datetime2 to DB2 TIMESTAMP
When reading data from SQL Server and writing to DB2, the MsDrdaService will read string literal
timestamp values that match known input SQL Server datetime2 (6) formats, and then write string
literal date values into the DB2 timestamp target format specified in the app config.
<dateTimeMask>
<sqlToDb2 targetFormat="Db2TimestampFormat"/>
</dateTimeMask>
Example x. DRDA Service will process strings to match the DB2 timestamp target format YYYY-MM-DD
hh:mm: ss.nnnnnn.
The targetFormat attribute defines the format of the target string that the DRDA Service should produce
as an output string literal timestamp value. This optional attribute accepts an enumerated value. The
default is Db2TimestampFormat.
Format Name
Format Mask
Db2TimestampFormat
YYYY-MM-DD-hh:mm:ss.tttttt
IsoTimestampFormat
YYYY-MM-DD.hh.mm.ss.tttttt
SqlServerTimestampFormat YYYY-MM-DD hh:mm:ss.tttttt
Table 13. Supported targetFormat attribute values for use with sqlToDb2 dateTimeMask conversion.
Configuring Service Encodings
The DRDA Service maps code pages and supports custom code page conversions using an underlying HIS
Encoder component and the Windows National Language Support (NLS) system components.
Custom NLS Code Pages
Using Microsoft Windows Update, you can install additional Windows language packs that include
Windows NLS code page conversion libraries. Optionally, the HIS Encoder can load a custom NLS code
page based on codePage elements defined within the codePages portion of the
MsDrdaService.exe.config file.
Code Page Number
The number attribute instructs the HIS Encoder to load a custom NLS code page file. This optional
attribute accepts an integer. The default value is 0.
Service for DRDA
Microsoft Corporation
Page 36
Code Page Name
The name attribute names the custom NLS code page that the HIS Encoder should load based on the
defined custom NLS code page number. This optional attribute accepts a string. The default value is an
empty string.
Code Page Description
The description attribute describes the custom NLS code page that the HIS Encoder should load based
on the defined custom NLS code page number. This optional attribute accepts a string. The default
value is an empty string.
NLS Code Page Number
The nlsCodePage attribute defines which standard NLS code page number that the HIS Encoder should
replace with the custom code page number. This optional attribute accepts an integer. The default
value is 0.
For example, to replace the standard NLS code page for “EBCDIC - U.S./ Canada (Euro)” CCSID 1140 with
a custom NLS code page “EBCDIC US Custom” custom code page file 21140.nls and custom code page
number 21140, specify the following.
<codePage number="21140"
name="Custom21140"
description="Custom codepage based on 1140"
nlsCodePage="1140">
Example x. DRDA Service maps code pages and supports custom code page conversions using an
underlying HIS Encoder component and the Windows National Language Support (NLS) system
components.
Custom Code Point Mappings
The HIS Encoder can custom map code points within standard NLS and custom NLS code pages based on
ebcdicToUnicodeConversion elements defined within the codePages portion of the
MsDrdaService.exe.config file.
EBCDIC to UNICODE
The “from” and “to” attributes within an ebcdicToUnicode element instruct the HIS Encoder to convert
from and to these code points. This optional attribute accepts a string value, in the form of a hex code
point value.
The reversible attribute instructs the HIS Encoder to convert in the reversible direction. This optional
attribute accepts a Boolean value. The default is false.
UNICODE to EBCDIC
The “from” and “to” attributes within a unicodeToEbcdic element instruct the HIS Encoder to convert
from and to these code points. This optional attribute accepts a string value, in the form of a hex code
point value.
The reversible attribute instructs the HIS Encoder to convert in the reversible direction. This optional
attribute accepts a Boolean value. The default is false.
Service for DRDA
Microsoft Corporation
Page 37
Conversion Behavior
The HIS Encoder is shared by a number of Microsoft Host Integration Server 2013 features, including the
DRDA Service and Transaction Integrator. The conversionBehavior element is for use by Transaction
Integrator only. The DRDA Service does not require this element.
Configuring Application Encodings
The DRDA Service converts base code pages and maps code points using an underlying HIS Encoder
component and the Windows National Language Support (NLS) system components. The
applicationEncodings element contains applicationEncoding elements for specifying default
application-level encoding schemes on a per-database basis.
Default Encodings
The DRDA Service will encode character strings in output parameter and result set values using the
encoding scheme and Coded Character Set Identifier (CCSID) specified by the DRDA Application
Requester client in the ACCRDB (Access Relational Database) request.
Application Encodings
Optionally, the DRDA Service can encode character strings based on overrides defined in one or more
applicationEncoding elements within the applicationEncodings portion of the MsDrdaService.exe.config
file.
Application Encoding Scheme
The scheme attribute instructs the DRDA Service to encode output parameter and result set values using
an override encoding scheme, and not the DRDA AR client-requested encoding scheme. This optional
attribute accepts a string value. The supported values are Ebcdic, Unicode, and Ansi. The default value is
Unicode.
Application Encoding CCSID
The ccsid attribute instructs the DRDA Service to encode output parameter and result set values using
an override CCSID (Coded Character Set Identifier), and not the DRDA AR client-requested CCSID. This
optional attribute accepts an integer. The default value is 1208.
Name
ANSI - Arabic
ANSI - Baltic
ANSI - Central Europe
ANSI - Cyrillic
ANSI - Greek
ANSI - Hebrew
ANSI - Latin I
ANSI - Turkish
EBCDIC - Arabic
EBCDIC - Cyrillic (Russian)
EBCDIC - Cyrillic (Serbian, Bulgarian)
EBCDIC - Denmark/ Norway
Service for DRDA
CCSID
1256
1257
1250
1251
1253
1255
1252
1254
420
880
1025
277
NLS File
c_1256.nls
c_1257.nls
c_1250.nls
c_1251.nls
c_1253.nls
c_1255.nls
c_1252.nls
c_1254.nls
c_20420.nls
c_20880.nls
c_21025.nls
c_20277.nls
Microsoft Corporation
Euro-enabled
No
No
No
No
No
No
No
No
No
No
No
No
Page 38
Name
CCSID
EBCDIC - Denmark/ Norway (Euro)
1142
EBCDIC - Finland/ Sweden
278
EBCDIC - Finland/ Sweden (Euro)
1143
EBCDIC - France
297
EBCDIC - France (Euro)
1147
EBCDIC - Germany
273
EBCDIC - Germany (Euro)
1141
EBCDIC - Greek
423
EBCDIC - Greek (Modern)
875
EBCDIC - Hebrew
424
EBCDIC - Icelandic
871
EBCDIC - Icelandic (Euro)
1149
EBCDIC - International
500
EBCDIC - International (Euro)
1148
EBCDIC - Italy
280
EBCDIC - Italy (Euro)
1144
EBCDIC - Latin America/Spain
284
EBCDIC - Latin America/Spain (Euro)
1145
EBCDIC - Multilingual/ ROECE (Latin-2) 870
EBCDIC - Thai
838
EBCDIC - Turkish (Latin-3)
905
EBCDIC - Turkish (Latin-5)
1026
EBCDIC - U.S./ Canada
37
EBCDIC - U.S./ Canada (Euro)
1140
EBCDIC - United Kingdom
285
EBCDIC - United Kingdom (Euro)
1146
Table 14. Application Encoding CCSID values.
NLS File
c_1142.nls
c_20278.nls
c_1143.nls
c_20297.nls
c_1147.nls
c_20273.nls
c_1141.nls
c_20423.nls
c_875.nls
c_20424.nls
c_20871.nls
c_1149.nls
c_500.nls
c_1148.nls
c_20280.nls
c_1144.nls
c_20284.nls
c_1145.nls
c_870.nls
c_20838.nls
c_20905.nls
c_1026.nls
c_037.nls
c_1140.nls
c_20285.nls
c_1146.nls
Euro-enabled
Yes
No
Yes
No
Yes
No
Yes
No
No
No
No
Yes
No
Yes
No
Yes
No
Yes
No
No
No
No
No
Yes
No
Yes
Application Encoding Custom CCSID
The customCcsid attribute instructs the DRDA Service to encode output parameter and result set values
using an override custom CCSID (Coded Character Set Identifier), and not the DRDA AR client-requested
CCSID. This optional attribute accepts an integer. The default value is -1.
Application Encoding Database
The database attribute instructs the DRDA Service to encode output parameter and result set values
using an override encoding scheme, and not the DRDA AR client-requested encoding scheme, for a
specified target SQL Server database only. This optional attribute accepts a string value. The default
value is an empty string.
Configuring Collation Mapping
SQL Server may collate query results in a different order than what is expected by the DRDA client
program. For example, an IT professional may configure a SQL Server database to use an ANSI collation
and a DB2 for z/OS database to use EBCDIC collation.
Service for DRDA
Microsoft Corporation
Page 39
Automatic Collation
The DRDA Service can add a COLLATE clause to an ORDER BY clause, based on a default ORDER BY
collation name.
SELECT * FROM CONTOSO.DSN8910.DEPT ORDER BY DEPTNAME
SELECT * FROM [CONTOSO].[DSN8910].[DEPT] ORDER BY DEPTNAME COLLATE
SQL_EBCDIC037_CP1_CS_AS
Example x. DB2 SELECT ORDER BY syntax automatically transformed to SQL Server ORDER BY COLLATE.
The defaultCollationName element instructs the DRDA Service to add a SQL Server COLLATE
(collation_name) clause, when transforming a DB2 SELECT statement with ORDER BY clause into a SQL
Server SELECT statement with ORDER BY clause. This optional attribute accepts a string value. The
default value is SQL_Latin1_General_CP1_CI_AS.
Mapping Collation Names
The DRDA Service can transform a SELECT statement from DB2 ORDER BY COLLATION_KEY (collationname) syntax to SQL Server T-SQL ORDER BY COLLATE (collation_name) syntax, mapping from a DB2
collation-name value to a SQL Server collation_name value, to provide more compatible query results.
See collation syntax conversion below.
SELECT * FROM CONTOSO.DSN8910.DEPT ORDER BY COLLATION_KEY (DEPTNAME,
'UCA400R1_LEN_AN')
SELECT * FROM [CONTOSO].[DSN8910].[DEPT] ORDER BY DEPTNAME COLLATE
SQL_EBCDIC037_CP1_CS_AS
Example x. DB2 SELECT ORDER BY COLLATION_KEY syntax transformed to SQL Server ORDER BY COLLATE
syntax.
The collationNames element within the service element can contain one or more collationName
elements to instruct the DRDA Service to convert from a DB2 collation-name value to a SQL Server
collation_name value, when transforming a DB2 SELECT statement with ORDER BY COLLATION_KEY
(collation-name) clause into a SQL Server SELECT statement with ORDER BY COLLATE (collation_name)
clause.
<collationNames>
<collationName from="UCA400R1_LEN_AN" to="SQL_EBCDIC037_CP1_CS_AS"/>
</collationNames>
Example x. Collation Names element and attributes.
Collation Name
The collationName element must contain a from attribute and a to attribute to define a collation name
mapping.
Service for DRDA
Microsoft Corporation
Page 40
Mapping from Collation Name
The from attribute instructs the DRDA Service SQL Transformer to convert from the specified collationname string within a DB2 SELECT ORDER BY COLLATION_KEY clause. This required attribute accepts a
string value. There is no default value.
Mapping to Collation Name
The to attribute instructs the DRDA Service SQL Transformer to convert to the specified collation_name
string within a SQL Server SELECT ORDER BY COLLATE clause. This required attribute accepts a string
value. There is no default value.
For more information on SQL Server COLLATE, see http://msdn.microsoft.com/enus/library/ms184391.aspx.
Configuring Trace Listeners
The DRDA Service supports multiple concurrent trace listeners, including: text trace listener, console
trace listener, custom trace listener, and Event Trace for Windows (ETW) listener.
The drdaServiceTraceListeners element contains one or more drdaServiceTraceListener elements to
instruct the DRDA Service to send trace output to optional custom text trace listeners.
System Diagnostics
The DRDA Service supports a set of shared listeners to log information to text, console, and event log.
The system.diagnostics element of the hostIntegration.drdaAs.drdaService section of the
MsDrdaService.exe.config file defines and controls the various listeners.
<system.diagnostics>
<sources>
<source name="DrdaAs" switchName="sourceSwitch"
switchType="System.Diagnostics.SourceSwitch">
<listeners>
<!--<add name="DrdaAsTextListener" />
<add name="DrdaAsConsoleListener" />
<add name="DrdaETWListener"/>
<add name="EventLog" />
-->
<remove name="Default" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="DrdaAsTextListener"
type="Microsoft.HostIntegration.Drda.Common.DrdaTraceListener,
Microsoft.HostIntegration.Drda.Common, Version=9.0.1000.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
initializeData="MsDrdaService.DSTF"
traceOutputOptions="None"
autoFlush="true"
traceLevel="0"
maxTraceEntries="1000000"
maxTraceFiles="10"
/>
<add name="DrdaAsConsoleListener"
Service for DRDA
Microsoft Corporation
Page 41
type="Microsoft.HostIntegration.Drda.Common.DrdaConsoleTraceListener,
Microsoft.HostIntegration.Drda.Common, Version=9.0.1000.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
traceOutputOptions="None"
traceLevel="3"
/>
<add name="EventLog"
type="System.Diagnostics.EventLogTraceListener, System, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089"
initializeData="DrdaService1" >
<filter type="System.Diagnostics.EventTypeFilter"
initializeData="Error,Warning,Information"/>
</add>
<add name="DrdaETWListener"
type="Microsoft.HostIntegration.Drda.Common.DrdaEventProviderTraceListener,
Microsoft.HostIntegration.Drda.Common, Version=9.0.1000.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
initializeData="{3B4388CE-50E0-404C-A62B-E9C87D4F3BC4}"
traceLevel="0"/>
</sharedListeners>
</system.diagnostics>
Example x. Example of source element in the system.diagnostics section of the MsDrdaService.exe.config
file.
Enabling Tracing
By default, the DRDA Service trace listeners are disabled. To enable the DRDA Service trace listeners,
uncomment one or more elements in the source element within the system.diagnostics portion of the
MsDrdaService.exe.config file. Also, to enable tracing, set a positive value (1-4) for the traceLevel
attribute for each of the target trace listeners within the sharedListeners element of the
system.diagnostics portion of the MsDrdaService.exe.config file.
<sources>
<source name="DrdaAs" switchName="sourceSwitch"
switchType="System.Diagnostics.SourceSwitch">
<listeners>
<!--<add name="DrdaAsTextListener" />-->
<!--<add name="DrdaAsConsoleListener" />-->
<add name="DrdaETWListener"/>
<add name="EventLog" />
<remove name="Default" />
</listeners>
</source>
</sources>
Example x. Example of sources element in the system.diagnostics section of the
MsDrdaService.exe.config file.
Text Trace Listener
The DRDA Service text trace listener outputs trace data to a disk file in text format.
Trace Listener Name
The name attribute defines the name of the DRDA Service text trace listener. This required attribute is
accepts a string, with a value of DrdaAsTextListener.
Service for DRDA
Microsoft Corporation
Page 42
Trace Listener Type
The type attribute defines the type of the DRDA Service text trace listener. This required attribute is
accepts a string, with a value of Microsoft.HostIntegration.Drda.Common.DrdaTraceListener,
Microsoft.HostIntegration.Drda.Common, Version=9.0.1000.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL only.
Trace Listener Initialization
The initializeData attribute defines the type of disk file to create. This required attribute is accepts a
string, with a value of MsDrdaService.DSTF.
Trace File Folder
The traceFileFolder attribute instructs the DRDA Service where to write the text listener trace output
file. This optional attribute accepts a string value. The default value is C:\Program Files\Microsoft
Service for DRDA\traces.
Note: Each user account must have write access to the traces folder, in order to insert lines into the text
trace file. Each user account requires the Folder Access Control List settings associated with the HIS
Runtime Users Local Group. See section titled Security and Protection for more information.
Automatic Flush
The autoFlush attribute instructs the DRDA Service to flush data automatically to the trace listener. This
optional attribute accepts a Boolean value. The default is false.
Note: The DRDA Service can flush trace data automatically to the trace listeners, which ensures the
trace data is captured but will increase disk I/O and reduce overall system performance. To improve
performance, set autoFlush=false, to disable automatic trace flush.
Maximum Trace Entries
The maxTraceEntries attribute instructs the DRDA Service to trace up to a maximum number of entries,
and then to stop tracing. This optional attribute accepts an integer. The default value is 1000000.
Maximum Trace Files
The maxTraceFiles attribute instructs the DRDA Service to write the text listener trace output a
maximum number of individual trace files, and then overwrite existing trace files. This optional attribute
accepts an integer. The default value is 10.
Trace Output Options
The traceOutputOptions attribute is not used by the DRDA Service. This optional attribute accepts a
string value. The default value is none.
Trace Level
The traceLevel attribute instructs the DRDA Service to trace defined collections of information, from a
minimum to a maximum level of tracing. This optional attribute accepts an integer value. The default
value is 3.
Value
0
1
2
Description
Output no tracing messages.
Output error messages.
Output warning messages and error messages.
Service for DRDA
Microsoft Corporation
Page 43
Value Description
3
Output information messages, warning messages and error messages.
4
Output all messages.
Table 15. DRDA Service trace listener levels.
Console Trace Listener
The DRDA Service console trace listener outputs trace data to a command console window.
Trace Listener Name
The name attribute defines the name of the DRDA Service text trace listener. This required attribute is
accepts a string, with a value of DrdaAsConsoleListener.
Trace Listener Type
The type attribute defines the type of the DRDA Service text trace listener. This required attribute is
accepts a string, with a value of Microsoft.HostIntegration.Drda.Common.DrdaConsoleTraceListener,
Microsoft.HostIntegration.Drda.Common, Version=9.0.1000.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL only.
Trace Output Options
The traceOutputOptions attribute is not used by the DRDA Service. This optional attribute accepts a
string value. The default value is none.
Trace Level
The traceLevel attribute instructs the DRDA Service to trace defined collections of information, from a
minimum to a maximum level of tracing. This optional attribute accepts an integer value. The default
value is 3, which disables tracing.
ETW Trace Listener
The DRDA Service ETW (Event Tracing for Windows) trace listener as an ETW provider outputs trace data
through an ETW session to a Windows operating system ETW controller. An administrator can register
the ETW provider using the ProviderId GUID “3B4388CE-50E0-404C-A62B-E9C87D4F3BC4”. An ETW
consumer can read ETW log files or listen to an ETW session for real time events.
Trace Listener Name
The name attribute defines the name of the DRDA Service text trace listener. This required attribute is
accepts a string, with a value of DrdaETWListener.
Trace Listener Type
The type attribute defines the type of the DRDA Service ETW trace listener. This required attribute is
accepts a string, with a value of Microsoft.HostIntegration.Drda.Common.
DrdaEventProviderTraceListener, Microsoft.HostIntegration.Drda.Common, Version=9.0.1000.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL only.
Trace Listener Initialization
The initializeData attribute defines the ETW ProviderID GUID used to register the ETW provider to the
ETW controller. This required attribute is accepts a string, with a value of 3B4388CE-50E0-404C-A62BE9C87D4F3BC4.
Service for DRDA
Microsoft Corporation
Page 44
Trace Level
The traceLevel attribute instructs the DRDA Service to trace defined collections of information, from a
minimum to a maximum level of tracing. This optional attribute accepts an integer value. The default
value is 0, which disables tracing.
Start Event Trace Session
The Windows administrator must start a DRDA Service ETW event trace session using Performance
Monitor or the logman command line utility.
1. On the Start menu, point to All Programs, point to Microsoft Visual Studio 2010, point to Visual
Studio Tools, right click Visual Studio x64 Win64 Command Prompt (2010), and click Run as
administrator. The User Account Control dialog may appear. Click Yes to continue.
2. In the Visual Studio x64 Win64 Command Prompt (2010) window, locate the installation folder
in which you downloaded the installation program, logman start MsDrdaService -p {3B4388CE50E0-404C-A62B-E9C87D4F3BC4} -o c:\temp\MsDrdaServiceETW.etl -ets, and then click Enter.
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>logman
start MsDrdaService -p {3B4388CE-50E0-404C-A62B-E9C87D4F3BC4} -o
c:\temp\MsDrdaServiceETW.etl -ets
The command completed successfully.
Example x. Define ETW event trace session command line argument with example property
values.
Stop Event Trace Session
The Windows administrator can stop a DRDA Service ETW event trace session using Performance
Monitor or the logman command line utility.
1. On the Start menu, point to All Programs, point to Microsoft Visual Studio 2010, point to Visual
Studio Tools, right click Visual Studio x64 Win64 Command Prompt (2010), and click Run as
administrator. The User Account Control dialog may appear. Click Yes to continue.
2. In the Visual Studio x64 Win64 Command Prompt (2010) window, locate the installation folder
in which you downloaded the installation program, logman stop MsDrdaService -ets, and then
click Enter.
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>logman
stop MsDrdaService -ets
The command completed successfully.
Example x. Define ETW event trace session command line argument with example property
values.
Event Log Listener
The DRDA Service event log listener outputs log data to the Windows event log.
Service for DRDA
Microsoft Corporation
Page 45
Event Log Listener Name
The name attribute defines the name of the DRDA Service event log listener. This required attribute is
accepts a string, with a value of EventLog.
Event Log Listener Type
The type attribute defines the type of the DRDA Service event log listener. This required attribute is
accepts a string, with a value of System.Diagnostics.EventLogTraceListener, System, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089.
Event Log Listener Initialization
The initializeData attribute defines the DRDA Service instance. This required attribute is accepts a
string, with a value of DrdaService1.
Event Log Listener Filter
The filter element instructs the DRDA Service to log data by filter type. This required element contains
two attributes: type; and initializData.
Event Log Filter Type
The type attribute of the filter element defines a filter type. This required attribute accepts a string
value, with a value of System.Diagnostics.EventTypeFilter.
Event Log Filter Level
The initializeData attribute instructs the DRDA Service to log defined collections of information. This
optional attribute accepts a string value. The default value is Error,Warning,Information, which includes
all event log levels.
Value
Description
Error
This value instructs the DRDA Service to log only the error level data.
Warning
This value instructs the DRDA Service to log only the warning level data.
Information This value instructs the DRDA Service to log only the information level data
Table 16. DRDA Service event log listener levels.
Custom Trace Listener
The DRDA Service supports custom trace listeners in the form of a .NET Framework custom listener. See
Programmer’s Guide and Reference for information on the custom trace listener sample. . The
drdaServiceTraceListeners element contains one or more drdaServiceTraceListener elements to instruct
the DRDA Service to send trace output to optional custom text trace listeners. The
drdaServiceTraceListener element contains a set of attributes to define a custom trace listener. The
type is Microsoft.HostIntegration.Drda.Common.BaseDrdaTraceListener, which defined a DRDA Service
custom trace listener.
The DRDA Service will process text trace output to a custom trace listener that is referenced in the
MsDrdaService.exe.config as follows.
<drdaServiceTraceListeners>
<drdaServiceTraceListener
type="Microsoft.HostIntegration.Drda.Common.BaseDrdaTraceListener,
Microsoft.HostIntegration.Drda.Common, Version=9.0.1000.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
Service for DRDA
Microsoft Corporation
Page 46
traceLevel="4"/>
</drdaServiceTraceListeners>
Example x. Default values for custom trace listener in the DRDA Service application configuration file.
Trace Level
The traceLevel attribute instructs the DRDA Service to trace defined collections of information, from a
minimum to a maximum level of tracing. This optional attribute accepts an integer value. The default
value is 0, which disables tracing.
Configuring Enterprise Single Sign-On
The DRDA Service can utilize Enterprise Single Sign-On (ESSO) to better secure the authentication and
configuration information.
Define an ESSO Host-Initiated Affiliate Application
You must define an ESSO Affiliate Application, in order to use host-initiated SSO for use by multiple
client programs and users.
1. On the Start menu, point to All Programs, point to Microsoft Enterprise Single Sign-On, and
click SSO Administration. When prompted by User Access Control, click Yes.
2. In the Enterprise Single Sign-On scope pane, of the ENTSSO MMC snap-in, click the Affiliate
Applications folder; click the Action menu, and then Create Application.
3. In the Enterprise Single Sign-On Application Wizard Welcome dialog, click Next.
4. In the General dialog, enter an Application name (e.g. “SYS1”), click Allow local accounts for
access accounts, click Use SSO Affiliate Admin Accounts for Application Admin accounts, and
then click Next.
5. In the Accounts dialog, under the Application Users list, click Add.
6. In the Select Users or Groups dialog, enter a user account (e.g. DOMAIN\username), click Check
Names, and then click OK. Verify the account is added to the Application Users list, and then
click Next.
7. In the Options dialog, verify the Affiliate Application is Enabled, that Allow Windows Initiated
SSO is selected, that Allow host initiated SSO is selected, and that Verify external credentials is
selected. Click Next to continue.
8. In the Fields dialog, verify the Number of fields is the default two (2). Optionally, select
Credentials are Windows credentials (to increase the security with host-initiated SSO). Click
Create to continue.
9. In the Completing the Application Wizard dialog, verify that you successfully created the
Application, and then click Finish.
10. In the Enterprise Single Sign-On scope pane, of the ENTSSO MMC snap-in, click the Affiliate
Applications folder; click the newly-created Affiliate Application (e.g. “SYS1”), click the Action
menu, click New Mapping.
11. In the Create New Mapping dialog, enter a Windows user (e.g. DOMAIN\username that is
authorized to access SQL Server via the DRDA Service on behalf of the External user), enter an
Service for DRDA
Microsoft Corporation
Page 47
External user (e.g. “HISDEMO” account authorized to access “SYS1” DB2 server and SQL Server
via the DRDA Service), click Set credentials for new mapping, and then click OK.
12. In the Set Credentials dialog, enter a valid DB2 server password (e.g. “HISDEMO”) in the
Password and Confirm edit boxes, and then click OK.
13. In the Enterprise Single Sign-On scope pane, of the ENTSSO MMC snap-in, click the Affiliate
Applications folder, verify the newly-created Affiliate Application (e.g. “SYS1”) is Enabled. Click
the Affiliate Application (e.g. “SYS1”), and verify in the results pane (list of Windows users on
right side of dialog) is enabled.
Set the Local Security Policy for ESSO Application Admin Account
You must define an ESSO Affiliate Application, in order to use host-initiated SSO for use by multiple
client programs and users.
1. On the Start menu, point to All Programs, point to Administrative Tools, and click Local Security
Policy. When prompted by User Access Control, and then click Yes.
2. In the Security settings pane, navigate to User Rights Assignment under Local Policies.
3. Click Access Credential Manager as a trusted caller, right-click to select Properties. In the
Access Credential Manager as a trusted caller dialog, click Add User or Group. In the Select
Users or Groups dialog, enter the Application Admin accounts user account
(DOMAIN\username), click Check Names, and then click OK. Verify the account is added to the
Application Users list, and then click OK.
4. Click Enable computer and user accounts to be trusted for delegation, right-click to select
Properties. In the Enable computer and user accounts to be trusted for delegation dialog, click
Add User or Group. In the Select Users or Groups dialog, enter the Application Admin accounts
user account (DOMAIN\username), click Check Names, and then click OK. Verify the account is
added to the Application Users list, and then click OK. .
5. Click Act as part of the operating system, right-click to select Properties. In the Act as part of
the operating system dialog, click Add User or Group. In the Select Users or Groups dialog,
enter the Application Admin accounts user account (DOMAIN\username), click Check Names,
and then click OK. Verify the account is added to the Application Users list, and then click OK.
Configuring Microsoft Client Connections
Connect Microsoft Client to DRDA Service
You can connect the Microsoft Client for DB2 to the DRDA Service directly, to test the DRDA Service
configuration.
1. On the Start menu, point to All Programs, point to Microsoft Host Integration Server 2010, and
click Data Access Tool. When prompted by User Access Control, click Yes.
2. In the Data Access Tool, click the Data Sources, click the File menu, and then click New Data
Source.
3. In the Welcome dialog of the Data Source Wizard, click Next.
4. In the Data Source dialog, select DB2/NT in the Data source platform list, select TCP/IP, and
click Next.
Service for DRDA
Microsoft Corporation
Page 48
5. In TCP/IP Network Connection dialog, enter an Address or alias (e.g. “127.0.0.1”), enter a Port
(e.g. “446”), and then click Next.
6. In the DB2 Database dialog, enter an Initial Catalog (e.g. “NWIND”), Package collection (e.g.
“dbo”, Default schema (e.g. “dbo”, Default qualifier (e.g. “dbo”, and then click Next.
7. In the Locale dialog, select the Host CCSID (e.g. “Unicode – UTF8 [1208]”) and PC code page
(e.g. “Unicode – UTF8 [1208]”), and then click Next.
8. In the Security dialog, select Interactive Sign-On from the Security method list, enter
“HISDEMO“ in the User name, Password, and Password confirmation fields, and then click Next
to continue.
9. In the Advanced Options dialog, optionally select Connection pooling, and then click Next.
10. In the All Properties dialog, optionally verify the properties in the list, and then click Next.
11. In the Validation dialog, click Connect, and then verify the Output of the test connection.
Successfully connected to data source 'DB2_IP_DRDA_AS_NWIND'.
Server class: DB2/NT
Server version: 09.07.0000
12. In the Validation dialog, optionally click Packages, and then verify the Output of the create
package process. When prompted by the Warning dialog, click Continue.
Note: The Packages operation will succeed, however the DRDA Service does not create the
corresponding SQL Server stored procedures for these Microsoft Client packages. See DRDA
Service operations topic describing use of IgnoreStandardPackages.txt file.
13. In the Validation dialog, optionally click Sample Query, and then verify the results in the Grid,
and then click Next.
Note: The Sample Query operation will fail unless you’ve defined a SQL Server view that is
compatible with the IBM DB2 SYSCAT.TABLES catalog view.
14. In the Saving Information dialog, enter a Data source name (e.g. “DB2_IP_DRDAAS_NWIND”),
click Universal data link and Initialization string file, and then click Next.
15. In the Completing the Data Source Wizard dialog, review what you have accomplished, and
then click Finish.
16. In the Data Access Tool, click the newly-created DB2 OLE DB UDL (e.g.
“DB2_IP_DRDA_AS_NWIND”), to view the Connection String (at bottom of Data Link Tool
dialog).
Provider=DB2OLEDB;User ID=HISDEMO;Password=HISDEMO;Initial Catalog=NWIND;Network
Transport Library=TCPIP;Host CCSID=1208;PC Code Page=1208;Network
Address=127.0.0.1;Network Port=446;Package Collection=dbo;Default Schema=dbo;Process
Binary as Character=False;Units of Work=RUW;Default Qualifier=dbo;DBMS
Platform=DB2/NT;Use Early Metadata=False;Defer Prepare=False;DateTime As
Char=False;Rowset Cache Size=0;Datetime As
Date=False;AutoCommit=False;Authentication=Server;Persist Security Info=True;Data
Source=DB2ADMIN;Cache Authentication=False;Connection Pooling=False;Derive
Parameters=False;
Service for DRDA
Microsoft Corporation
Page 49
Example x. Data Access Tool connection string.
Service for DRDA
Microsoft Corporation
Page 50
Configuring DB2 for z/OS
IBM DB2 for z/OS supports access to remote DRDA Application Servers using information stored in the
DB2 for z/OS Communications Database (CDB), which is a collection of catalog tables.
Table
SYSIBM.LOCATIONS
Description
Required catalog table for defining a remote
relational database, including address (TCP/IP
port), security, and naming convention (alias).
SYSIBM.IPNAMES
Required catalog table for defining address
(TCP/IP address or alias) and security
(authentication and encryption).
SYSIBM.IPLIST
Optional catalog table for defining address
(TCP/IP address or alias) when using failover.
SYSIBM.USERNAMES
Optional catalog table for defining authentication
mapping.
Table 17. DB2 for z/OS Communications Database tables.
You can update the CDB tables using dynamic SQL statements, either locally (e.g. DB2 Admin, QMF,
SPUFI) or remotely (e.g. Microsoft Data Provider for DB2 with SQL Server Management Studio).
Figure 7. DB2 for z/OS Communications Database tables.
SQL Server Management Studio
Using the Microsoft OLE DB Provider for DB2 with SQL Server Management Studio and a Distributed
Query Processor (DQP) Linked Server, you can configure the DB2 for z/OS Configuration Database (CDB)
to enable DRDA connectivity over a TCP/IP network connection to the DRDA Service.
1. On the Start menu, point to All Programs, point to Microsoft SQL Server 2008 R2 (SQL Server
2008, SQL Server 2012), click SQL Server Management Studio.
2. In the Connect to Server dialog, type a Server name (e.g. LOCALHOST), and then click Connect.
3. In the Microsoft SQL Server Management Studio, on the File menu, click New, and then click
Query with Current Connection.
Service for DRDA
Microsoft Corporation
Page 51
4. Copy and paste the examples below into the SQLQuery1.sql file within the Query Editor window,
and then modify the bold yellow highlighted text to match values for your DB2 instance, DRDA
Service, and SQL Server database.
SQL Server Linked Server Name
These system stored procedures define a SQL Server Linked Server Name for connecting to DB2 for
z/OS. Optionally, or if you do not have authority, you can ask your DB2 administrator to update the
DB2 connection database tables.
-- ----------------------------------- Microsoft Service for DRDA Example
-- ----------------------------------- Drop existing linked server by name
EXEC sp_dropserver
@server = 'DRDA_AS_Example',
@droplogins = 'droplogins';
-- Add linked server for use with Microsoft OLE DB Provider for DB2
(DB2OLEDB)
EXEC sp_addlinkedserver
@server = 'DRDA_AS_Example',
@srvproduct = 'Microsoft OLE DB Provider for DB2',
@provider = 'DB2OLEDB',
@catalog = 'DSN1D037',
@provstr ='Provider=DB2OLEDB;Initial Catalog=DSN1D037;Network Transport
Library=TCPIP;Host CCSID=37;PC Code Page=1252;Network
Address=SYS1;Network Port=446;Package Collection=HISDEMO;Default
Schema=HISDEMO;Default Qualifier=HISDEMO;DBMS Platform=DB2/NT'
-- Add linked server login by specifying valid DB2 user identifer and
password
EXEC sp_addlinkedsrvlogin
@rmtsrvname = 'DRDA_AS_Example',
@rmtuser = 'HISDEMO',
@rmtpassword = 'HISDEMO';
-- List linked servers
EXEC sp_linkedservers;
-- Specify linked server option to support Remote Procedure Call (to
allow execution of DB2 stored procedures)
EXEC sp_serveroption
@server = 'DRDA_AS_Example',
@optname = 'RPC OUT',
@optvalue = 'TRUE' ;
-- List linked servers options
EXEC sp_helpserver;
Example x. Defining SQL Server Linked Server using SQL Server Management Studio.
Updating SYSIBM.LOCATIONS table
These system stored procedures define SQL Server Pass-Thru queries for defining a LOCATION in the
DB2 for z/OS connection database.
Service for DRDA
Microsoft Corporation
Page 52
DB2 for z/OS
LOCATION
Description
Specify a value that matches the name of the target SQL Server database
name (e.g. NWIND).
If you cannot specify a LOCATION name value that matches the target SQL
Server database (e.g. LOCATION name is in use; SQL Server database name is
too long), then use the DBALIAS and the MsDrdaService.exe.config entries
(drdaDatabaseAliases) to instruct the DRDA Service how to interpret and map
the LOCATION and DBALIAS to a corresponding SQL Server database name.
LOCATION is known as the DRDA RDBNAME (Relational Database Name).
LOCATION is known as the SQL Server Database Name or Initial Catalog.
LINKNAME
This value is used to associate the record in the SYSIBM.LOCATIONS table to
the records in the SYSIBM.IPNAMES, SYSIBM.IPLIST, and SYSIBM.USERNAMES
tables. This value is limited to 8 characters when running DB2 for z/OS in
compatibility mode.
IBMREQD
Specify “N”.
PORT
Specify a value for the TCP/IP port for use by the DRDA Service running on the
SQL Server computer. For example, the default DRDA port number is 446.
TPN
Specify “”. The DRDA Service does not support an alternate TPN (Transaction
Program Name).
DBALIAS
Specify a value that matches the name of the target SQL Server database
name (e.g. NWIND), if you cannot specify this value in the LOCATION field.
When using the DBALIAS, you must utilize the MsDrdaService.exe.config
entries (drdaDatabaseAliases) to instruct the DRDA Service how to interpret
and map the LOCATION and DBALIAS to a corresponding SQL Server database
name.
TRUSTED
Specify “N”. The DRDA Service does not support a trusted connection.
SECURE
Specify “Y” when connecting to the DRDA Service using Secure Sockets Layer
4.0 or Transport Layer Security 1.0.
Table 18. DB2 for z/OS Connection Database SYSIBM.LOCATION table.
-- --------------------------------------------------- Distributed Relational Database Entries
-- ---------------------------------------------------SYSIBM.LOCATIONS
--LOCATION VARCHAR(128) NOT NULL
--LINKNAME VARCHAR(24) NOT NULL
--IBMREQD CHAR(1) NOT NULL WITH DEFAULT 'N'
--PORT VARCHAR(96) NOT NULL WITH DEFAULT '446'
--TPN VARCHAR(192) NOT NULL WITH DEFAULT X’07F6C4C2’
--DBALIAS VARCHAR(128) NOT NULL
--TRUSTED CHAR(1) NOT NULL WITH DEFAULT 'N'
--SECURE CHAR(1) NOT NULL WITH DEFAULT 'N'
EXECUTE ('
DELETE FROM SYSIBM.LOCATIONS WHERE LINKNAME = ''DRDA1''
') AT DRDA_AS_Example;
GO
EXECUTE ('
INSERT INTO SYSIBM.LOCATIONS VALUES (''CONTOSO'', ''DRDA1'',
''N'', ''446'', '''', '''', ''N'', ''N'')
') AT DRDA_AS_Example;
Service for DRDA
Microsoft Corporation
Page 53
GO
Example x. SYSIBM.LOCATIONS entries in DB2 for one DRDA Service (“DRDA1”).
Updating SYSIBM.IPNAMES table
These system stored procedures update the SYSIBM.IPNAMES table on DB2 for z/OS.
DB2 for z/OS
LINKNAME
Description
This value is used to associate the record in the SYSIBM.IPNAMES table to the
records in the SYSIBM.LOCATIONS, SYSIBM.IPLIST, and SYSIBM.USERNAMES
tables.
SECURITY_OUT Specify “A” to send an authorization identifier.
Optionally, specify “D” to send an encrypted authorization identifier.
Optionally, specify “E” to send an encrypted authorization identifier and
encrypted data.
Optionally, specify “P” to send an encrypted authorization identifier,
encrypted password, and encrypted data.
Do not specify “R”. The DRDA Service does not support a RACF Pass Ticket.
USERNAMES
Specify “” to send the authorization identifier associated with the logged in
user, running task or program.
Optionally, specify “O” to translate outbound authorization identifier using
the SYSIBM.USERNAMES.
Do not specify “S”. The DRDA Service does not support a trusted connection.
IBMREQD
Specify “N”.
IPADDR
Specify a value for the TCP/IP address or alias for the computer on which the
DRDA Service is running.
Optionally, leave this field blank, when configuring fault tolerant failover,
which relies on IPADDR entries in the SYSIBM.IPLIST table.
Table 19. DB2 for z/OS Connection Database SYSIBM.IPNAMES table.
--SYSIBM.IPNAMES
--LINKNAME VARCHAR(24) NOT NULL
--SECURITY_OUT CHAR(1) NOT NULL WITH DEFAULT 'A'
---A=Already Verified
---D=Data Encrypt
---E=Auth Encrypt
---P=Password with Authorization ID
---R=RACF PassTicket
--USERNAMES CHAR(1) NOT NULL WITH DEFAULT
--IBMREQD CHAR(1) NOT NULL WITH DEFAULT 'N'
--IPADDR VARCHAR(254) NOT NULL WITH DEFAULT
EXECUTE ('
DELETE FROM SYSIBM.IPNAMES WHERE LINKNAME = ''DRDA1''
') AT DRDA_AS_Example;
GO
EXECUTE ('
INSERT INTO SYSIBM.IPNAMES VALUES (''DRDA1'', ''P'', ''O'',
''N'', ''123.34.45.56'')
') AT DRDA_AS_Example;
GO
Example x. SYSIBM.IPNAMES entries in DB2 for one DRDA Service (“DRDA1”).
Service for DRDA
Microsoft Corporation
Page 54
Updating SYSIBM.IPLIST table
These system stored procedures update the SYSIBM.IPLIST table on DB2 for z/OS. The IPLIST table
allows you to specify multiple IP address for a given LOCATION, when using the DRDA Service with
the Server List (SRVLST) for fault tolerant failover.
DB2 for z/OS
LINKNAME
Description
This value is used to associate the record in the SYSIBM.IPNAMES table to the
records in the SYSIBM.LOCATIONS, SYSIBM.IPLIST, and SYSIBM.USERNAMES
tables.
IPADDR
Specify a value for each TCP/IP address or alias for a group of computers on
which the DRDA Services are running, providing fault tolerant failover.
IBMREQD
Specify “N”.
Table 20. DB2 for z/OS Connection Database SYSIBM.IPNAMES table.
--SYSIBM.IPLIST
--LINKNAME VARCHAR(24) NOT NULL
--IPADDR VARCHAR(254) NOT NULL WITH DEFAULT
--IBMREQD CHAR(1) NOT NULL WITH DEFAULT 'N'
EXECUTE ('
DELETE FROM SYSIBM.IPLIST WHERE LINKNAME = ''DRDA1'';
') AT DRDA_AS_Example;
GO
EXECUTE ('
INSERT INTO SYSIBM.IPLIST VALUES (''DRDA1'', ''123.34.45.56'',
''N'')
') AT DRDA_AS_Example;
GO
EXECUTE ('
INSERT INTO SYSIBM.IPLIST VALUES (''DRDA1'', ''123.34.45.57'',
''N'')
') AT DRDA_AS_Example;
GO
Example x. SYSIBM.IPLIST entries for connecting to two DRDA Services (“DRDA1” and “DRDA2”).
Updating SYSIBM.USERNAMES table
These system stored procedures update the SYSIBM.USERNAMES table on DB2 for z/OS.
DB2 for z/OS
TYPE
AUTHID
LINKNAME
NEWAUTHID
PASSWORD
IBMREQD
Service for DRDA
Description
Specify “O” to translate outbound authorization identifier.
Do not specify “I”. The DRDA Service does not support operating as a DRDA
Application Requester client.
Do not specify “S”. The DRDA Service does not support a trusted connection.
Specify the authorization identifier to be translated.
This value is used to associate the record in the SYSIBM.IPNAMES table to the
records in the SYSIBM.LOCATIONS, SYSIBM.IPLIST, and SYSIBM.USERNAMES
tables.
Specify the translated value for the authorization identifier.
Specify the password.
Specify “N”.
Microsoft Corporation
Page 55
Table 21. DB2 for z/OS Connection Database SYSIBM.USERNAMES table.
--SYSIBM.USERNAMES
--TYPE CHAR(1) NOT NULL
---I=Inbound transalation
---O=Outbound translation
---S=Outbound AUTHID trusted connection
--AUTHID VARCHAR(128) NOT NULL WITH DEFAULT
--LINKNAME VARCHAR(24) NOT NULL
--NEWAUTHID VARCHAR(128) NOT NULL WITH DEFAULT
--PASSWORD VARCHAR(24) NOT NULL
--IBMREQD CHAR(1) NOT NULL WITH DEFAULT 'N'
EXECUTE ('
DELETE FROM SYSIBM.USERNAMES WHERE LINKNAME = ''DRDA1''
') AT DRDA_AS_Example;
GO
EXECUTE ('
INSERT INTO SYSIBM.USERNAMES VALUES (''O'', ''DBUSRID'',
''DRDA1'', '''', ''DBUSRPWD'', ''N'')
') AT DRDA_AS_Example;
GO
EXECUTE ('
SELECT * FROM SYSIBM.LOCATIONS
') AT DRDA_AS_Example;
EXECUTE ('
SELECT * FROM SYSIBM.IPNAMES
') AT DRDA_AS_Example;
EXECUTE ('
SELECT * FROM SYSIBM.USERNAMES
') AT DRDA_AS_Example;
GO
Example x. SYSIBM.USERNAMES entries in DB2 for one DRDA Service (“DRDA1”).
DRDA Connections
DRDA ARs, including IBM DB2 for z/OS, offer various methods of defining the remote DRDA
connection—network address, port, and authentication. For example, IBM DB2 for z/OS relies on a CDB
(Connection Database) comprised of a set of SYSIBM.* tables (LOCATIONS, IPNAMES, USERNAMES).
Also, IBM DB2 for z/OS supports multiple methods of initiating a DRDA connection to a remote system.
A COBOL for TSO program locally-attached to DB2 for z/OS can connect to SQL Server via the DRDA
Service using either (a) an explicit connection based on a SQL CONNECT statement or (b) an implicit
connection based on a SQL 3-part object identifier (CATALOG.SCHEMA.TABLE).
Service for DRDA
Microsoft Corporation
Page 56
Figure 8. DRDA directed data access supports both implicit and explicit connections.
Connect statement
A common technique is to use a SQL CONNECT statement to create an explicit connection from a local
DRDA AR to a remote DRDA AS, using pre-configured authentication, in-line authentication credentials,
or mapped credentials.
CONNECT TO CONTOSO; SELECT * FROM DSN8910.DEPT
or
CONNECT TO :LOC USER :USERID USING :PASSWORD; SELECT * FROM
DSN8910.DEPT
Example x. SQL CONNECT statements.
Three-part object identifier
Another common technique is to use a 3-part object identifier within a SQL statement to create an
implicit connection from a local DRDA AR to a remote DRDA AS.
SELECT * FROM CONTOSO.DSN8910.DEPT
Example x. Using a 3-part object identifier in a SQL statement.
Service for DRDA
Microsoft Corporation
Page 57
Alias for three-part object identifier
Optionally, one can encapsulate the 3-part name within a 2-part local table alias. To define an alias for
use with DB2 for z/OS and a remote DRDA Service, one must follow these steps.

Define an alias in the local DB2 for z/OS database.
CREATE ALIAS DSN8910. FOR RDB1.COL1.TABLE1

Define a corresponding synonym or view in the remote SQL Server database.
CREATE SYNONYM [DSN8910].[ADEPT] FOR [DSN8910].[DEPT]
CREATE VIEW [DSN8910].[VDEPT] ("DEPTNO", "DEPTNAME", "MGRNO",
"ADMRDEPT") AS SELECT ALL DEPTNO , DEPTNAME, MGRNO , ADMRDEPT
FROM DSN8910.DEPT

Reference the local DB2 for z/OS alias in a SQL statement.
SELECT * FROM CONTOSO.DSN8910.ADEPT
SELECT * FROM CONTOSO.DSN8910.VDEPT
Example x. Defining and using a DB2 for z/OS alias over a 3-part object identifier in a SQL statement.
Verify DB2 for z/OS to DRDA Service connection using QMF
You can verify the DB2 for z/OS to DRDA Service connection by using QMF and a number of other hostresident DB2 client programs.
1. On the Start menu, point to All Programs, point to Microsoft Host Integration Server 2010, click
Tools, and then click 3270 Client.
2. In the Host Integration Server 3270 Client (3270 Client) window, click Session menu, and then
Session Configuration.
3. In the 3270 Settings dialog, select TN3270E Server Connection, type “SYS1” in the Server Name
edit box, and then click OK.
4. On the Session menu, click Connect. The 3270 Client will display the SSCP screen. At the cursor
(lower left corner), type TSO HISDEMO, and then press Enter.
5. On the TSO/E LOGON screen, at the cursor (Password field), enter HISDEMO, and then press
Enter.
6. On the Welcome screen, press Enter, to retrieve the rest of the screen data. Below the READY
prompt, type ISPF, and then press Enter.
7. On the ISPF Primary Option Menu screen, press Enter, to clear the IBM license text. At the
cursor (Option), type U, and then press Enter.
8. At the USER OPTIONS SELECTION MENU screen, at the cursor (SELECT OPTION), type B, and
then press Enter.
9. At the DB2I PRIMARY OPTION MENU screen, at the cursor (COMMAND), type Q, and then press
Enter.
10. At the QMF HOME PANEL screen, at the cursor (COMMAND), press F6.
Service for DRDA
Microsoft Corporation
Page 58
11. At the SQL QUERY screen, at the cursor (COMMAND), press Tab, and then press Tab again. At
the cursor (two lines below the SQL QUERY screen label), type SELECT * FROM
NWIND.DBO.CUSTOMERS, and then press F2.
12. On the REPORT screen, view the results from the query. Optionally, press F8 to scroll forward,
and then press F11 to scroll right. Press F6 to return to the SQL QUERY screen. Press F3 to return
to the QMF HOME PANEL screen.
DB2 for z/OS Bind Copy Static SQL Packages
You can bind copy static SQL packages from DB2 for z/OS to the DRDA AS, with which to define Static
SQL Package XML files for later creation of corresponding SQL Server stored procedures. You can run the
DB2 for z/OS Bind Copy command from the DB2 Bind Package Utility or DB2 Administration utility using
a 3270 terminal emulation program.
DB2 Bind Package Utility
1. On the Start menu, point to All Programs, point to Microsoft Host Integration Server 2010, click
Tools, and then click 3270 Client.
2. In the Host Integration Server 3270 Client (3270 Client) window, click Session menu, and then
Session Configuration.
3. In the 3270 Settings dialog, select TN3270E Server Connection, type “SYS1” in the Server Name
edit box, and then click OK.
4. On the Session menu, click Connect. The 3270 Client will display the SSCP screen. At the cursor
(lower left corner), type TSO HISDEMO, and then press Enter.
5. On the TSO/E LOGON screen, at the cursor (Password field), enter HISDEMO, and then press
Enter.
6. On the Welcome screen, press Enter, to retrieve the rest of the screen data. Below the READY
prompt, type ISPF, and then press Enter.
7. On the ISPF Primary Option Menu screen, press Enter, to clear the IBM license text. At the
cursor (Option), type U, and then press Enter.
8. On the USER OPTIONS SELECTION MENU screen, at the cursor (SELECT OPTION), type B, and
then press Enter.
9. On the DB2I PRIMARY OPTION MENU screen, at the cursor (COMMAND), type D, and then
press Enter.
10. On the DB2I DEFAULTS PANEL 1 screen, at the cursor (COMMAND), press Tab twice to place
cursor on the DB2 NAME field, type DSN1, and then press Enter.
11. On the DB2I DEFAULTS PANEL 2 screen, at the cursor (COMMAND), press Enter.
12. On the DB2I PRIMARY OPTION MENU screen, at the cursor (COMMAND), type 5, and then
press Enter.
13. On the BIND/REBIND/FREE screen, at the cursor (COMMAND), type 4, and then press Enter.
14. On the BIND PACKAGE screen, in the LOCATION NAME field type “DRDA1”, and then press Tab.
In the COLLECTION-ID field, type “DBO”, and then press Tab. In the DBRD or “COPY” option
field, type COPY, and then press Tab. In the COLLECTION-ID field, type “DBO”, and then press
Tab. In the PACKAGE-ID field, type “PKGAREAS”, and then press Tab to locate the cursor on the
Service for DRDA
Microsoft Corporation
Page 59
ACTION ON PACKAGE field. In the ACTION ON PACKAGE field, type “ADD”, and then press
Enter.
DB2 Admin Bind Copy Package
1. On the Start menu, point to All Programs, point to Microsoft Host Integration Server 2010, click
Tools, and then click 3270 Client.
2. In the Host Integration Server 3270 Client (3270 Client) window, click Session menu, and then
Session Configuration.
3. In the 3270 Settings dialog, select TN3270E Server Connection, type “SYS1” in the Server Name
edit box, and then click OK.
4. On the Session menu, click Connect. The 3270 Client will display the SSCP screen. At the cursor
(lower left corner), type TSO HISDEMO, and then press Enter.
5. On the TSO/E LOGON screen, at the cursor (Password field), enter HISDEMO, and then press
Enter.
6. On the Welcome screen, press Enter, to retrieve the rest of the screen data. Below the READY
prompt, type ISPF, and then press Enter.
7. On the ISPF Primary Option Menu screen, press Enter, to clear the IBM license text. At the
cursor (Option), type M, and then press Enter.
8. On the USER OPTIONS SELECTION MENU screen, at the cursor (SELECT OPTION), type B, and
then press Enter.
9. On the IBM Products Panel screen, at the cursor (Option), type 3, and then press Enter.
10. On the DB2 Admin – Active DB2 Systems screen, at the cursor (DB2 system name), type DSN1,
and then press ENTER.
11. On the DB2 Admin – DB2 Administration Menu screen, press Enter, to clear the IBM license
text. At the cursor (Option), type 1, and then press Enter.
12. On the DB2 Admin – DSN1 System Catalog screen, at the cursor (Option), type K, and then
press Enter.
13. On the DB2 Admin – DSN1 Packages screen, at the cursor (Option), press F8 repeatedly to scroll
forward through the list, until you see the source Collection and package Name. Optionally,
press F7 to scroll to the previous items in the list. On the line corresponding with the source
Collection and package Name, under column S, type BC, and then press Enter.
14. On the DB2 Admin – DSN1 Bind Copy Package screen, at the cursor (Command), press Tab to
position the cursor in the Location field, type the target Location name (e.g. “DRDA1”). Press
Tab to position the cursor in the Collection field, type the target schema name (e.g. “DBO”), and
then press ENTER.
Service for DRDA
Microsoft Corporation
Page 60
Operations
The following sections provide help for operating Microsoft Service for DRDA (DRDA Service).
Managing DRDA Service
Starting DRDA Service
You can start the DRDA Service to run as a service or console application.
Windows Service
Using a Command Window, you can start the DRDA Service to run as a service, under credentials
defined in the service configuration.
1. On the Start menu, point to All Programs, point to Microsoft Visual Studio 2010, point to Visual
Studio Tools, right click Visual Studio x64 Win64 Command Prompt (2010), and click Run as
administrator. The User Account Control dialog will appear. Click Yes to continue.
2. From the command prompt, enter net start msdrdaservice and press Enter.
C:\Windows\system32>net start msdrdaservice
The Microsoft Service for DRDA service is starting.
The Microsoft Service for DRDA service was started successfully.
Console Application
Using a Command Window, you can run the DRDA Service to run as a console application, under the
credentials of the command window.
1. On the Start menu, point to All Programs, point to Microsoft Visual Studio 2010, point to Visual
Studio Tools, right click Visual Studio x64 Win64 Command Prompt (2010), and click Run as
administrator. The User Account Control dialog will appear. Click Yes to continue.
2. From the command prompt, enter cd C:\Windows\system32>cd C:\Program Files\Microsoft
Host Integration Server 2013\system and press Enter.
C:\Program Files\Microsoft Host Integration Server
2013\system>MsDrdaService.exe -c
C:\Program Files (x86)\Microsoft Visual Studio
10.0\VC>msdrdaservice -c
The Microsoft Service for DRDA Version 1.0 Beta is time-sensitive
software. The software will stop running on 30/06/2013
(day/month/year), which is 264 days and 7 hours from now.
Information:0:0:[Jun 21 2012 16:46:11.581] Microsoft Service for
DRDA (build: 9.0.1651.0 )
Information:0:0:[Jun 21 2012 16:46:11.597] TCP communication
manager listening on port 446
Note: The DRDA Service trace listener will output information to the console window.
Service for DRDA
Microsoft Corporation
Page 61
Stopping DRDA Service
You can stop the DRDA Service when it is running as a service or console application.
Windows Service
Using a Command Window, you can stop the DRDA Service when running as a service.
1. On the Start menu, point to All Programs, point to Microsoft Visual Studio 2010, point to Visual
Studio Tools, right click Visual Studio x64 Win64 Command Prompt (2010), and click Run as
administrator. The User Account Control dialog will appear. Click Yes to continue.
2. From the command prompt, enter net stop msdrdaservice and press Enter.
C:\Windows\system32>net stop msdrdaservice
The Microsoft Service for DRDA service is stopping.
The Microsoft Service for DRDA service was stopped successfully.
Console Application
Using a Command Window, you can stop the DRDA Service when it is running as a console application.
1. From the command prompt, type CTRL+C.
C:\Windows\system32>
Note: The DRDA Service stops running as a console application, and the command prompt appears.
Connecting DRDA Clients to SQL Server Databases
The DRDA Service processes DRDA client requests into connections to local and remote SQL Server
databases. This topic discusses the operation of the MsDrdaService database connection operations.
Client Connections
At service startup, the DRDA Service will write an informational entry to the internal DRDA Service trace
listeners, notifying the IT professional of the port on which the TCP Communication Manager is listening
for in-bound DRDA application requester client connections.
Information:0:0:[Apr 30 2012 17:00:34.547] TCP communication
manager listening on port 446
Remote DRDA application requester clients connect to the local DRDA Service via a TCP/IP network
connection. The DRDA client sends DRDA EXCSAT (Exchange Server Attributes), ACCSEC (Access
Security), and ACCRDB (Access Relational Database) protocol flows and data formats, to which the DRDA
Service responds with DRDA protocol replies.
Authentication
To provide integrated authentication, the DRDA Service can combine in-bound credential validation and
mapping using Microsoft Enterprise Single Sign-On (ESSO), with out-bound SQL Server authentication
using Windows SSPI (Security Support Provider Interface). For example, the DRDA Service can work with
ESSO to map an IBM RACF (Resource Access Control Facility) username and password to a Microsoft
Windows Active Directory domain\username, with which to connect with integrated security to a
remote SQL Server database.
Service for DRDA
Microsoft Corporation
Page 62
SQL Server Connections
The DRDA Service communicates to upstream local or remote SQL Server databases using the ADO.NET
Framework Provider for SQL Server. The underlying SQL Client access SQL Server via an in-memory
connection, or across a network using either Named Pipes or TCP/IP. The SQL Client supports optional
encryption and failover features to improve security and reliability. The DRDA Service supports optional
single sign-on and pooling features to improve security and performance. You can edit the
MsDrdaService.exe.config file to instruct the DRDA Service on how to manage the SQL client to SQL
Server connections.
Failover Connections
The DRDA Service can operate in groups of two (2) servers, one per computer, to provide basic fault
tolerance. When a DRDA AR client connects to a SQL Server database, the DRDA Service returns a DRDA
SRVLST (Server List) with a weighted list of Data Server instances. In case of failover of a primary DRDA
Service, the DRDA AR can use this information to connect to the alternate member of a pair of DRDA
Service computers. Combined with SQL Server clustering or mirroring, this technology can offer a
reasonable level of fault tolerant failover protection.
Figure 9. DRDA clients can re-connect to DRDA Service partner server in failover scenarios.
Processing Package Binds
The DRDA Service will convert static SQL for DB2 packages into SQL Server stored procedures, by
processing DRDA Begin Bind (BGNBND) and Bind SQL Statement (BNDSQLSTT) commands into SQL
Server DROP PROCEDURE and CREATE PROCEDURE statements. A DRDA BGNBND flow will contain one
or more BNDSQLSTT flows, one per SQL statement stored within the package. The DRDA Service maps
one DRDA static SQL package section (with one statement) to one SQL Server stored procedure. The
DRDA Service maps or preserves the BGNBND package bind options in comments within the stored
procedures, and optional extended stored procedure properties. The DRDA Service uses an internal SQL
transformer to convert SQL command syntax, parameters, data types, cursors, and results sets.
Service for DRDA
Microsoft Corporation
Page 63
Optionally, you can develop a custom package bind listener to process the packages interactively with
the DRDA Service or off-line.
Bind Package to XML File
The DRDA Service can process a single BGNBND flow into a static SQL for DB2 package XML file,
preserving the original bind options and statements as defined by the DRDA BNDSQLSTT flows.
Bind Package to Stored Procedure
The DRDA Service will process a single BGNBND flow into a SQL Server stored procedure, transforming
the original statements as defined by the DRDA BNDSQLSTT flows into corresponding SQL Server syntax.
Create Procedure Statement
The DRDA Service internal package bind listener and most custom listeners will include an IF EXISTS
clause with DROP PROCEDURE statement, depending on the value of the PKGRPLOPT (Package
Replacement Option) in the BGNBND (Begin Bind) DRDA protocol flow. The default value for PKGRPLOPT
is PKGRPLALW (Package Replacement Allowed). Optionally, the value PKGRPLNA (Package Replacement
Not Allowed) can be specified.
The DRDA Service internal package bind listener and most custom listeners will include comments just
prior to the CREATE PROCEDURE statement text, which inform the DRDA Service runtime how to
execute the stored procedures.
Query Resultset
This comment instructs the DRDA Service to use a SqlClient DataReader to return the results of the
SELECT statement.
/****** RETURN RESULTSET ******/
Query Output Parameters
This comment instructs the DRDA Service to prepare OUTPUT parameters when calling the procedure
with which to return the data from the query.
/****** HAS OUTPUT PARAMS ******/
Cursor with Hold
This comment instructs the DRDA Service to hold cursors open within a transaction.
/****** CURSOR WITH HOLD ******/
Bind Options
This comment preserves the runtime DRDA BNDOPT (Bind Options) for future use.
/****** BNDOPT:
<Options><BNDCHKEXS>BNDEXSOPT</BNDCHKEXS><BNDCRTCTL>BNDNERALW</BNDCRTCTL><BND
EXPOPT>EXPNON</BNDEXPOPT><DFTRDBCOL>DBO</DFTRDBCOL><DGRIOPRL>1</DGRIOPRL><PKG
ATHOPT>PKGATHKP</PKGATHOPT><PKGATHRUL>OWNER</PKGATHRUL><PKGISOLVL>ISOLVLCS</P
KGISOLVL><PKGOWNID>PLARSEN</PKGOWNID><PKGRPLOPT>PKGRPLALW</PKGRPLOPT><QRYBLKC
TL>LMTBLKPRC</QRYBLKCTL><RDBRLSOPT>RDBRLSCMM</RDBRLSOPT><STTDATFMT>ISODATFMT<
/STTDATFMT><STTDECDEL>DECDELPRD</STTDECDEL><STTSTRDEL>STRDELAP</STTSTRDEL><ST
TTIMFMT>ISOTIMFMT</STTTIMFMT></Options> ******/
Service for DRDA
Microsoft Corporation
Page 64
Ignore Bind and Execute Package Commands
DRDA Client programs will bind a set of standard packages that contain basic DECLARE CURSOR
statements, with which to define how to fetch and return results on SELECT and CALL statements
against IBM DB2 for z/OS. The DRDA Service does not need to convert these packages into SQL Server
stored procedures. You can save bind processing and storage space by instructing the DRDA Service to
ignore these packages, by reading a IgnoreStandardPackages.txt file containing a delimited list of
qualified package name values.
COLID PKGNAM
SYSIBM *
*
MSCS001
*
MSUR001
*
MSRS001
*
MSRR001
*
MSNC001
NULLID SYSSH*
Example x. Contents of stock IgnoreStandardPackages.txt file.
The first row of the file contains a tab-delimited set of two values that represent column headers. The
first column header is the COLID (Collection Identifier). The second column header is the PKGNAM
(Package Name). The remaining rows of the file contain a set of tab-delimited values for collection
identifier and package name.
An asterisk in place of a value denotes any value. The Microsoft DRDA Client offers a set of tools for
defining the standard set of packages in one or more user-defined collections. In this case, the wildcard
instructs the DRDA Service to ignore bind and execution commands referencing the Microsoft DRDA
Client standard packages, no matter in which collection the packages are defined.
An asterisk at the end of a string denotes a partial value. The IBM DB2 Connect DRDA Client offers a set
of tools for defining the standard set of packages in a NULLID collection with a starting package name
value of SYSSH. In this case, the wildcard instructs the DRDA Service to ignore bind and execution
commands referencing the full set of IBM DB2 Connect DRDA Client standard packages.
Performance
This topic contains information that will help you maximize performance when you are using the DRDA
Service.
Authentication and Encryption
Authentication
The DRDA Service utilizes Microsoft Enterprise Single Sign-On for authenticating in-bound DRDA
Application Requester (e.g. DB2 for z/OS RACF user identifier and password) user credentials to outbound SQL Client to SQL Server database connection (e.g. Integrated Security with Windows Active
Directory accounts) user credentials.
As an alternative to ESSO, you can configure the MsDrdaService to use mapped authentication. The
mappedAuthenticationDomain attribute of the MsDrdaService.exe.config instructs the DRDA Service to
which Microsoft Windows Active Directory domain to map the in-bound DRDA client credentials (user
name and password), when connecting to SQL Server configured for Windows authentication using
Service for DRDA
Microsoft Corporation
Page 65
integrated Security Support Provider Interface (SSPI), but not when using Microsoft Enterprise Single
Sign-On.
The DRDA Service will cache the security token obtained from Microsoft Enterprise Single Sign-On and
Mapped Authentication Domain features for a configured duration of time, with which to use when
connecting to SQL Server configured for Windows authentication using integrated Security Support
Provider Interface (SSPI).
The securityTokenTimeout attribute instructs the DRDA Service to retain a security token for a duration
of time, after which to obtain a new Windows Client Identifier (CID). This optional attribute accepts a
duration value. The default value is PT8H (Period of Time is 8 hours).
To improve performance, you can adjust the ESSO Security Token Timeout value for a longer duration.
Encryption
The DRDA Service supports the Data Provider supports authentication and data encryption using Data
Encryption Standard (DES) technologies, Secure Sockets Layer (SSL) V3.0, and Transport Layer Security
(TLS) V1.0. Also, the DRDA Service supports data encryption only using Advanced Encryption Standard
(AES) encryption. These encryption mechanisms may impact performance.
Connection
SQL Server Connection
The DRDA Service connects to a SQL Server database using the ADO.NET Framework Data Provider for
SQL Server and underlying SQL network client. To improve performance when connecting to a local SQL
Server instance, specify the Network Library=dbmslpcn to instruct the SQL Client to connect to SQL
Server using shared memory rather than a TCP/IP network connection.
To reduce connection start-up time, use SQL Server connection pooling, by setting Pooling=true in the
connection string to instruct the SQL Client to add newly created connections to the pool when closed
by the DRDA Service. To adjust the impact to the local server, set the Max Pool Size in the connection
string to define the maximum number of connections the SQL Client should retain in the connection
pool. The default value is 100. To increase scalability, set the Max Pool Size to a higher value (e.g. 1000).
DRDA Service Connection
To further reduce connection start-up time, use the MsDrdaService internal connection pool, mapping
in-bound DRDA AR client connections and authentication credentials to out-bound SQL Server database
connections and credentials, by setting a connectionCacheSize attribute to define the number of SQL
Client to SQL Server computer connections the DRDA Service will cache in the SQL Client Connection
Pool. This optional attribute accepts an integer value. The default value is 1000.
The connectionCacheTimeout attribute instructs the DRDA Service to retain a pooled connection for a
duration of time, after which to obtain a new SQL client connection. This optional attribute accepts a
duration value. The default value is PT8H (period of time is 8 hours).
Platform compatibility
Package Procedure Cache
The DRDA Service will process DRDA EXCSQLSTT (Execute SQL Statement) and OPNQRY (Open Query)
commands by executing a SQL Server CALL statement against a corresponding SQL Server stored
Service for DRDA
Microsoft Corporation
Page 66
procedure. Prior to executing the CALL statement, the DRDA Service will fetch metadata for the SQL
Server stored procedure with which to verify the statement type (SELECT, INSERT, UPDATE, DELETE),
cursor type (WITH HOLD), parameter data types (e.g. CHAR FOR BIT), and other attributes (e.g. has
results). After fetching the metadata, the DRDA Service will cache this information, including the
mapped procedure name, for a configured interval in a package procedure cache in order to improve
performance when next executing this package section. The packageProcedureCacheFlush attribute
instructs the DRDA Service to flush the package procedure cache after a specified interval of time. This
optional attribute accepts a duration value. The default value is P1D (Period of Time is 1 Day).
The packageProcedureLastInvoke attribute instructs the DRDA Service to write the names of objects in
the package procedure cache to a text file, %DRDAROOT%\LastInvokePackageProcedures.txt, after a
specified interval of time. This optional attribute accepts a duration value. The default value is P7D
(Period of Time is 7 Days). At service startup, the DRDA Service will load this text file to pre-fetch schema
for procedures listed in the file.
To improve performance of service startup, you can edit this file and remove unneeded stored
procedure names. To disable the reading and writing of the LastInvokePackageProcedures.txt file, set
the timespan to PT0S (Period of Time Zero Seconds).
To improve performance of runtime execution, you can edit this file to include additional stored
procedure names.
SQL Syntax
The DRDA Service has a limited DB2 ANSI to SQL Server T-SQL command syntax transformer that it
utilizes for binding packages, executing static and dynamic SQL statements. Optionally, the DRDA Service
offers additional compatible DB2 functions in the form of SQL Server CLR-based functions. To improve
performance of SQL syntax transformations, enable the DRDA Service CLR-based functions.
The DRDA Service transforms static SQL for DB2 packages into SQL Server stored procedures, when
processing DRDA begin bind and bind SQL statements commands, including embedded SQL DECLARE
CURSOR statements. To improve performance, the DRDA Service returns multiple rows per fetch when
possible, unless the package or cursor is defined for single row fetch to support concurrent updating.
When defining SELECT statements for optimal read performance, the developer should include a FOR
FETCH ONLY or FOR READ ONLY clause.
Isolation Level
The DRDA Service maps the IBM DB2 isolation level in the DRDA EXCSQLSTT (Execute SQL Statement) to
the SQL Server transaction level on the ADO.NET Provider for SQL Server transaction object. To improve
performance and reduce contention on database objects, the developer should utilize DB2 isolation
level Cursor Stability (CS) that maps to SQL Server isolation level Read Committed.
Date Time Formats and Conversions
The DRDA Service will format string literal date time values from source and into target formats when
processing dynamic and static SQL statements, for specific date time and character data types. The
conversionFormats element contains dateMasks, timeMasks, and dateTimeMasks for converting to and
from DB2 and SQL Server datetime formats, and instructs the DRDA Service when to perform these
Service for DRDA
Microsoft Corporation
Page 67
transformations. The parsing, encoding and decoding of strings to and from date time formatted values
will consume additional DRDA Service resources.
Code Page Conversions
The DRDA Service maps code pages and supports custom code page conversions using an underlying HIS
Encoder component and the Windows National Language Support (NLS) system components. Optionally,
the DRDA Service can convert individual code points to support custom code pages. The DRDA Service
will consume additional resources when supporting custom code page conversion.
Collation Mappings
SQL Server may collate query results in a different order than what is expected by the DRDA client
program. For example, an IT professional may configure a SQL Server database to use an ANSI collation
and a DB2 for z/OS database to use EBCDIC collation.
The DRDA Service can transform a SELECT statement from DB2 ORDER BY COLLATION_KEY (collationname) syntax to SQL Server T-SQL ORDER BY COLLATE (collation_name) syntax, mapping from a DB2
collation-name value to a SQL Server collation_name value, to provide more compatible query results.
The DRDA Service can add a COLLATE clause to an ORDER BY clause, based on a default ORDER BY
collation name. The DRDA Service parsing and replacing or adding of SQL syntax will consume additional
resources.
Tracing
The DRDA Service supports a set of shared listeners to log information to text, console, event log, and
custom component. The system.diagnostics element of the hostIntegration.drdaAs.drdaService section
of the MsDrdaService.exe.config file defines and controls the various listeners.
The traceLevel attribute instructs the DRDA Service to trace defined collections of information, from a
minimum to a maximum level of tracing. This optional attribute accepts an integer value. The default
value is 0, which disables tracing.
The DRDA Service can flush trace data automatically to the trace listeners, which ensures the trace data
is captured but will increase disk I/O and reduce overall system performance. To improve performance,
set autoFlush=false, to disable automatic trace flush.
Performance Monitor
To measure performance, the DRDA Service offers performance counters. The DRDA Service
performance counters capture information about open connections, open statements, packets and
bytes sent/received, average processing time, command executions, data fetches, and transaction
commits/rollbacks.
Configuration
To measure performance, the DRDA Service offers performance counters for use with Windows
Performance Monitor. The peformanceCountersOn attribute instructs the DRDA Service to collect
information into performance counters. This optional attribute accepts a Boolean value. The default
value is false. For more information, see section on Performance. Also, for more information on
Windows Performance Monitor, see Performance Counters
(http://go.microsoft.com/fwlink/?LinkID=119211).
Service for DRDA
Microsoft Corporation
Page 68
Counters
The DRDA Service outputs data to these Performance Monitor Counters.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Active Sessions
Active SQL Connections
Active Transactions
Bytes Received
Bytes Received/sec
Bytes Sent
Bytes Sent/sec
Transactions
Transactions Commits
Transactions Commits/sec
Transactions RollBacks
Transactions/sec
DRDA Service Instances
The DRDA Service offers Performance Monitor Counters on a per-service or per-connection “instance”
basis, where an “instance” can be a process or session.
Service for DRDA
Microsoft Corporation
Page 69
Security and Protection
The following sections provide help for securing and protecting deployments of Microsoft Service for
DRDA (DRDA Service).
Security
The DRDA Service provides cross-platform database access and interoperability through distributed unit
of work (DUW) transactions for on-line and batch processing. The DRDA Service connects IBM DB2 DRDA
Application Requester client programs to Microsoft SQL Server databases. The DRDA Service functions
as an application server supporting the Distributed Relational Database Architecture (DRDA) protocols
and formats that are compatible with IBM products functioning as DB2 application requester clients.
The DRDA Service responds to in-bound DB2 client application requests across Transmission Control
Protocol over Internet Protocol (TCP/IP) network connections that use optional security features
described in this topic. The DRDA Service initiates out-bound SQL managed client requests using Tabular
Data Stream (TDS) using in-memory or TCP/IP network connections.
The DRDA Service processes in-bound parameterized static SQL commands that the DRDA Service maps
to out-bound dynamic SQL CALL statements to execute corresponding SQL Server stored procedures.
Also, the DRDA Service processes in-bound dynamic SQL SELECT, INSERT, UPDATE, DELETE and CALL
statements as pass-through commands to SQL Server.
The DRDA Service can authenticate in-bound client requests by mapping user name, user name and
password, or Kerberos tickets to Windows credentials. The DRDA Service supports secure authentication
and secure data encryption options.
Windows Security
Service Account
The MsDrdaService.exe must run in the context of a user or service account.
1. The service account can be the Local System, Local Service, or Network Service account.
2. The service account can be a local user account.
3. The service can be a domain user account (Domain\User).
Local Group
The service account must be a member of the HIS Administrators and HIS Runtime Users Local Groups.
1. The service account must be a member of the HIS Administrators Local Group.
2. The service account must be a member of the HIS Runtime Users Local Group.
3. The end user accounts must be a member of the HIS Runtime Users Local Group. For example,
when mapping in-bound DRDA AR user name utilizing host-initiated Enterprise Single Sign-On,
the mapped Windows user account must be a member of the HIS Runtime Users Local Group.
Local Security Policy
The service account requires these Local Security Policy settings to run as a service.

The service account requires Log on as a service.
Service for DRDA
Microsoft Corporation
Page 70
The service account requires these Local Security Policy settings to utilize host-initiated Enterprise Single
Sign-On.

The service account requires Act as part of the operating system.

The service account requires Access Credential Manager as a trusted caller.

The service account requires Enable computer and user accounts to be trusted for delegation.
Folder Access Control List
The MsDrdaService account requires the Folder Access Control List settings associated with the HIS
Administrators Local Group and HIS Runtime Users Local Group.
The HIS Administrators Local Group has these Folder Access Control settings.
File Folder
Modify
Read &
execute
Allow
List folder
contents
Allow
Microsoft Host
Integration Server
2013
Microsoft Host
Allow
Allow
Integration Server
2013\system
Microsoft Host
Integration Server
2013\traces
Table 22. HIS Administrators Folder Access Control List.
Read
Write
Special
permissions
Allow
Allow
Each user account requires the Folder Access Control List settings associated with the HIS Runtime Users
Local Group. For example, each user must have write access to insert lines into a MsDrdaService.DSTF
text trace file.
The HIS Runtime Users Local Group has these Folder Access Control settings.
File Folder
Modify
Read &
execute
Allow
List folder
contents
Allow
Microsoft Host
Integration Server
2013
Microsoft Host
Allow
Allow
Integration Server
2013\system
Microsoft Host
Allow
Allow
Integration Server
2013\traces
Table 23. HIS Runtime Users Folder Access Control List.
Read
Write
Special
permissions
Allow
Allow
Allow
Allow
ESSO Security Groups
4. The service account must be a member of the SSO Affiliate Administrators Local Group.
5. The service account may be a member of the SSO Administrators Local Group.
Service for DRDA
Microsoft Corporation
Page 71
Constrained Delegation and Kerberos
ESSO requires elevated permissions in Active Directory (Kerberos constrained delegation, and Use any
authentication protocol). ESSO requires a Kerberos Service Principal Name for the SQL Server computer
to which the DRDA Service connects.
Protection
DRDA Service Authentication Methods
DRDA Service supports multiple authentication methods, using DRDA in combination with Kerberos and
Windows Active Directory using Enterprise Single-Sign-On.
Server Authentication
IT professionals can configure the DRDA Service to use DRDA client-provided authentication credentials
that are validated on the server.




User name and password.
User name only.
Unencrypted User name with encrypted password using 256-bit Advanced Encryption Standard
(AES) to secure the authentication credentials.
Encrypted user name and password using 256-bit Advanced Encryption Standard (AES) to secure
the authentication credentials.
Kerberos Authentication
IT professionals can configure the DRDA Service to authenticate in-bound user with a Kerberos ticket,
which the DRDA Service uses to connect to SQL Server using Kerberos authentication.
Enterprise Single Sign-On
IT professionals can configure the DRDA Service to use DRDA client-provided authentication credentials
that are mapped on the server to Windows Active Directory credentials.




Host-initiated validation of user name and password mapped to Windows domain account using
SQL Server integrated security.
Host-initiated validation of user name only mapped to Windows domain account using SQL
Server integrated security.
Host-initiated validation of user name and password mapped to Windows domain account, and
then mapped to SQL Server user name and password authentication.
Host-initiated validation of user name only mapped to Windows domain account, and then
mapped to SQL Server user name and password authentication.
DRDA Service authenticates based on user name only
When receiving in-bound connections from DB2 for z/OS uses DRDA Service authentication, the DRDA
Service will authenticate based on user name only. The DRDA ACCSEC (Access Security) SECMEC
(Security Mechanism) is USRIDONL (User ID only). To support this authentication method using hostinitiated Enterprise Single Sign-On, you must set the Verify external credentials property to True in the
Affiliate Application.
Service for DRDA
Microsoft Corporation
Page 72
DRDA Service receives and sends unencrypted data
By default, the DRDA Service sends and receives unencrypted data. We recommend that you configure
the Data Provider to use data encryption by using Secure Sockets Layer (SSL) V3.0 or Transport Layer
Security (TLS) V1.0.
The following table describes supported encryption standards for DB2.
Encryption
Authentication Data
DB2 for z/OS
Kerberos
Yes
No
V8
SSL V3
Yes
Yes
V9
TLS V1
Yes
Yes
V9
AES
Yes
No
V8 (APAR PK56287)
Table 24. DRDA Service authentication and encryption options.
DB2 for i5/OS
V5R3
V5R4
V5R4
V5R4
DB2 for LUW
V8
V9.1
V9.1
V9.5 (Fix Pack 3)
DRDA Service accepts unencrypted credentials
By default, the DRDA Service accepts in-bound connections over a TCP/IP network using basic
authentication, where the user name and password are not encrypted and are submitted in plain text.
We recommend that you configure the DRDA AR clients and DRDA Service to use authentication
encryption by using Kerberos, Secure Sockets Layer (SSL) V3.0 or Transport Layer Security (TLS) V1.0, or
authentication encryption using Advanced Encryption Standard (AES).
Additionally, when using in-bound user name for authentication, we recommend that you configure the
DRDA Service to use Enterprise Single Sign-On, which integrates Windows Active Directory® accounts
with IBM host system and DB2 credentials. Administrators map host and DB2 credentials to AD
accounts, storing these in an encrypted SQL Server database. The DRDA Service retrieves these
mappings at runtime to securely authenticate users to remote DRDA application requester clients. For
more information about Enterprise Single Sign-On, see the Host Integration Server Security User's
Guide (http://go.microsoft.com/fwlink/?LinkID=180767).
DRDA Service supports weak encryption based on DES
Optionally, the DRDA Service supports authentication and data encryption using weak 56-bit Data
Encryption Standard (DES) technologies. We recommend that you configure the Data Provider to use
authentication and data encryption by using Secure Sockets Layer (SSL) V3.0 or Transport Layer Security
(TLS) V1.0. For encrypting authentication only, you can utilize the Advanced Encryption Standard (AES)
to support 256-bit encryption.
DRDA Authentication and Encryption options
The DRDA Service supports selected DRDA authentication and encryption options.
Technology
Code Point
MsDrdaService
Kerberos
KERSEC
Yes
Plug-in
PLGIN
No
DCE
DCESEC
No
Service for DRDA
Microsoft Corporation
Page 73
Technology
Code Point
MsDrdaService
User ID only
USRIDONL
Yes
User ID and password
USRIDPWD
Yes
Encrypted user ID and password
EUSRIDPWD
Yes
User ID and encrypted password
USRENCPWD
Yes
User ID and password substitute
USRSBSPWD
No
User ID, password, and new password
USRIDNWPWD
No
User ID and strong password substitute
USRSSBPWD
No
Encrypted user ID only
EUSRIDONL
Yes
Encrypted user ID and security-sensitive data
EUSRIDDTA
Yes
Encrypted user Id, password, and security-sensitive data
EUSRPWDDTA
Yes
Encrypted user ID, password, new password, and security-sensitive data
EUSRNPWDDTA
No
Table 25. DRDA Authentication and Encryption options
DRDA Service configuration files
The default location for the DRDA Service files is \Program Files\Microsoft Service for DRDA. There
subfolders (System, SysWOW64, traces, and Schemas) and files that contain information that should be
kept secured. The Host Integration Server Configuration program limits access to all the files in this
folder structure to members of the HIS Administrators Local Group and HIS Runtime Users Local Group.
See Security topic for more information on security groups associated with folder security.
The DRDA Service validates the contents of the \Program Files\Microsoft Host Integration Server
2013\system\MsDrdaService.exe.config file by element and attribute type, enumerated and other
defined values, using Microsoft.HostIntegration.ConfigurationSectionHandlers.dll configuration
reader/writer component and HostIntegrationDrdaServiceConfiguration.XSD. If the application
configuration file content is not valid, the DRDA Service will not start and log a Windows application
event message.
Event 1034: The Microsoft Service for DRDA failed to load the configuration file. Verify the format of the
Microsoft Service for DRDA XML MsDrdaService.exe.config application configuration file.
The DRDA Service validates the contents of the \Program Files\Microsoft Host Integration Server
2013\system\MSDRDAErrorMappings.XML file by element and attribute type, enumerated and other
defined values, using the HostIntegrationDrdaSqlErrorMappings.XSD. If the error mapping file content is
not valid, the DRDA Service will not start and log a Windows application event message.
Service for DRDA
Microsoft Corporation
Page 74
Event 1056: The Microsoft Service for DRDA failed to load the error mapping file. Verify the contents of
the MSDRDAErrorMappings.XML file using the HostIntegrationDrdaSqlErrorMappings.XSD file, and then
re-start the DRDA Service.
The DRDA Service validates the contents of the \Program Files\Microsoft Host Integration Server
2013\system\DrdaServiceEventMessages.XML file by element and attribute type, enumerated and other
defined values. If the event messages file content is not valid, the DRDA Service will not start and log a
Windows application event message.
Event 1057: The Microsoft Service for DRDA failed to load the event messages file. Verify the contents of
the DraServiceEventMessages.XML file and then re-start the DRDA Service.
The DRDA Service validates the contents of the \Program Files\Microsoft Host Integration Server
2013\system\DB2ToMSSql.XML file by element and attribute type, enumerated and other defined
values. If the DB2 to SQL data type mapping file content is not valid the DRDA Service will not start and
log a Windows application event message.
Event 1058: The Microsoft Service for DRDA failed to load the DB2 to SQL data type mapping file. Verify
the contents of the DB2ToMSSql.XML file and then re-start the DRDA Service.
The DRDA Service validates the contents of the \Program Files\Microsoft Host Integration Server
2013\system\MSSQLToDB2.XML file by element and attribute type, enumerated and other defined
values. If the event messages file content is not valid, the DRDA Service will not start and log a Windows
application event message.
Event 1059: The Microsoft Service for DRDA failed to load the SQL to DB2 data type mapping file. Verify
the contents of the MSSQLToDB2.XML file and then re-start the DRDA Service.
DRDA Service Package XML
The DRDA Service will convert static SQL for DB2 packages into SQL Server stored procedures, by
processing DRDA Begin Bind (BGNBND) and Bind SQL Statement (BNDSQLSTT) commands into SQL
Server DROP PROCEDURE and CREATE PROCEDURE statements. Optionally, based on the
createPackageXml attribute in the MsDrdaService.exe.config file, the DRDA Service to process a single
BGNBND flow into a static SQL for DB2 package XML file, preserving the original bind options and
statements as defined by the DRDA BNDSQLSTT flows.
The DRDA Service will write a package XML file by element and attribute type, enumerated and other
defined values, using a Microsoft.HostIntegration.ConfigurationSectionHandlers.dll app.config
reader/writer component and HostIntegrationStaticSql.XSD. The DRDA Service will not process a bind,
generate a package XML file, if it cannot validate the DRDA Begin Bind (BGNBND) and Bind SQL
Statement (BNDSQLSTT) protocol flow and formatted data.
The package XML file contains information that should be kept secured. The administrator should set
the additional optional packageXmlLocation attribute to instruct the DRDA Service to write the static
SQL for DB2 package XML file to a secure folder. For example, \Program Files\Microsoft Service for
DRDA\traces. The Host Integration Server Configuration program limits access to all the files in the
traces folder to members of the HIS Administrators Local Group and HIS Runtime Users Local Group. See
Security topic for more information on security groups associated with folder security.
Service for DRDA
Microsoft Corporation
Page 75
DRDA Service Custom Package Bind Listener
Optionally, the administrator can define in the MsDrdaService.exe.config one or more
packageBindListener elements within the packageBindListeners element to instruct the DRDA Service to
send bind package with bind SQL statement output to optional custom bind listeners, which are
developed using the Microsoft.HostIntegration.Drda.Common.PackageBindListener component.
The Administrator should set the createPackageProcedureWithCustomSqlScripts attribute to instruct
the DRDA Service to process DRDA BGNBND and BNDSQLSTT through an external custom package bind
listener component. The DRDA Service processes a single XML document per call to a custom bind
listener, containing one or multiple static SQL package sections. The custom bind listener should
transform the XML into SQL, returning on the callback to the DRDA Service a SQL script containing a set
of DROP PROCEDURE and CREATE PROCEDURE statements only. The DRDA Service validates the callback
to ensure it contains only a set of DROP PROCEDURE and CALL PROCEDURE statements. The
administrator should set the errorWhenNoCallback attribute to instruct the DRDA Service to return
BGNBNDRM (Begin Bind Reply Message) to the DRDA AR client, when the custom bind listener
component does not return any information on the callback interface.
The administrator should instruct the DRDA Service to load only custom bind listener assemblies from a
secure directory (\Program Files\ Microsoft Host Integration Server 2013\system) that are signed and
installed into the .NET Framework Global Assembly Cache (GAC). If the DRDA Service cannot load a
custom bind listener, the DRDA Service will not start and log a Windows application event message.
Event 1027: The Microsoft Service for DRDA cannot load the text trace listener. Verify the source
attribute values of the sources element of the system.diagnostics section of the
MsDrdaService.exe.config application configuration file.
DRDA Service Trace Listeners
You can troubleshoot problems with the DRDA Service by understanding looking at trace output, the
Windows event log entries, and understanding solutions to common problems. The DRDA Service
supports multiple concurrent trace listeners, including the default Text Encoder, default Console
Encoder, ETW (Event Tracing for Windows) listener, and optional Custom Encoder.
The trace output contains information that should be kept secured. The DRDA Service runs the trace
listeners in-process. By default, the trace listeners are disabled. The administrator can enable the trace
output, on a per-listener basis, by uncommenting elements within the listeners element of the sources
element within the system.diagnostics section of the MsDrdaService.exe.config file.
The administrator should set the traceLevel attribute to instruct the DRDA Service to trace defined
collections of information, to set a maximum level of tracing. Also, the administrator should set the
optional maxTraceEntries attribute to instruct the DRDA Service to trace up to a maximum number of
entries, and then to stop tracing.
When using the text trace listener, the administrator should set the optional maxTraceFiles attribute to
instruct the DRDA Service to write the text listener trace output a maximum number of individual trace
files, and then overwrite existing trace files. Also, the administrator should set the additional optional
traceFileFolder attribute to instruct the DRDA Service where to write the text listener trace output file.
The default value is \Program Files\Microsoft Service for DRDA\traces. The Host Integration Server
Service for DRDA
Microsoft Corporation
Page 76
Configuration program limits access to all the files in the traces folder to members of the HIS
Administrators Local Group and HIS Runtime Users Local Group. See Security topic for more information
on security groups associated with folder security.
The DRDA Service writes messages to the Windows application event log, to track issues with tracing.
The administrator should check the event log to track and correct issues with tracing.
Event ID
1024
Level
Error
Task Category
Extension
1027
Warning
Logging
1028
Warning
Logging
1030
Information
Logging
1031
Warning
Logging
1032
Information
Logging
1043
Warning
Trace/Log
1044
Error
Trace/Log
Text
The Microsoft Service for DRDA cannot load a custom
trace listener.
The Microsoft Service for DRDA cannot load the text
trace listener. Verify the source attribute values of the
sources element of the system.diagnostics section of the
MsDrdaService.exe.config application configuration file.
The Microsoft Service for DRDA failed to write a trace log
file. Verify the attribute values in the sharedListeners
element of the system.diagnostics section of the
MsDrdaService.exe.config application configuration file.
The Microsoft Service for DRDA created a trace listener
instance.
The Microsoft Service for DRDA did not find trace log file
in the configured directory. The Microsoft Service for
DRDA will create a new trace log file in the default
location. Verify the source traceFileFolder value of the
sharedListeners element of the system.diagnostics
section of the MsDrdaService.exe.config application
configuration file.
The Microsoft Service for DRDA trace file contains the
maximum allowed number of trace entries. Verify the
maxTraceEntries attribute value of the sharedListeners
element of the system.diagnostics section of the
MsDrdaService.exe.config application configuration file.
The Microsoft Service for DRDA failed to create specified
trace directory {0}. Using the default trace directory.
The Microsoft Service for DRDA failed to created trace
file {0}. Exception message: {1}
Table 26. DRDA Service Event Log Messages.
DRDA Service Connections to SQL Server
The DRDA Service connects to SQL Server through the Microsoft ADO.NET Framework Provider for SQL
Server and underlying SQL Client. The administrator can use the database element of the
MsDrdaService.exe.config file to define the network settings for managing out-bound SQL client
connections.
The DRDA Service can access local and remote SQL Server database servers using in-memory, named
pipes and TCP/IP connections. The default network library is shared memory (dbmslpcn). The
administrator can check the Network Library argument value of the connectionString attribute within
the database element in the MsDrdaService.exe.config file.
Service for DRDA
Microsoft Corporation
Page 77
The DRDA Service can connect to remote SQL Server database servers across a TCP/IP network
connection using Secure Sockets Layer (SSL) encryption. The default is no SSL encryption. The
administrator can instruct the DRDA Service to use SSL by specifying the Encrypt=true argument value
pair in the connectionString attribute within the database element in the MsDrdaService.exe.config file.
The DRDA Service can authenticate SQL Server connections using out-bound Windows Authentication
through the Security Support Provider Interface (SSPI). The default is no SSPI. The administrator can
instruct the DRDA Service to use Windows Authentication by specifying the Integrated Security=true
argument value pair in the connectionString attribute within the database element in the
MsDrdaService.exe.config file.
The DRDA Service uses Transact-SQL distributed transactions when connecting to SQL Server databases,
which are protected by Microsoft Distributed Transaction Coordinator (MS DTC). The administrator can
log access (source, time, summary of data) to SQL Server using DRDA Service tracing, SQL Server profiler
tracing, and MSDTC logging.
DRDA Service Failover
The DRDA Service can operate within a group to provide basic failover, using DRDA client transaction
load balancing. The group is defined by specifying a local service role (primary or secondary), available
failover partner servers, and a ping interval for monitoring the health of servers within a group. At
connection time, the primary DRDA Service returns to the DRDA client a DRDA SRVLST (Server List) with
a weighted list of DRDA Service instances. In case of failover of a primary DRDA Service, the DRDA Client
can use this information to connect to the alternate member of a pair of DRDA Service computers.
The administrator can specify a pingInterval attribute to instruct the DRDA Service how frequently to
monitor the health of partner server computers, by executing an EXCSAT (Exchange Server Attribute)
flow and checking for an EXCSATRD (EXCSAT Reply Data). The default value is 10000 milliseconds (10
seconds). The administrator can include the partner server computer IP address or alias in the optional
clientIpAddressesAllowed attribute, which restricts the DRDA Service to accepting in-bound TCP/IP
network connections from a list of known DRDA Service partner computers. The administrator can
specify the useSSL attribute to instruct the DRDA Service to use Transport Layer Security (TLS) Version
1.0 when responding to in-bound TCP/IP network connections.
The administrator can log partner pings (source, time, summary of data) using DRDA Service tracing. The
administrator can track DRDA Service primary status, partner status, and DRDA Service List changes
using the Windows application event log.
Event 1017: The Microsoft Service for DRDA is operating in partner server role.
Event 1018: The Microsoft Service for DRDA changed the DRDA SRVLST (Server List) values.
As an alternative to or in conjunction with DRDA transaction load balancing, the DRDA Service
participates in SQL Server clustering and mirroring. The administrator can specify a Failover Partner
argument value pair in the connectionString attribute within the database element in the
MsDrdaService.exe.config file.
Service for DRDA
Microsoft Corporation
Page 78
DRDA Client Connections to DRDA Service
DRDA Clients connect to the DRDA Service using the DRDA protocol and formats across a TCP/IP
network connection. The administrator can use the connectionManager element of the
MsDrdaService.exe.config file contains the network, security and failover settings for managing inbound DRDA client connections.
The administrator can include the partner server computer IP address or alias in the optional
clientIpAddressesAllowed attribute, which restricts the DRDA Service to accepting in-bound TCP/IP
network connections from a list of known DRDA Client computers. Also, the administrator can specify
the useSSL attribute to instruct the DRDA Service to use Transport Layer Security (TLS) Version 1.0 when
responding to in-bound DRDA Client TCP/IP network connections. The administrator can track DRDA
Client connection attempts from disallowed IP addresses using the Windows application event log.
Event 1036: The Microsoft Service for DRDA has detected a possible denial of service attack. The
Microsoft Service for DRDA rejected DRDA client requests from TCP/IP address not configured in the
clientIpAddressesAllowed attribute of the configuration file.
The DRDA Service uses Distributed Unit of Work (DUW) transactions between DRDA Client and DRDA
Service for two-phase commit protected transactions only. The DRDA Service processes DRDA Client
connections on separate threads to provide isolation. The DRDA Service validates the DRDA Client
commands to ensure they comply with DRDA protocol code points, instance variables, command syntax,
reply messages, and formatted data values. The DRDA Service parses the command text and parameter
values to map syntax to corresponding SQL Server Transact-SQL command with parameter syntax. The
administrator can track DRDA Client authentication attempts from unauthenticated users through the
Windows application event log.
Event 1012: The Microsoft Service for DRDA failed to retrieve access token from ESSO server.
To provide integrated authentication, the DRDA Service can combine in-bound credential validation and
mapping using Microsoft Enterprise Single Sign-On (ESSO), with out-bound SQL Server authentication
using Windows SSPI (Security Support Provider Interface). For example, the DRDA Service can work with
ESSO to map an IBM RACF (Resource Access Control Facility) username and password to a Microsoft
Windows Active Directory domain\username, with which to connect with integrated security to a
remote SQL Server database. Alternatively, the DRDA Service supports Kerberos authentication.
The administrator can log access (source, time, summary of data) to SQL Server using DRDA Service
tracing. Also, the administrator should check the event log to track and correct issues with DRDA Client
connections.
Service for DRDA
Microsoft Corporation
Page 79
Troubleshooting
The following sections provide help for troubleshooting deployments of Microsoft Service for DRDA
(DRDA Service).
Trace Listeners
You can troubleshoot problems with the DRDA Service by understanding looking at trace output, the
Windows event log entries, and understanding solutions to common problems.
The DRDA Service supports multiple concurrent trace listeners, including the default Text Encoder,
default Console Encoder, ETW (Event Tracing for Windows) listener, and optional Custom Encoder. The
drdaServiceTraceListeners element contains one or more drdaServiceTraceListener elements to instruct
the DRDA Service to send trace output to optional custom text trace listeners.
Trace Format
The console, text and custom trace listener output is formatted into five (5) columns of data.
Type
Column 1 is the Type of data. The Type is a string value. The Type column is divided from the Session
Identifier column by a colon. The DRDA Service writes a Type value of Information only.
Session Identifier
Column 2 is the Session Identifier. The Session Identifier is an integer value. The Session Identifier
column is divided from the Type column by a colon. The Session Identifier can be used as a correlation
identifier, matching connection information to command execution information. The DRDA Service
writes a Session Identifier of 0 for non-client connections, including service startup information and
DRDA Service-to-DRDA Service communications.
Information:0:0:[Jan 16 2013 16:52:53.815] Microsoft Service for DRDA (build: 9.0.1870.0 )
Information:0:0:[Jan 16 2013 16:52:53.817] TCP communication manager listening on port 446
Trace Level
Column 3 is the Trace Level. The Trace Level is an integer value. The Trace Level column is divided from
the Session Identifier column by a colon. The DRDA Service writes a Trace Level value of 0 to 6,
corresponding to the traceLevel attribute value.
Datetime
Column 4 is a Datetime value. The Datetime value is enclosed in square brackets to separate this column
from the preceding Trace Level and following Trace Data columns.
Trace Data
Column 5 is the Trace Data value. The Trace Data is a string value.
Event Logs
The DRDA Service logs events to the Microsoft Windows application and service log named
“DrdaService”. IT professionals can view this log using the Microsoft Windows Event Viewer. The DRDA
Service logs events to the Event Viewer.
Service for DRDA
Microsoft Corporation
Page 80
Event Viewer
The Event Viewer is a Microsoft Management Console (MMC) snap-in that enables you to browse and
manage event logs. It is an indispensable tool for monitoring the health of systems and troubleshooting
issues when they arise.
Event Viewer enables you to perform the following tasks:




View events from multiple event logs
Save useful event filters as custom views that can be reused
Schedule a task to run in response to an event
Create and manage event subscriptions
The Event Viewer is a Microsoft Management Console (MMC) snap-in. You can start Event Viewer by
adding the snap-in to MMC or by double-clicking the snap-in file, Eventvwr.msc, which is located in the
%SYSTEMROOT%\system32 folder. In addition, Event Viewer can be started from the Windows interface
or the command line by using the following procedures.
To start Event Viewer by using the Windows interface
1.
2.
3.
4.
5.
Click the Start button.
Click Control Panel.
Click System and Maintenance.
Click Administrative Tools.
Double-click Event Viewer.
To start Event Viewer by using a command line
1. Open a command prompt. To open a command prompt, click Start, click All Programs, click
Accessories and then click Command Prompt.
2. Type eventvwr.
The eventvwr.exe command-line tool supports options that determine the computer the snap-in will
connect to and the event logs it will display. When connecting to a computer running a previous version
of Windows, the tool can be used to start the snap-in and connect to the remote computer, but the
additional command-line options are ignored.
To display additional help for the eventvwr command-line tool, type the following command at a
command prompt: eventvwr /?.
For the latest information about Event Viewer, see Event Viewer online
(http://go.microsoft.com/fwlink/?linkid=45698).
Configuring Log Entries
See Event Log Listener topic in the Configuring Trace Listeners portion of the Data Integration
(Configuration) Deployment book.
Log Entries
The following DRDA Service events are recorded in the Microsoft Windows application and service log
named “DrdaService”.
Service for DRDA
Microsoft Corporation
Page 81
Event ID
1011
Event Type
Error
Event Category
Connection
Event Message Text
The Microsoft Service for DRDA cannot connect to SQL Server.
Verify the connectionString value in the
MsDrdaService.exe.config application configuration file.
1012
Error
Connection
The Microsoft Service for DRDA failed to retrieve access token
from ESSO server.
1013
Warning
Connection
The Microsoft Service for DRDA is connecting to a remote SQL
Server ({0}) database ({1}) when configured for SQL mirroring.
1014
Warning
Connection
The Microsoft Service for DRDA is connecting to a local SQL
Server ({0}) database ({1}) when configured for SQL mirroring.
1015
Information
Connection
The Microsoft Service for DRDA TCP communication manager is
listening on port {0}.
1016
Information
Connection
The Microsoft Service for DRDA is operating in primary server
role.
1017
Information
Connection
The Microsoft Service for DRDA is operating in partner server
role.
1018
Information
Connection
The Microsoft Service for DRDA changed the DRDA SRVLST
(Server List) values.
1019
Information
Connection
The Microsoft Service for DRDA flushed package procedure
cache. The Microsoft Service for DRDA flushed the package
procedure cache based on the packageProcedureCacheFlush
attribute value in the MsDrdaService.exe.config application
configuration file.
1020
Error
Connection
The Microsoft Service for DRDA cannot listen on port {0}. Verify
the Port attribute value in the MsDrdaService.exe.config
application configuration file.
1022
Warning
Environment
The Microsoft Service for DRDA could not load a custom NLS
code page file. Verify the codePage number in the codePages
element of the encoding section of the
MsDrdaService.exe.config application configuration file.
1023
Warning
Environment
The Microsoft Service for DRDA could not load a default NLS
code page file. Verify the ccsid number in the
applicationEncodings element of the service section of the
MsDrdaService.exe.config application configuration file.
1024
Error
Extension
The Microsoft Service for DRDA cannot load a custom trace
listener. Verify the attribute values in the
drdaServiceTraceListeners element of the
MsDrdaService.exe.config application configuration file.
Service for DRDA
Microsoft Corporation
Page 82
Event ID
1025
Event Type
Error
Event Category
Extension
Event Message Text
The Microsoft Service for DRDA cannot load a custom bind
listener. Verify the attribute values in the packageBindListeners
element of the MsDrdaService.exe.config application
configuration file.
1026
1027
Error
Warning
Internal
Logging
An internal error occurred.
The Microsoft Service for DRDA cannot load the text trace
listener. Verify the source attribute values of the sources
element of the system.diagnostics section of the
MsDrdaService.exe.config application configuration file.
1028
Warning
Logging
The Microsoft Service for DRDA failed to write a trace log file.
Verify the attribute values in the sharedListeners element of
the system.diagnostics section of the MsDrdaService.exe.config
application configuration file.
1029
Error
Warning
The Microsoft Service for DRDA cannot create a performance
counter.
1030
Information
Logging
The Microsoft Service for DRDA created a trace listener
instance.
1031
Warning
Logging
The Microsoft Service for DRDA did not find trace log file in the
configured directory. The Microsoft Service for DRDA will
create a new trace log file in the default location. Verify the
source traceFileFolder value of the sharedListeners element of
the system.diagnostics section of the MsDrdaService.exe.config
application configuration file.
1032
Information
Logging
The Microsoft Service for DRDA trace file contains the
maximum allowed number of trace entries. Verify the
maxTraceEntries attribute value of the sharedListeners
element of the system.diagnostics section of the
MsDrdaService.exe.config application configuration file.
1033
Error
Management
The Microsoft Service for DRDA cannot find the configuration
file. Verify that the Microsoft Service for DRDA
MsDrdaService.exe.config application configuration file is in
the default system directory.
1034
Error
Management
The Microsoft Service for DRDA failed to load the configuration
file. Verify the format of the Microsoft Service for DRDA XML
MsDrdaService.exe.config application configuration file.
1035
Information
Management
The Microsoft Service for DRDA has re-read a modified
MsDrdaService.exe.config application configuration file.
Service for DRDA
Microsoft Corporation
Page 83
Event ID
1036
Event Type
Warning
Event Category
Security
Event Message Text
The Microsoft Service for DRDA has detected a possible denial
of service attack. The Microsoft Service for DRDA rejected
DRDA client requests from TCP/IP address not configured in
the clientIpAddressesAllowed attribute of the configuration
file.
1037
1038
1039
1040
1042
Warning
Error
Error
Information
Information
Startup/Shutdown
Startup/Shutdown
Startup/Shutdown
Startup/Shutdown
Startup/Shutdown
The Microsoft Service for DRDA has stopped.
The Microsoft Service for DRDA cannot start.
The Microsoft Service for DRDA cannot stop.
The Microsoft Service for DRDA (Build: 9.0.1789.0) started.
The Microsoft Service for DRDA processed the package
procedure last invoke list. The Microsoft Service for DRDA
processed the package procedures listed in the
packageProcedureLastInvoke attribute value of the
MsDrdaService.exe.config application configuration file.
1043
Warning
Trace/Log
The Microsoft Service for DRDA failed to create specified trace
directory {0}. Using the default trace directory.
1044
Error
Trace/Log
The Microsoft Service for DRDA failed to created trace file {0}.
Exception message: {1}
1056
Error
Connection
The Microsoft Service for DRDA failed to load error mappings
Xml. Error message: {0}
1057
Error
Connection
The Microsoft Service for DRDA failed to load event mappings
Xml. Error message: {0}
1058
Error
Connection
The Microsoft Service for DRDA failed to load DB2 to SQL data
mappings Xml. Error message: {0}
1059
Error
Connection
The Microsoft Service for DRDA failed to load SQL to DB2 data
mappings Xml. Error message: {0}
Table 27. DRDA Service events logged to Windows event log.
Data Type Mapping
You can customize the default data conversions by modifying the data type mapping XML files.
Code Page Mappings
You can specify service-level and application-level code page mapping overrides. Also, you can specify
code point mapping overrides within a defined code page. For more information, see Deployment.
Troubleshooting Tools
SQL Server tracing using Profiler
SQL Server Profiler is a graphical user interface to SQL Trace for monitoring an instance of the Database
Engine or Analysis Services. You can capture and save data about each event to a file or table to analyze
later. For more information, see Introducing SQL Server Profiler
(http://go.microsoft.com/fwlink/?LinkID=180433).
Service for DRDA
Microsoft Corporation
Page 84
DB2 provider tracing using HIS Trace Utility
The Provider Trace Utility captures and saves information from the Microsoft client for DB2 network
connections, OLE DB interfaces and data messages. For more information, see the Host Integration
Server 2013 Trace Utility Help (http://go.microsoft.com/fwlink/?LinkID=180447) and SNA Trace Utility
(http://go.microsoft.com/fwlink/?LinkID=180449).
Network tracing using Network Monitor
The Network Monitor captures network traffic for display and analysis. It enables you to perform tasks
such as analyzing previously captured data in user-defined methods, extracting data from defined
protocol parsers. It includes a Distributed Data Management (DDM) parser for use with the Data
Provider. Contact Microsoft Customer Support Services for a copy of the DDM parser. For more
information, see Network Monitor (http://go.microsoft.com/fwlink/?LinkID=180448).
DB2 server tracing using IBM tools
For more information, see the IBM DB2 Administration Guide for the applicable DB2 platform and
version.
Windows Server events using Event Viewer
Enterprise Single Sign-On utilizes the Windows Application event log. The Event Viewer is a Microsoft
Management Console (MMC) snap-in that enables you to browse and manage event logs. For more
information, see Event Viewer (http://go.microsoft.com/fwlink/?LinkID=131274).
Event Tracing for Windows using Performance Monitor
The DRDA Service ETW (Event Tracing for Windows) trace listener operates as an ETW provider to
output trace data to a Windows ETW controller for access by ETW consumers. The Windows
Performance Monitor uses performance counters, event trace data, and configuration information,
which can be combined into Data Collector Sets. For more information, see Performance Monitor
(http://technet.microsoft.com/en-us/library/cc749249.aspx).
Start Event Trace Session
The Windows administrator must start a DRDA Service ETW event trace session using Performance
Monitor or the logman command line utility.
1. On the Start menu, point to All Programs, point to Microsoft Visual Studio 2010, point to Visual
Studio Tools, right click Visual Studio x64 Win64 Command Prompt (2010), and click Run as
administrator. The User Account Control dialog may appear. Click Yes to continue.
2. In the Visual Studio x64 Win64 Command Prompt (2010) window, locate the installation folder
in which you downloaded the installation program, logman start MsDrdaService -p {3B4388CE50E0-404C-A62B-E9C87D4F3BC4} -o c:\temp\MsDrdaServiceETW.etl -ets, and then click Enter.
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>logman
start MsDrdaService -p {3B4388CE-50E0-404C-A62B-E9C87D4F3BC4} -o
c:\temp\MsDrdaServiceETW.etl -ets
The command completed successfully.
Service for DRDA
Microsoft Corporation
Page 85
Example x. Start ETW event trace session command line argument with example property
values.
Stop Event Trace Session
The Windows administrator can stop a DRDA Service ETW event trace session using Performance
Monitor or the logman command line utility.
1. On the Start menu, point to All Programs, point to Microsoft Visual Studio 2010, point to Visual
Studio Tools, right click Visual Studio x64 Win64 Command Prompt (2010), and click Run as
administrator. The User Account Control dialog may appear. Click Yes to continue.
2. In the Visual Studio x64 Win64 Command Prompt (2010) window, locate the installation folder
in which you downloaded the installation program, logman stop MsDrdaService -ets, and then
click Enter.
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>logman
stop MsDrdaService -ets
The command completed successfully.
Example x. Stop ETW event trace session command line argument with example property values.
Format Event Trace Session Data
The Windows administrator can format DRDA Service ETW event trace session data using Service Trace
Viewer Tool (SvcTraceViewer.exe) (http://msdn.microsoft.com/en-us/library/ms732023.aspx) or the
tracerpt command line utility.
1. On the Start menu, point to All Programs, point to Microsoft Visual Studio 2010, point to Visual
Studio Tools, right click Visual Studio x64 Win64 Command Prompt (2010), and click Run as
administrator. The User Account Control dialog may appear. Click Yes to continue.
2. In the Visual Studio x64 Win64 Command Prompt (2010) window, locate the installation folder
in which you downloaded the installation program, tracerpt c:\temp\MsDrdaServiceETW.etl,
and then click Enter.
C:\temp>tracerpt c:\temp\MsDrdaServiceETW.etl
Input
---------------File(s):
c:\temp\MsDrdaServiceETW.etl
100.00%
Output
---------------DumpFile: dumpfile.xml
Service for DRDA
Microsoft Corporation
Page 86
Summary: summary.txt
The command completed successfully.
Example x. Format ETW event trace session data command line argument with example
property values.
Solutions to Common Problems
You may encounter these common problems when using the DRDA Service.
Cannot start DRDA Service as console application
If you cannot start the DRDA Service as a console application, check to see if the DRDA Service is already
running as a service.

On the Start menu, point to All Programs, point to Microsoft Visual Studio 2010, point to Visual
Studio Tools, right click Visual Studio x64 Win64 Command Prompt (2010), and click Run as
administrator. The User Account Control dialog will appear. Click Yes to continue.

From the command prompt, enter net stop msdrdaservice and press Enter.
C:\Windows\system32>net stop msdrdaservice
The Microsoft Service for DRDA service is stopping.
The Microsoft Service for DRDA service was stopped successfully.
Problem with DRDA Service installation
Error 1937. An error occurred during the installation of assembly
‘Microsoft.HostIntegration.TI.EssoHelper.Interop,version=”1.0.0.0
”,culture=”neutral”,publicKeyToken=”31BF3856AD36E35”,processorArc
hitecture=”MSIL”’. The signature or catalog could not be verified
or is not valid.
Solution is to turn off strong name verification during testing. This error is caused by the current
“unsigned” binaries in the current build. Therefore, one needs to disable strong name signing
verification. See the instructions in the DRDA Service installation and configuration document, under the
section titled “Copy Installation Files and Disable Strong Name Signing Verification”.
In the Visual Studio Command Prompt (2010) window, enter sn -Vr *,* and press the Enter key. Verify
that the command succeeded by checking the command output.
Microsoft (R) .NET Framework Strong Name Utility
4.0.30319.1
Copyright (c) Microsoft Corporation.
Version
All rights reserved.
Verification entry added for assembly '*,*'
In the Visual Studio x64 Win64 Command Prompt (2010) window, enter sn -Vr *,* and press the Enter
key. Verify that the command succeeded by checking the command output.
Microsoft (R) .NET Framework Strong Name Utility
4.0.30319.1
Service for DRDA
Microsoft Corporation
Version
Page 87
Copyright (c) Microsoft Corporation.
All rights reserved.
Verification entry added for assembly '*,*'
Custom Listeners
At service startup, the DRDA Service will write warning entries to the internal DrdaAsTextListener and
DrdaAsConsoleListener, notifying the IT professional that the DRDA Service could not load custom
listeners (bind, text, other).
Custom Bind Listener
The DRDA Service supports custom bind listeners, which may support one of two static SQL for DB2 XML
document formats: HIS 2010 (v8.5) or HIS 2013 (v9.0). On a callback from a custom bind listener, the
DRDA Service may log this error.
Error:2:2:[sep 13 2012 10:44:09.571]
SqlDatabase::CreateXMLForPackage::OnPackageBound(xmlstring ... out
sqlscripts) no sql scripts are passed back.
Error:2:2:[sep 13 2012 10:44:09.573]
SqlDatabase::CreateXMLForPackage::OnPackageBound(xmlstring, ..., out
sqlscripts) Null and empty scripts passed from custom binder
Error:2:4:[sep 13 2012 10:44:09.575]
SqlDatabase::CreateXMLForPackage::OnPackageBound(xmlstring, ..., out
sqlscripts) at
Microsoft.HostIntegration.Drda.RDB.SqlDatabase.CreateXMLForPackage
The solution is to configure the appropriate packageXmlFormat attribute value. The packageXmlFormat
attribute instructs the DRDA Service to write the static SQL for DB2 XML file in the either v90 or v85
format. This optional attribute accepts a string value of either v85 or v90. The default value is v90.
In this case, you should try specifying the value “v85”, and then re-request the bind or bind copy
command.
packageXmlFormat="v85"
Example x. Static SQL for DB2 package XML format attribute.
Note: Microsoft HIS 2013 (V9) supports both the old and new format, which includes an associated XML
schema for validating the XML document. Microsoft HIS 2009 and HIS 2010 (V8.5) support the old
format only.
Problem with Microsoft Client for DB2 test connection failure
Could not connect to data source 'DATASOURCE':
An internal network library error has occurred. A network level
syntax error has occurred.
Solution is to verify the DRDA Service configuration for Enterprise Single Sign-On.
First, check that you configured Enterprise Single Sign-On for Host-Initiated SSO and then re-started the
EntSSO service, by following steps 6 and 7 in the section titled “Configure HIS 2010 and ESSO V4.5”.
Service for DRDA
Microsoft Corporation
Page 88
Second, check that you mapped the host and Windows credentials correctly, by following steps 11-13 in
the section titled “To define an ESSO Affiliate Application for Windows-initiated SSO”. Additionally,
verify that you are using the correct host credentials from the Microsoft Client for DB2 when testing the
connection.
Problem with IBM QMF for z/OS failing with location name is not known error
IBM QMF for z/OS connection failure (e.g. SELECT * FROM HISDEMO1.DBO.CUSTOMERS) will return the
following error.
The location name is not known to the local DB2 subsystem.
Solution is to verify DB2 for z/OS configuration database and re-start DDF as needed.
First, verify that you updated the DB2 for z/OS catalog tables (SYSIBM.LOCATIONS, SYSIBM.IPNAMES,
and SYSIBM.USERNAMES) with your remote relational database.
Second, ask your DB2 for z/OS administrator t to stop and re-start the DB2 for z/OS Distributed Data
Facility (DDF), which is the DRDA protocol gateway, and then re-try the SQL query.
Problem with IBM QMF for z/OS failing with unavailable resource error
IBM QMF for z/OS connection failure (e.g. SELECT * FROM HISDEMO1.DBO.CUSTOMERS) will return the
following error.
Unsuccessful execution caused by an unavailable resource. (Reason
code:
00D300F4; type of resource: 00001005; and resource name: NAME).
The DRDA AS log will have the following corresponding error.
Could not map use rid/password to a valid windows account.
Ahthentication failed.
Solution is to verify DB2 for z/OS configuration database and re-start DDF as needed.
First, verify that you updated the DB2 for z/OS catalog tables (SYSIBM.LOCATIONS, SYSIBM.IPNAMES,
and SYSIBM.USERNAMES) with your remote relational database.
Second, ask your DB2 for z/OS administrator t to stop and re-start the DB2 for z/OS Distributed Data
Facility (DDF), which is the DRDA protocol gateway, and then re-try the SQL query.
Problem with IBM QMF for z/OS failing with syntax error or access rule violation
IBM QMF for z/OS, SPUFI, DB2 Admin or other program fails to query a DB2 for z/OS alias (e.g.
DBO.REMAREAS) over a SQL Server table (e.g. DRDA1.DBO.AREAS), using the DRDA AS, returning the
following error.
DSNT408I SQLCODE =
-204, SQLSTATE = 42704, SYNTAX ERROR OR
ACCESS RULE VIOLATION FROM DB2 UDB for AIX, Linux, HP-UX, Sun,
and Windows TOKENS 'DBO.REMAREAS' IS AN UNDEFINED NAME.
The DRDA AS log will have the following corresponding error.
Service for DRDA
Microsoft Corporation
Page 89
DrdaAs Information: 7 : [9/19/2011 4:30:55 PM] Processing
PRPSQLSTT "SELECT * FROM DBO.REMAREAS"
DrdaAs Error: 7 : [9/19/2011 4:30:55 PM] Message: Invalid object
name 'DBO.REMAREAS'.
Solution is to verify that you created a corresponding SQL Server ALIAS or VIEW.
For example:
CREATE VIEW [dbo].[REMAREAS]
AS
SELECT dbo.AREAS.*
FROM dbo.AREAS
Problem with IBM QMF for z/OS failing with a communications error
IBM QMF for z/OS connection failure (e.g. SELECT * FROM HISDEMO1.DBO.CUSTOMERS) will return the
following error.
A communications error was detected.
Message No: DSQ10427.
The IBM QMF for z/OS Messages and Codes Reference defines QMF message DSQ10427 as SQLCODE 30081. The IBM DB2 for z/OS Codes Reference defines SQLCODE -30081 as communications error.
Solution is to verify the Windows Firewall exception list includes the MsDrdaService.exe program on the
DRDA Service computer.
1. On the Start menu, point to Control Panel, click System and Security, click Windows Firewall,
click Allow a program or feature through Windows Firewall, click Change settings, click Allow
another program, click Browse, enter “%DRDAROOT%\MsDrdaService.exe”, and then click
Add, and then click OK.
2. Re-start the DRDA Service.
DRDA Client SELECT or CALL Statement Fails
DRDA Client programs will bind a set of standard packages that contain basic DECLARE CURSOR
statements, with which to define how to fetch and return results on SELECT and CALL statements. If the
statement fails, then check to see if the package or collection is listed in the IgnoreStandardPacakges.txt
file. If listed, remove the reference, rebind and re-execute the statement.
Access Relational Database Connection Failure
The DRDA Service will connect to a SQL Server database using the connections string in the
MsDrdaService.exe.config in response to a DRDA ACCRDB (Access Relational Database) request. In
certain circumstances, the SQL Server database connection attempt may fail with the following error.
A network-related or instance-specific error occurred while establishing a connection to SQL
Server. The server was not found or was not accessible. Verify that the instance name is correct
Service for DRDA
Microsoft Corporation
Page 90
and that SQL Server is configured to allow remote connections. (provider: Named Pipes
Provider, error: 40 - Could not open a connection to SQL Server).
The DRDA Service will return to the DRDA client the following IBM DB2 error.
SQLCODE -30041
SQLSTATE 57013
Error Text: EXECUTION FAILED DUE TO UNAVAILABLE RESOURCES THAT WILL AFFECT THE
SUCCESSFUL EXECUTION OF SUBSEQUENT COMMANDS AND SQL STATEMENTS.
In these cases, you should utilize the Microsoft SQL Server documentation and best practices to
determine the cause of the connection failure.
Problem with authentication failure when using host-initiated ESSO
When receiving in-bound connections from DB2 for z/OS uses DRDA Service authentication, the DRDA
Service will authenticate based on user name only. The DRDA ACCSEC (Access Security) SECMEC
(Security Mechanism) is USRIDONL (User ID only).
The DRDA Service may write the following error to the trace listener when processing the DRDA SECCHK
(Security Check).
Failed to authenticate the user: SSO LogonExternalUser failed using specified userid/passwd.
To support this authentication method using host-initiated Enterprise Single Sign-On, you must set the
Verify external credentials property to True in the Affiliate Application.
Problem with failure to process BNDSQLSTT when parameter names contain hyphens
According to MSDN, Microsoft SQL Server does not recognize variable names and stored procedure
parameters that are delimited. These types of identifiers must comply with the rules for regular
identifiers. For more information on SQL Server Delimited Identifiers, see
http://msdn.microsoft.com/en-us/library/ms176027.aspx.
However, PL/I and COBOL parameter names contain hyphens and other special characters.
Solution is for the DRDA Service to process the BGNBND BNDSQLSTT by removing special characters and
replacing with a single underscore. For example, the DRDA Service replaces the static SQL parameter
name “PARM-1” with SQL Server stored procedure parameter name “PARM_1”. The DRDA Service uses
the replaced value when processing the BGNBIND BNDSQLSTT into a SQL Server stored procedure or
into a static SQL for DB2 XML definition file.
See list of invalid characters in the SQL Server Transact-SQL reference, at
http://msdn.microsoft.com/en-us/library/aa224033(v=SQL.80).aspx.
Original Value
tilde (~)
hyphen (-)
exclamation point (!)
left brace ({)
percent (%)
Service for DRDA
Replaced Value
Microsoft Corporation
Page 91
Original Value
Replaced Value
right brace (})
caret (^)
apostrophe (')
ampersand (&)
period (.)
left parenthesis (()
backslash (\)
right parenthesis ())
accent grave (`)
Table 28. DRDA Service replaces invalid characters with single underscore.
Problem with processing BGNBND BNDSQLSTT when consistency token is unreadable
The solution is for the DRDA AS to process the BGNBND BNDSQLSTT using a hexadecimal representation
of the 8-byte Consistency Token.
Problem with connection timeout when connecting to SQL Server mirroring partner
For information timeout error when a mirrored database connection is created by the on .NET
Framework Provider for SQL Server, see Microsoft KB article http://support.microsoft.com/kb/2555235.
Problem loading custom bind listener at service startup
DRDA Service will return a warning if it cannot load a custom bind listener at service startup. The
warning does not prevent the DRDA Service from starting.
This problem may be caused when the DRDA Service cannot access the custom bind listener, or the
directory in which the custom bind listener is configured to write bind copy to XML or trace files. The
administrator should set the appropriate access control list rights to these directories.
All members of the HIS Runtime User group must have read and execute rights to program files system
directory in which the custom bind listener dynamic link library is installed. All members of the HIS
Runtime Users group must have write, read and execute rights to bind copy to directories in which the
custom bind listener will write bind copy to XML and trace files.
Problem when custom bind listener does not return on the callback interface.
The DRDA Service will not return a BGNBNDRM (Begin Bind Error Reply Message) to the DRDA
Application Requester client when a custom bind listener fails to return to the DRDA Service a CREATE
PROCEDURE DDL statement. The errorWhenNoCallback attribute instructs the DRDA Service to return
BGNBNDRM (Begin Bind Reply Message) to the DRDA AR client, when the custom bind listener
component does not return any information on the callback interface. This optional attribute accepts a
Boolean value. The default value is true.
<packageBindListeners>
<packageBindListener
type="Microsoft.HostIntegration.Drda.Common.PackageBindListener,
Microsoft.HostIntegration.Drda.Common, Version=9.0.1000.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
errorWhenNoCallback="true"/>
</packageBindListeners>
Service for DRDA
Microsoft Corporation
Page 92
Example x. Default values for packageBindListener in the DRDA Service application configuration file.
Problem with starting DRDA Service as a command line application
When starting the DRDA Service as a command line application, the program may fail with an error.
C:\Program Files\Microsoft Host Integration Server
2013\system>MsDrdaService.exe -c
Only one usage of each socket address (protocol/network
address/port) is normally permitted
The solution is to stop the already running DRDA Service as a Windows service.
Using a Command Window, you can stop and start the DRDA Service.
1. On the Start menu, point to All Programs, point to Microsoft Visual Studio 2010, point to Visual
Studio Tools, right click Visual Studio x64 Win64 Command Prompt (2010), and click Run as
administrator. The User Account Control dialog will appear. Click Yes to continue.
2. From the command prompt, enter net stop msdrdaservice and press Enter.
C:\Windows\system32>net stop msdrdaservice
The Microsoft Service for DRDA service is stopping.
The Microsoft Service for DRDA service was stopped successfully.
Using a Command Window, you can run the DRDA Service as an application.
1. On the Start menu, point to All Programs, point to Microsoft Visual Studio 2010, point to Visual
Studio Tools, right click Visual Studio x64 Win64 Command Prompt (2010), and click Run as
administrator. The User Account Control dialog will appear. Click Yes to continue.
2. From the command prompt, enter net stop msdrdaservice and press Enter.
C:\Windows\system32>net stop msdrdaservice
The Microsoft Service for DRDA service is stopping.
The Microsoft Service for DRDA service was stopped successfully.
3. From the command prompt, enter cd C:\Windows\system32>cd C:\Program Files\Microsoft
Host Integration Server 2013\system and press Enter.
C:\Program Files\Microsoft Host Integration Server
2013\system>MsDrdaService.exe -c
DrdaAs Information: 0 : [10/4/2011 4:51:48 PM] Microsoft Service
for DRDA (build: 9.0.1203.0 )
DrdaAs Information: 0 : [10/4/2011 4:51:48 PM] TCP communication
manager listening on port 446
Note: The DRDA Service log writer will output information to the console window.
Service for DRDA
Microsoft Corporation
Page 93
To disable Strong Name Signing Verification
Test builds of the Microsoft Service for DRDA are unsigned; therefore, you must disable strong name
signing verification for both 32-bit and 64-bit files.
1. On the Start menu, point to All Programs, point to Microsoft Visual Studio 2010, point to Visual
Studio Tools, right click Visual Studio Command Prompt (2010), and click Run as administrator.
The User Account Control dialog will appear. Click Yes to continue.
2. In the Visual Studio Command Prompt (2010) window, enter sn -Vr *,* and press the Enter key.
Verify that the command succeeded by checking the command output.
Microsoft (R) .NET Framework Strong Name Utility
4.0.30319.1
Copyright (c) Microsoft Corporation.
Version
All rights reserved.
Verification entry added for assembly '*,*'
3. In the Visual Studio x64 Win64 Command Prompt (2010) window, enter sn -Vr *,* and press
the Enter key. Verify that the command succeeded by checking the command output.
Microsoft (R) .NET Framework Strong Name Utility
4.0.30319.1
Copyright (c) Microsoft Corporation.
Version
All rights reserved.
Verification entry added for assembly '*,*'
Cannot load Custom Package Bind Listener
At service startup, if the DRDA Service cannot load a custom package bind listener, then the DRDA
Service will log the following warning.
Warning:0:2:[Apr 30 2012 16:04:12.996] SessionManager::Initialize
PackageBindingListener failed to load type: "
Microsoft.HostIntegration.Drda.Common.PackageBindListener,
Microsoft.HostIntegration.Drda.Common, Version=9.0.1000.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35,
processorArchitecture=MSIL "
At runtime, if the MsDrdaService cannot load a custom package bind listener, then the MsDrdaService
will not return an error.
Note: The DRDA Service will continue to run without additional warning. The DRDA Service supports
multiple concurrent custom package bind listeners. The IT professional or developer should correct the
problem, based on the initial warning after DRDA Service startup.
Query against SYSIBM.SYSDUMMY1 returns SQLCODE -204
To define a SYSIBM schema and SYSDUMMY1 table, edit the USE clause to reference the target SQL
Server database, and then execute the statement.
/****** HAS OUTPUT PARAMS ******/
The DRDA Service internal bind will include this comment when executing the CREATE PROCEDURE
statement.
Service for DRDA
Microsoft Corporation
Page 94
USE [CONTOSO]
GO
/****** Object: Schema [SYSIBM] Script Date: 09/26/2012 13:21:38 ******/
IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = N'SYSIBM')
EXEC sys.sp_executesql N'CREATE SCHEMA [SYSIBM] AUTHORIZATION [dbo]'
GO
/****** Object: Table [SYSIBM].[SYSDUMMY1] Script Date: 09/26/2012 13:21:38
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[SYSIBM].[SYSDUMMY1]') AND type in (N'U'))
BEGIN
CREATE TABLE [SYSIBM].[SYSDUMMY1](
[IBMREQD] [char](1) NOT NULL
) ON [PRIMARY]
END
GO
SET ANSI_PADDING OFF
GO
INSERT [SYSIBM].[SYSDUMMY1] ([IBMREQD]) VALUES (N'Y')
Example x. DDL to create SYSIBM schema and SYSDUMMY1 table.
Query Returns an Empty Parameter Value
The CREATE PROCEDURE statement should include a comment, to denote the one or more OUTPUT
parameters will be used to return the data from the SELECT statement.
/****** HAS OUTPUT PARAMS ******/
The DRDA Service internal bind will include this comment when executing the CREATE PROCEDURE
statement.
Query Returns an Empty Resultset
When executing DECLARE CURSOR FOR SELECT, the DRDA Service may return an empty resultset and
the following error.
THE CURSOR IS NOT IN A PREPARED STATE
SQLSTATE: 26501, SQLCODE: -514
The CREATE PROCEDURE statement should include a comment, to denote the stored procedure will
return a resultset.
/****** RETURN RESULTSET ******/
The DRDA Service internal bind will include this comment when executing the CREATE PROCEDURE
statement.
Service for DRDA
Microsoft Corporation
Page 95
Bind Copy fails with SQLCODE -904
When executing DRDA BGNBND (Begin Bind) to copy a package from DB2 for z/OS to SQL Server, using
the DB2 Admin Bind Copy Package panel, the DB2 system may return a SQLCODE -904.
This problem can be caused by incorrect security configuration, associated with your 3270 profile used
to log into the host session.
Execute Package fails with SQLCODE 805
When executing a static SQL package from DB2 for z/OS to SQL Server, using a DB2 for z/OS locally
attached program (TSO, CICS), the DB2 system may return a SQLCODE -805.
This problem can be caused by incorrect mapping of DB2 for z/OS to SQL Server fully qualified package
naming convention. Check that the bind copy produced a stored procedure in the SQL Server schema
matching the DB2 for z/OS literal or matched collection name. Also, check that the
MsDrdaService.exe.config databaseAliases includes any required DB2 location to SQL Server database
name mappings, or DB2 collection to SQL Server schema name mappings.
<databaseAliases>
<databaseAlias sourceLocation="CONTOSO"
sourceCollection="DSN8HC91"
targetDatabase="ContosoRetailDW"
targetSchema="DSN8910" />
<databaseAlias sourceLocation="NWIND"
sourceCollection="DSN8HC91"
targetDatabase="Northwind"
targetSchema="DSN8910" />
</databaseAliases>
Further, check the comma separated values for the packageProcedureSchemaList attribute within the
database element of the MsDrdaService.exe.config.
packageProcedureSchemaList="DBO,DSN8910"
Troubleshooting Static SQL for DB2 Custom Packages
This topic describes common errors and coding mistakes that can occur when you work with the static
SQL for DB2 packages feature in Microsoft ADO.NET Provider for DB2 (Data Provider).
Common Errors
The following table describes DB2 server errors that may occur along with the actions you must take to
correct them.
SQLCODE
SQLCODE -104 (invalid statement)
SQLCODE -204 (object not found)
SQLCODE -440 (incorrect
parameters)
SQLCODE -501 (cursor not opened)
SQLCODE -551 (insufficient
privileges)
Service for DRDA
Action


Validate and match data to database schema.
Verify that the command elements match the package
schema.
Verify that the qualified object names (four-part or alias).
Verify that the command elements match the package schema.
Verify that command includes CALL STATIC.
Verify that the privileges to CREATE, BIND and EXECUTE
packages are set.
Microsoft Corporation
Page 96
SQLCODE
SQLCODE -601 (object name not
unique)
Table 29. Common Errors.
Action
Verify the uniqueness of the naming convention.
Common Coding Mistakes
The following table describes common coding mistakes by feature area.
Area
XML document
Description
 Every input parameter requires a parameter element. Each output column
requires a column element.
 Cursor names should be unique within a package.
 Elements are not closed or do not match.
DB2 for AS/400 In HIS 2010, the isolation level supported is No Commit (NC), which must be
isolation level
specified in the XML document as “IsolationLevel="NoCommit.
Stored
 Package creation will fail when the package name, section number, or
Procedure and
package alias is not unique.
Alias overlap
 If package creation succeeds, but the alias name is the same as a stored
procedure name, then a runtime error may result (for example, SQLCODE 440 for invalid parameters). Alternately, the DB2 server may return an
unexpected result set.
No Alias Name
 If the metadata file does not contain an alias name, then the Microsoft
client executes the statement as a stored procedure.
 If a stored procedure with the same name exists, then the stored
procedure will be executed and the program may experience unexpected
results.
 If there is no stored procedure by the same name, then the database
server will return an error that the object name is undefined (SQLCODE 204).
Table 30. Common Mistakes.
Service for DRDA
Microsoft Corporation
Page 97
Development – Programmer’s Guide
The following sections provide help for developing applications for use with Microsoft Service for DRDA
(DRDA Service).
Understanding Static SQL for DB2 Custom Packages
DRDA supports two methods of defining SQL statements for execution against a remote IBM DB2 DRDA
Service. First, the DRDA AR can dynamically-define SQL statements at runtime, using the DRDA
commands EXCSQLIMM (Execute Immediate SQL Statement) or EXCSQLSTT (Execute SQL Statement).
Second, the DRDA AR can statically-define SQL statements at bind time, using the DRDA commands
BGNBND (Begin Binding a Package to an RDB) and BNDSQLSTT (Bind SQL Statement to an RDB Package).
All Microsoft HIS data providers for DB2 support executing CREATE CURSOR statements within the
standard set of Microsoft static SQL packages for DB2 used to return results on SELECT and CALL
statements. See Deployment book for information on defining the standard set of packages.
Only the Microsoft ADO.NET Framework Data Provider for DB2 supports executing statements within
custom-defined static SQL packages for DB2, which are created using the
Microsoft.HostIntegration.DataAccessLibrary DataAccessControl.CreateCustomPackage interface. The
developer can write a program to execute the CreateCustomPackage interface or can use the Visual
Studio 2012 Server Explorer to reference an XML file and create the package.
Using Visual Studio 2012 or another XML editor, the enterprise developer creates a Microsoft static SQL
for DB2 package XML file, which contains elements that specify the bind options, package(s),
statement(s), optional parameter(s) and result set(s). The DRDA AR client converts the static SQL for DB2
package XML file into a DRDA BGNBND with one or more BNDSQLSTT protocol flows.
Note: The Microsoft DRDA AR client cannot execute static SQL for DB2 packages that are not defined
using the Microsoft DAL DAC interface.
Creating Static SQL for DB2 Custom Packages
Create Custom Packages Menu
You can use the tools in the Data Connections tab of the Server Explorer in Visual Studio 2012 and Visual
Studio 2010 to create custom packages. The Microsoft ADO.NET Data Provider for DB2 supports the
standard Microsoft Visual Studio Data Designer Extensibility (DDEX) interfaces to customize the Server
Explorer. The Static SQL Packages folder within MsDb2Client Data Connections contains the Create
Custom Packages menu option. You can use this option to set a reference to an XML file to create
packages in the target DB2 database. The Set Custom Package Data menu option on the connection
folder loads the XML file into the schema cache. This operation populates the packages, sections,
statements, columns and result set properties in the Static SQL Packages folder.
Note: The Data Access Tool does not offer an option for creating custom static SQL packages. The
following sections of this document provide more information on these static SQL technologies.
Create Custom Packages Class
This section describes how to automate the creation of custom packages using the classes in the
Microsoft.HostIntegration.DataAccessLibrary namespace. For the online version of the reference
Service for DRDA
Microsoft Corporation
Page 98
documentation, see Microsoft.HostIntegration.DataAccessLibrary Namespace
(http://go.microsoft.com/fwlink/?LinkID=180763).
Parameters
The following table describes the parameters and return value for the
DataAccessControl.CreateCustomPackages method.
Item
Description
connStr
The connection string to use.
packageData
The package data to use.
callback
The callback to use.
Return Value
true if creation was successful; otherwise, false.
Table 31. Data Access Control Create Custom Packages parameters
Description
The IConnectionString connStr takes a Universal Data Link (UDL) file. You can define a UDL file using the
Data Source Wizard by using the Data Access Tool. The following listing shows the syntax for a UDL.
[oledb]
; Everything after this line is an OLE DB initstring Provider=DB2OLEDB;Password=PASSWORD;Persist
Security Info=True;User ID=USERID;Initial Catalog=DSN1;Authentication=Server;Defer
Prepare=False;Derive Parameters=False;Rowset Cache Size=0;Network Transport Library=TCPIP;Host
CCSID=37;PC Code Page=1252;Network Address=SYS1;Network Port=446;Package
Collection=COLLID;Default Schema=COLLID;Default Qualifier=COLLID;DBMS Platform=DB2/MVS;Process
Binary as Character=False;Connection Pooling=False;Units of Work=RUW
Calling Static SQL for DB2 Custom Packages
Package Naming Convention
DRDA defines a fully-qualified static SQL package using a PKGNAM (RDB Package Name) that consists of
these multiple parts.

RDBNAM (Relational Database Name)

RDBCOLID (RDB Collection Identifier)

PKGID (RDB Package Identifier)
RDBNAME.RDBCOLID.PKGID.PKGCNSTKN.PKGSN
Example x. Fully-qualified package name with consistency token.
Note: If more than one package has the same value for PKGNAM, then the packages are distinguished
by the VRSNAM (Version Name) or PKGCNSTKN (package name consistency token).

PKGCNSTKN (RDB Package Consistency Token)

VRSNAM (Version Name)
Service for DRDA
Microsoft Corporation
Page 99
Executing Static SQL Statements
You can use ADO.NET Command and Parameter objects to execute static SQL statement using an EXEC
STATIC syntax referencing the fully-qualified package name.
EXEC STATIC RDBNAME.RDBCOLID.PKGID.PKGCNSTKN.PKGSN
Example x. Command syntax for executing static SQL statement, using fully-qualified package name.
Optionally, you can use ADO.NET Command and Parameter objects to execute static SQL statement
using a CALL syntax referencing the package alias name.
CALL RDBNAME.RDBCOLID.PKALIAS.PKGSN
Example x. Command syntax for executing static SQL statement, using package alias name.
Note: When binding the package, you must specify a value for Alias (V85) or packageSectionAlias (V90).
Static SQL Result Set
The Microsoft DRDA Client can use early metadata or late metadata to interpret the result set columns.
Use Early Metadata
You can use early metadata specified in the package XML to define the result set columns (data types,
encoding). First, specify one or more Column elements in the Result Set element. Second, set the
MsDb2Client connection property Use Early Metadata to true. Third, load the static SQL for DB2 package
XML file using the MsDb2Client property.
Use Late Metadata
You can use late metadata returned by the DRDA Service to define the result set columns (data types,
encoding), by setting the MsDb2Client connection property Use Early Metadata to false.
Converting packages to stored procedures
The DRDA Service converts static SQL for DB2 packages and embedded SQL statements into SQL Server
stored procedures, by processing DRDA BGNBND (Begin Bind) and BNDSQLSTT (Bind SQL Statement)
protocol flows and formatted data values. Optionally, the DRDA Service can processing binds as XML
files, for later conversion into stored procedures or troubleshooting purposes. Further, the DRDA Service
can invoke a custom bind listener component to process BGNBND and BNDSQLSTT flows. See the
Operations book for more information on processing package bind flows. See Programmer’s Guide and
Programmer’s Reference for information on custom bind listeners.
Service for DRDA
Microsoft Corporation
Page 100
Figure 10. DB2 for z/OS embedded SQL is converted to DB2 packages during the DB2 pre-compile phase,
and then converted to DRDA BGNBND and BNDSQLSTT flows during the DB2 bind copy phase, and then
converted to SQL Server stored procedures by the DRDA Service when processing the DRDA bind package
and statements flows.
Static SQL Package Statements
The IBM DB2 for z/OS product and documentation includes a set of installation verification test sample
programs, including a COBOL for z/OS
EXEC SQL CONNECT TO :TEMPLOC END-EXEC
EXEC SQL INSERT INTO VHDEPT
VALUES (:DEPT-NUMB, :DEPT-NAME, :DEPT-MGR,
:DEPT-ADMR, :DEPT-LOC)
END-EXEC.
Example x. IBM DB2 for z/OS sample COBOL program with embedded SQL CONNECT and INSERT
statements.
CONNECT TO :H
INSERT INTO VHDEPT VALUES (:H, :H, :H, :H, :H )
Example x. IBM DB2 for z/OS sample COBOL program embedded SQL statement extracted by DB2 precompiler and stored in a static SQL for DB2 package—one section per statement.
<Section Number="18" Alias="">
<Statement Number="18">INSERT INTO VHDEPT VALUES ( :H , :H , :H , :H , :H ) </Statement>
<Parameters>
<Parameter Name="DEPT-NUMB" Type="Char" Length="3" Precision="0" Scale="0"
CCSID="37" Nullable="False" />
<Parameter Name="DEPT-NAME" Type="Char" Length="36" Precision="0" Scale="0"
CCSID="37" Nullable="False" />
Service for DRDA
Microsoft Corporation
Page 101
<Parameter
CCSID="37"
<Parameter
CCSID="37"
<Parameter
CCSID="37"
</Parameters>
</Section>
Name="DEPT-MGR" Type="Char" Length="6" Precision="0" Scale="0"
Nullable="False" />
Name="DEPT-ADMR" Type="Char" Length="3" Precision="0" Scale="0"
Nullable="False" />
Name="DEPT-LOC" Type="Char" Length="16" Precision="0" Scale="0"
Nullable="False" />
Example x. IBM DB2 for z/OS sample COBOL program static SQL for DB2 package statements converted
by the DRDA Service into a static SQL for DB2 XML file section. DB2 for z/OS does not include the
CONNECT statement in the remote DRDA-defined package.
/****** BNDOPT:
<Options><BNDCHKEXS>BNDEXSOPT</BNDCHKEXS><BNDCRTCTL>BNDNERALW</BNDCRTCTL><BNDEXPOPT>EXPNON</BNDEXP
OPT><DFTRDBCOL>CXE001</DFTRDBCOL><DGRIOPRL>1</DGRIOPRL><PKGATHOPT>PKGATHKP</PKGATHOPT><PKGISOLVL>I
SOLVLCS</PKGISOLVL><PKGOWNID>CXE001</PKGOWNID><PKGRPLOPT>PKGRPLALW</PKGRPLOPT><QRYBLKCTL>FIXROWPRC
</QRYBLKCTL><RDBRLSOPT>RDBRLSCMM</RDBRLSOPT><STTDATFMT>USADATFMT</STTDATFMT><STTDECDEL>DECDELPRD</
STTDECDEL><STTSTRDEL>STRDELAP</STTSTRDEL><STTTIMFMT>USATIMFMT</STTTIMFMT></Options> ******/
CREATE PROCEDURE [DSN8910].[DSN8HC3_18BBB2BA1492DAC8_19] @DEPT_NUMB Char(3), @DEPT_NAME Char(36),
@DEPT_MGR Char(6), @DEPT_ADMR Char(3), @DEPT_LOC Char(16)
AS
Begin INSERT INTO VHDEPT VALUES ( @DEPT_NUMB , @DEPT_NAME , @DEPT_MGR , @DEPT_ADMR ,
@DEPT_LOC ) return @@ROWCOUNT
end
GO
Example x. IBM DB2 for z/OS sample COBOL program static SQL for DB2 package statements converted
by the DRDA Service into a SQL Server CREATE PROCEDURE statement.
DRDA Service Package Bind Options
The DRDA BGNBND (Begin Bind) flow includes a set of package bind options that can influence the
storage and execution of the runtime package. The DRDA Service maps a limited number of bind options
to SQL Server constructs. The DRDA Service preserves the bind options in the static SQL for DB2 package
XML file, as comments within the stored procedure, and optionally as extended properties on the stored
procedure.
Bind Package Creation Control
The DRDA Service supports the DRDA BGNBND BNDCRTCTL (Bind Package Creation Control), which
instructs the MsDrdaService to skip over bind errors. The BNDCRTCTL code point supports an
enumeration of values.




BNDCHKONL(Bind Check Only)
BNDNERALW (Bind No Errors Allowed)
BNDERRALW (Bind Errors Allowed)
BNDNERALW (Bind No Errors Allowed)
By default, the DRDA Service defaults to BNDNERALW (Bind No Errors Allowed). The DRDA Service
returns a BGNBNDRM (BGNBND Reply Message) with an error indicating the problem, when one of the
following instances occurs.

DRDA-to-XML conversion problem
Service for DRDA
Microsoft Corporation
Page 102



XML-to-DDL conversion problem
Custom bind listener does return DDL on the callback interface
DRDA Service cannot execute the DDL statement
To instruct the DRDA Service to ignore errors and continue processing a package, the DRDA AR client
should specify BNDCRTCTL option BNDERRALW (Bind Errors Allowed).
When using the DB2 Administrative tool with DB2 for z/OS, the DB2 administrator can specify the option
SQLERROR “C” (Continue). When using the DB2 bind copy tool with DB2 for z/OS, the DB2 programmer
can navigate to the DB2 BIND PACKAGE panel, specify CHANGE CURRENT DEFAULTS=YES, and then set
SQLERROR PROCESSING=C.
Bind Package Replace
The DRDA Service supports the DRDA BGNBND PKGRPLOPT (Package Replacement Option), which
instructs the MsDrdaService to drop and re-create the package stored procedure. The PKGRPLOPT code
point supports a Boolean value.
Currently, we add but do not replace packages, when processing BGNBND (Begin Bind) BNDSQLSTT
(Bind SQL Statement). This option instructs DB2 for z/OS to drop and create a new copy of the package.


PKGRPLALW (Package Replacement Allowed)
PKGRPLNA (Package Replacement Not Allowed)
By default, the DRDA Service defaults to PKGRPLALW (Package Replacement Allowed). The DRDA Service
executes a DROP PROCEDURE statement prior to executing a CREATE PROCEDURE statement.
Bind Options List
The following are a list of the package bind options defined in the static SQL for DB2 package XML file.
The format of these elements, types and values differ from version of Host Integration Server to
another. In HIS 2010 (V8.5), the technology supported a version 8.5 format of these bind options. In HIS
2013 (V9.0), the technology supports a version 9.0 format of these bind options, which is more verbose
and descriptive. The HIS 2013 technology includes an XSD schema file for use with the static SQL for DB2
package XML file.
DRDA Service Static SQL Cursors
The DRDA Service transforms static SQL for DB2 packages into SQL Server stored procedures, when
processing DRDA begin bind and bind SQL statements commands, including embedded SQL DECLARE
CURSOR statements. Depending on the cursor type, the DRDA Service defines the stored procedure to
include additional input parameters (“INVOKE_TYPE”) to define the action on the cursor (e.g. open,
fetch, close). The DRDA Service includes comments in the SQL Server stored procedure to denote the
bind options (e.g. fixed row protocol) and cursor type (e.g. global, for update, read only).
Declare and Open a Cursor
The DRDA Service opens a cursor by calling a SQL Server stored procedure with an invoke type
parameter argument “@__INVOKE_TYPE__ = 0”, in response to a DRDA AR OPNQRY (Open Query) to
support a consumer program’s DECLARE CURSOR and OPEN CURSOR commands, returning a single row
to the DRDA AR in a reply to the DRDA OPNQRY command called a QRYDTA (Query Answer Data Set).
Service for DRDA
Microsoft Corporation
Page 103
Fetch against a Cursor
The DRDA Service fetches against a cursor by calling a SQL Server stored procedure with an invoke type
parameter argument “@__INVOKE_TYPE__ = 1” and parameter argument @__FETCH_ROW_COUNT__ =
n”, in response to a DRDA AR CNTQRY (Continue Query) to support a consumer program’s FETCH
commands, returning a single row or multiple (n) rows to the DRDA AR in a reply to the DRDA CNTQRY
command called a QRYDTA (Query Answer Data Set).
To improve performance, the DRDA Service returns multiple rows per fetch when possible, unless the
package or cursor is defined for single row fetch to support concurrent updating. See description of SQL
clause syntax and bind options below.
Close a Cursor
The DRDA Service closes a cursor by calling a SQL Server stored procedure with an invoke type
parameter argument “@__INVOKE_TYPE__ = 2”, in response to a DRDA AR CLSQRY (Close Query) to
support a consumer program’s CLOSE CURSOR command, returning to the DRDA AR a reply to the DRDA
CLSQRY command called a ENDQRYRM (End of Query Reply Message).
If the DECLARE CURSOR statements includes a SQL clause WITH HOLD, then the DRDA Service defines
the stored procedure with a DECLARE CURSOR GLOBAL option. In this case, and SQL Server will retain
the cursor over close and commit requests for the duration of the DRDA AR to DRDA Service to SQL
Server connection.
SQL Clause Syntax
The DRDA Service will include a RETURN_RESULTSET comment in the stored procedure when the
DECLARE CURSOR SQL statement includes the SQL clause DECLARE CURSOR FOR SELECT.
The DRDA Service will include a CURSOR_WITH_HOLD comment in the stored procedure when the
DECLARE CURSOR SQL statement includes the SQL clause WITH HOLD. The DRDA Service defines the
stored procedure with a DECLARE CURSOR GLOBAL option, and SQL Server will retain the cursor over
close and commit requests for the duration of the DRDA AR to DRDA Service to SQL Server connection.
The DRDA Service will include a CURSOR_FOR_UPDATE comment in the stored procedure when the
DECLARE CURSOR SQL statement includes the SQL clause FOR UPDATE. The DRDA Service defines the
stored procedure without the parameter argument @__FETCH_ROW_COUNT__ = n”. The DRDA Service
will return a single row per fetch only.
Depending on bind option, the DRDA Service interprets the SQL clause syntax FOR READ ONLY and FOR
FETCH ONLY as denoting a non-updateable cursor, against which the DRDA Service can fetch multiple
rows per CNTQRY. The DRDA Service defines the stored procedure with the parameter argument
@__FETCH_ROW_COUNT__ = n”. The DRDA Service will return a single row or multiple rows per fetch
based on the bind option.
DECLARE C2 CURSOR WITH HOLD FOR SELECT SALESKEY FROM
CONTOSO.DSN8910.BULKTST1 FOR READ ONLY
DECLARE C4 CURSOR WITH HOLD FOR SELECT SALESKEY FROM
CONTOSO.DSN8910.BULKTST1 FOR FETCH ONLY
Service for DRDA
Microsoft Corporation
Page 104
DECLARE C8 CURSOR WITH HOLD FOR SELECT SALESKEY FROM
CONTOSO.DSN8910.BULKTST1
Examples of SELECT statements defined using LMTBLKPRC that include fetch row count parameter.
Package Bind Option
The DRDA Service interprets the DRDA BGNBND (Begin Bind) option QRYBLKCTL (Query Block Protocol
Control) as an override to the cursor type and SQL clause syntax, instructing the DRDA Service to return
either a single row per fetch or multiple rows per fetch on non-updateable cursors.
The default QRYBLKCTL is LMTBLKPRC(Limited Block Query Protocol), which instructs the DRDA Service
to return multiple rows per query block, as many as will fit on average into a 32K block less the byes
required for the DRDA DSS (Data Stream Structures) for defining the column data types.
Optionally, the DB2 programmer can bind a package with DB2 CURRENTDATA=YES bind option, which is
translated to DRDA BGNBND (Begin Bind) option QRYBLKCTL (Query Block Protocol Control) FIXROWPRC
(Fixed Row Query Protocol), to instruct the DRDA Service to return a single (fixed row) per CNTQRY
(Continue Query) in response to the program’s SQL FETCH statement.
No Cursor Required
If the bind option is the default LMTBLKPRC, the Data Server defines a stored procedure with a SELECT
statement but no DECLARE CURSOR, when the statement is unambiguously read-only. See description of
SQL clause syntax and bind options below.
DECLARE C1 CURSOR FOR SELECT SALESKEY FROM
CONTOSO.DSN8910.BULKTST1 FOR READ ONLY
DECLARE C3 CURSOR FOR SELECT SALESKEY FROM
CONTOSO.DSN8910.BULKTST1 FOR FETCH ONLY
DECLARE C7 CURSOR FOR SELECT SALESKEY FROM
CONTOSO.DSN8910.BULKTST1
Examples of SELECT statements that do not require SQL Server cursors.
Data Type Conversions
The DRDA Service provides compatibility across heterogeneous vendor products and technologies, by
providing these platform conversions.
DB2 to SQL Server Data Type Mappings
The DRDA Service maps DB2 to SQL Server data types based on a defined set of mappings stored in a
Db2ToSql.xml file in the %SNAROOT%\system directory. For example, the DRDA Service converts DB2
TIMESTAMP values and formats as defined in DRDA protocol flows and formatted data into SQL Server
DATETIME2(6) values and formats as defined in stored procedures and dynamic SQL statements through
the Microsoft ADO.NET Framework Data Provider for SQL Server interfaces.
Source DB2 Type
TIME
TIMESTAMP
DATE
Service for DRDA
Target SQL Server Type
TIME
DATETIME2
DATETIME
Microsoft Corporation
Page 105
Source DB2 Type
CHAR
CHAR () FOR BIT DATA
CHAR () FOR MIXED DATA
CHAR () FOR SBCS DATA
CHARACTER
CHARACTER () FOR BIT DATA
FIXEDBYTE
CHARACTER () FOR MIXED DATA
CHARACTER () FOR SBCS DATA
NATIONAL CHARACTER
VARCHAR
VARCHAR () FOR BIT DATA
VARBYTE
VARCHAR () FOR MIXED DATA
VARCHAR () FOR SBCS DATA
CHARACTER VARYING
CHARACTER VARYING () FOR BIT DATA
CHARACTER VARYING () FOR MIXED DATA
CHARACTER VARYING () FOR SBCS DATA
NATIONAL CHARACTER VARYING
LONG VARCHAR FOR BIT DATA
LONG VARCHAR
GRAPHIC
VARGRAPHIC
GRAPHIC VARYING
SMALLINT
INT
INTEGER
BIGINT
DECIMAL
NUMERIC
REAL
FLOAT
DOUBLE
DOUBLE PRECISION
BLOB
BINARY LARGE OBJECT
CLOB
CLOB () FOR MIXED DATA
CLOB () FOR SBCS DATA
CHAR LARGE OBJECT
CHAR LARGE OBJECT () FOR MIXED DATA
CHAR LARGE OBJECT () FOR SBCS DATA
CHARACTER LARGE OBJECT
CHARACTER LARGE OBJECT () FOR MIXED DATA
Service for DRDA
Target SQL Server Type
CHAR
BINARY
NCHAR
CHAR
CHAR
BINARY
BINARY
NCHAR
CHAR
NCHAR
VARCHAR
VARBINARY
VARBINARY
NVARCHAR
VARCHAR
VARCHAR
VARBINARY
NVARCHAR
VARCHAR
NVARCHAR
IMAGE
TEXT
NCHAR
NVARCHAR
NVARCHAR
SMALLINT
INT
INT
BIGINT
DECIMAL
DECIMAL
REAL
FLOAT
FLOAT
FLOAT
IMAGE
IMAGE
TEXT
NTEXT
TEXT
TEXT
NTEXT
TEXT
TEXT
NTEXT
Microsoft Corporation
Page 106
Source DB2 Type
CHARACTER LARGE OBJECT () FOR SBCS DATA
Table 32. DB2 to SQL Server Data Type Mappings
Target SQL Server Type
TEXT
Based on source data length, the DRDA Service will convert from these source DB2 to these target SQL
Server data types.


CHAR () FOR BIT greater than 8K is mapped to VARBINARY(MAX).
CHAR () greater than 8K is mapped to VARCHAR(MAX).
CHAR|VARCHAR () FOR BIT
Depending on the the source package definition and bind copy options, SQL commands with parameters
of type CHAR|VARCHAR () FOR BIT may be encoded in the DRDA BGNBND BNDSQLSTT as
CHAR|VARCHAR (CCSID=37, 277, 1208) and not as CHAR|VARCHAR (65535), or CHAR|VARCHAR ( ) FOR
BIT, or BINARY|VARBINARY. This parameter data type encoding issue may cause the bind copy to
CREATE PROCEDURE process to fail, if the target SQL Server columns are BINARY|VARBINARY. To resolve
this problem, the MsDrdaService will automatically capture the CREATE DRDA BNDSQLSTT to SQL Server
CREATE PROCEDURE error, obtain column metadata from the SQL Server catalog with which to correct
the stored procedure parameter data types, and then re-execute the CREATE PROCEDURE statement.
SQL Server to DB2 Data Type Mappings
The DRDA Service maps DB2 to SQL Server data types based on a defined set of mappings stored in a
MsSqlToDb2.xml file in the %SNAROOT%\system directory. For example, the DRDA Service converts SQL
Server MONEY values and formats as defined by the Microsoft ADO.NET Framework Data Provider for
SQL Server interfaces into DB2 DECIMAL values and formats as defined in DRDA protocol flows and
formatted data.
Target SQL Server Type
SMALLINT
INT
REAL
FLOAT
SMALLMONEY
MONEY
BIT
TINYINT
BIGINT
UNIQUEIDENTIFIER
VARBINARY
TIMESTAMP
BINARY
XML
IMAGE
VARIANT
TEXT
CHAR
VARCHAR
Service for DRDA
Source DB2 Type
SMALLINT
INTEGER
REAL
DOUBLE
DECIMAL(10,4)
DECIMAL(19,4)
SMALLINT
SMALLINT
BIGINT
CHAR(38)
VARBYTE
TIMESTAMP
FIXEDBYTE
LONG VARCHAR
LONG VARCHAR
VARCHAR(32672) FOR BIT DATA
LONG VARCHAR
CHAR
VARCHAR
Microsoft Corporation
Page 107
Target SQL Server Type
NCHAR
NVARCHAR
NTEXT
DECIMAL
NUMERIC
DATETIME
DATETIMEOFFSET
DATE
TIME
SMALLDATETIME
SYSNAME
Table 33. SQL Server to DB2 Data Type Mappings
Source DB2 Type
CHAR
VARCHAR
LONG VARCHAR
DECIMAL
DECIMAL
TIMESTAMP
TIMESTAMP
DATE
TIME
TIMESTAMP
VARGRAPHIC(128)
VARCHAR columns map to CHAR parameters
The DRDA Service will process DRDA BNDSQLSTT (Bind SQL Statement) commands into SQL Server
CREATE PROCEDURE statements, transforming the DB2 DRDA data types into corresponding SQL Server
T-SQL data types. The DRDA BNDSQLSTT will define CHAR parameter types for reading and writing to
DB2 and SQL Server VARCHAR column data types. See for example the DB2 for z/OS IVT (Installation
Verification Test) sample program static SQL package DSN8HC91.DSN8HC3 and corresponding SQL
Server and DB2 tables.
CREATE TABLE DEPT (
DEPTNO CHAR(3) NOT NULL,
DEPTNAME VARCHAR(36) NOT NULL,
MGRNO CHAR(6) WITH DEFAULT NULL,
ADMRDEPT CHAR(3) NOT NULL,
LOCATION CHAR(16) WITH DEFAULT NULL
)
AUDIT NONE
DATA CAPTURE NONE
CCSID EBCDIC;
Example of DB2 CREATE TABLE statement.
CREATE TABLE [DSN8910].[DEPT](
[DEPTNO] [char](3) NOT NULL,
[DEPTNAME] [varchar](36) NOT NULL,
[MGRNO] [char](6) NULL,
[ADMRDEPT] [char](3) NOT NULL,
[LOCATION] [char](16) NULL
) ON [PRIMARY]
Example of SQL Server CREATE TABLE statement.
Service for DRDA
Microsoft Corporation
Page 108
UPDATE VHDEPT SET DEPTNAME = :H, MGRNO = :H, ADMRDEPT = :H,
LOCATION = :H WHERE DEPTNO = :H
Example ofDB2 embedded static SQL statement.
CREATE PROCEDURE [DSN8910].[DSN8HC3_18BBB2BA1492DAC8_24]
@P0 char(36)
,@P1 char(6)
,@P2 char(3)
,@P3 char(16)
,@P4 char(36)
AS
UPDATE VHDEPT
SET DEPTNAME = @P0,
MGRNO = @P1,
ADMRDEPT = @P2,
LOCATION = @P3
WHERE DEPTNO = @P4;
RETURN @@ROWCOUNT;
Example of SQL Server CREATE PROCEDURE statement.
Date Time Formats and Conversions
The DRDA Service converts to and from DB2 and SQL Server date time formats based on a defined set of
format masks in the MsDrdaService.exe.config file—to support interoperability between DB2, SQL
Server, ISO and string literal datetime values. See the Operations book for more information on date
masks, time masks, and datetime masks.
The DRDA Service maps DB2 data types to and from SQL Server data types.
DB2 TIME and TIMESTAMP with Hour 24
IBM DB2 TIME and TIMESTAMP can contain an Hour 24 value that is out of range of Microsoft SQL
Server TIME, DATETIME, and DATETIME2 data types.
IBM DB2 supports a TIME value range from 00.00.00 to 24.00.00, and TIMESTAMP value range from
0001-01-01-00.00.00.000000 to 9999-12-31-24.00.00.000000.
SQL Server supports a TIME value range from 00:00:00.0000000 to 23:59:59.9999999, and DATETIME2
value range from 01-01-01 00:00:00 to 9999-12-31 23:59:59.9999999.
The DRDA Service will transform DB2 TIME and TIMESTAMP values with hour 24 into SQL Server TIME,
DATETIME, and DATETIME2 values with hour 00:00:00 of the next day. For example, the DRDA Service
will transform the DB2 TIME value ’24:00:00’ into the SQL Server TIME value ’00:00:00’). For example,
the DRDA Service will transform the DB2 DATETIME value '2011-12-31-24.00.00.000000' into the SQL
Server DATETIME/DATETIME2 value '2012-01-01-00.00.00.000000'.
Service for DRDA
Microsoft Corporation
Page 109
BLOB and CLOB
MsDrdaService support for DB2 BLOB and CLOB is limited. MsDrdaService supports DB2 BLOB data type
mapped to SQL Server VARBINARY(MAX), with an optional mapping to IMAGE. MsDrdaService supports
DB2 CLOB data type mapped to SQL Server VARCHAR(MAX), with optional mappings to TEXT and NTEXT.
Dynamic SQL BLOB and CLOB





BLOB to and from IMAGE
BLOB to and from VARBINARY(MAX)
CLOB to and from TEXT
CLOB to and from NTEXT
CLOB to and from VARCHAR(MAX)
Static SQL BLOB and CLOB work in limited ways with these data type mappings.


Input parameters
 BLOB to VARBINARY(MAX)
 CLOB to VARCHAR(MAX)
Output parameters
 BLOB to VARBINARY(MAX)
 CLOB to VARCHAR(MAX)
 CLOB to TEXT
 CLOB to NTEXT
Microsoft recommends that you utilize the default data type mappings.
ntext, text, and image data types will be removed in a future version of Microsoft SQL Server.
Avoid using these data types in new development work, and plan to modify applications that
currently use them. Use nvarchar(max), varchar(max), and varbinary(max) instead.
Fixed and variable-length data types for storing large non-Unicode and Unicode character and
binary data. Unicode data uses the UNICODE UCS-2 character set.
For more information on ntext, text, and image data types in the SQL Server Transact-SQL reference, see
http://msdn.microsoft.com/en-us/library/ms187993(v=sql.105).aspx.
Error Code Mapping
The DRDA Service converts SQL Server error codes and messages to instances of a DRDA reply message
or a DB2 SQLCA (Communications Area) based on a defined set of mappings stored in an
MsDrdaErrorMappings.xml file in the %SNAROOT%\system directory. The in-bound SQL Server error
code is mapped to the out-bound DB2 error code. The XML document contains a set standard format, as
documented in the associated HostIntegrationDrdaSqlErrorMappings.xsd schema file.
<SqlErrorMappings>
<sqlErrorMapping
msSqlMessageId="201"
msSqlMessageSeverityLevel="16"
msSqlMessageText="Procedure or function '{0}' expects parameter '{1}',
which was not supplied."
drdaSqlCode="-313"
drdaSqlState="07001"
Service for DRDA
Microsoft Corporation
Page 110
drdaReasonCode=""
drdaMessageText="THE NUMBER OF HOST VARIABLES SPECIFIED IS NOT EQUAL TO
THE NUMBER OF PARAMETER MARKERS."
drdaExplanationText="The server cannot execute a SQL statement that
contains an incorrect parameter list."
drdaActionText="Verify the number and type of parameters."/>
Example. SQL Server error message mapped to DB2 error message.
Item
sqlErrorMappings
Type
element
Description
The sqlErrorMappings element contains sqlErrorMapping
definition elements.
sqlErrorMapping
element
The sqlErrorMapping element contains the definition of a
SQL Server error message mapped to a DRDA reply message.
Table 34. Microsoft SQL Server error messages.
Item
msSqlMessageId
Type
integer
Description
The msSqlMessageId attribute represents the identifier (ID)
of the message and is a unique value across the server. This
required attribute accepts an integer value.
msSqlMessageSeverityLevel integer
The msSqlMessageSeverityLevel attribute represents the
severity level of the message, between 1 and 25. This
required attribute accepts an integer value.
msSqlMessageText
string(1024) The msSqlMessageText attribute represents the message
text. This required attribute accepts a string value.
Table 35. Microsoft SQL Server error messages.
Item
drdaSqlCode
Type
integer
drdaSqlState
integer
drdaReasonCode
hex binary
drdaMessageText
string
drdaExplanationText
string
drdaActionText
string
Description
The drdaSqlCode attribute denotes the IBM DB2 SQLCODE.
This required attribute accepts an integer value.
The drdaSqlState attribute denotes the IBM DB2 SQLSTATE.
This required attribute accepts an integer value.
The drdaReasonCode attribute denotes the IBM DB2 reason
code. This optional attribute accepts a hex binary value. The
default value is 0.
The drdaMessageText attribute denotes the IBM DB2
message text. This required attribute accepts a string value.
The drdaExplanationText attribute denotes the IBM DB2
explanation text. This optional attribute accepts a string
value.
The drdaActionText attribute denotes the IBM DB2 action
text. This optional attribute accepts a string value.
Table 36. IBM DB2 error messages.
Service for DRDA
Microsoft Corporation
Page 111
Development - Programmer’s Reference
Locale Encoding
The DRDA Service supports locale-specific string encodings.
EBCDIC
The DRDA Service supports the below-listed SBCS (Single Byte Character Set) EBCDIC CCSIDs converted
to and from UNICODE 1208.
Name
EBCDIC - Arabic
EBCDIC - Cyrillic (Russian)
EBCDIC - Cyrillic (Serbian, Bulgarian)
EBCDIC - Denmark/ Norway (Euro)
EBCDIC - Denmark/ Norway
EBCDIC - Finland/ Sweden (Euro)
EBCDIC - Finland/ Sweden
EBCDIC - France (Euro)
EBCDIC - France
EBCDIC - Germany (Euro)
EBCDIC - Germany
EBCDIC - Greek (Modern)
EBCDIC - Greek
EBCDIC - Hebrew
EBCDIC - Icelandic (Euro)
EBCDIC - Icelandic
EBCDIC - International (Euro)
EBCDIC - International
EBCDIC - Italy (Euro)
EBCDIC - Italy
EBCDIC - Latin America/Spain (Euro)
EBCDIC - Latin America/Spain
EBCDIC - Multilingual/ ROECE (Latin-2)
EBCDIC - Thai
EBCDIC - Turkish (Latin-3)
EBCDIC - Turkish (Latin-5)
EBCDIC - U.S./ Canada (Euro)
EBCDIC - U.S./ Canada
EBCDIC - United Kingdom (Euro)
EBCDIC - United Kingdom
Table 37. Supported EBCDIC CCSIDs.
CCSID
420
880
1025
277
277
278
278
297
297
273
273
875
423
424
871
871
500
500
280
280
284
284
870
838
905
1026
37
37
285
285
NLS Code Page
20420
20880
21025
1142
20277
1143
20278
1147
20297
1141
20273
875
20423
20424
1149
20871
1148
500
1144
20280
1145
20284
870
20838
20905
1026
1140
37
1146
20285
Distributed Relational Database Architecture
The DRDA Service supports DRDA Version 5.
Service for DRDA
Microsoft Corporation
Page 112
Figure 11. DRDA Managers.
DRDA Manager Levels
The DRDA Service supports the below-listed DRDA Manager Levels.
Manager
Min Max Description
AGENT
3
7
Agent Manager represents application requester
CMNAPPC
NA
NA
SNA APPC LU6.2 conversational communications manager
CMNSYNCPT 4
4
SNA APPC LU6.2 conversational sync point communications manager
CMNTCPIP
5
8
TCP/IP communications manager
RDB
3
8
Relational database
RSYNCMGR
5
5
Resynchronization manager
SECMGR
5
8
Security manager
SQLAM
3
8
SQL application manager
SYNCPTMGR 5
7
Sync point manager
XAMGR
NA
NA
XA manager
Table 38. Supported DRDA Manager Levels.
PowerShell Module
Windows PowerShell® is a task-based command-line shell and scripting language designed especially for
system administration. Built on the .NET Framework, Windows PowerShell helps IT professionals and
power users control and automate the administration of the Windows operating system and
applications that run on Windows. The DRDA Service offers PowerShell commands as part of a common
HIS 2013 PowerShell module, Microsoft.HostIntegration.PowerShell, including a number of Cmdlet
commands to add/get/remove/set MsDrdaService.exe.config elements and attributes, as well as
commands to start/stop listeners.
Service for DRDA
Microsoft Corporation
Page 113
PowerShell Cmdlets
A PowerShell cmdlet is a lightweight command that is used in the Windows PowerShell environment.
The Windows PowerShell runtime invokes these cmdlets within the context of automation scripts that
are provided at the command line. The Windows PowerShell runtime also invokes them
programmatically through Windows PowerShell APIs.
The public properties that define the parameters that are available to the user or to the application that
is running the cmdlet. Cmdlets can have required, named, positional, and switch parameters. A switch
parameter is a parameter that may, or may not, be specified when the command is run. If the parameter
is specified, the Windows PowerShell runtime resolves its value as true. If the parameter is not specified,
which is typically the default, the parameter value is resolved as false. The common parameters are
added to all cmdlets and can be accessed whenever the cmdlet is run.
DRDA Service PowerShell Module Cmdlets Commands
The DRDA Service configuration is stored in the MsDrdaService.exe.config application configuration (app
config) file, and associated XML files (error message mapping and data type mapping). At runtime, the
DRDA Service will monitor the MsDrdaService.exe.config file for changes. When detected, the DRDA
Service will read and utilize the changed configuration information when processing new in-bound
connections. The DRDA Service includes a
%SNAROOT%\System\Schemas\HostIntegrationDrdaServiceConfiguration.xsd file to validate the
application configuration file.
IT professionals can customize the DRDA Service configuration by using the DRDA Service PowerShell
module Microsoft.HostIntegration.PowerShell. The cmdlets are grouped into configuration and
operation collections.
Prerequisite software
The DRDA Service PowerShell module requires the following software products as feature prerequisites.

Microsoft PowerShell 3.0 (Windows Management Framework 3.0)
o
http://www.microsoft.com/en-us/download/details.aspx?id=34595
Start PowerShell
Start PowerShell with Administrator permissions by running one of these commands.




From the Start screen, right-click the Windows PowerShell app tile, and in the app bar, click Run
as administrator.
In Server Manager or the Desktop on the taskbar, right-click the Windows PowerShell shortcut
and then click Run as Administrator.
On the Desktop, move the cursor to the upper right corner, click Search, type PowerShell, rightclick the Windows PowerShell app tile, and in the app bar, click Run as administrator.
At the Windows PowerShell command prompt, type:
Start-Process PowerShell -Verb RunAs
Start PowerShell ISE
Service for DRDA
Microsoft Corporation
Page 114
Start PowerShell ISE (Integrated Scripting Environment) with Administrator permission by running one of
these commands.




From the Start screen, type ISE, right-click Windows PowerShell ISE tile, and in the app bar, click
Run as administrator.
On the taskbar, right-click Windows PowerShell and then click Run ISE as administrator.
From the Server Manager Tools menu, select Windows PowerShell ISE.
At the Windows PowerShell command prompt, type:
Start-Process PowerShell_ISE -Verb RunAs
Set Module Path
The DRDA Service PowerShell module must be in the module path. When installing the DRDA Service
using the standalone MsDrdaService.MSI, you must manually set the module path using PowerShell or
PowerShell ISE.
1. At the Windows PowerShell or PowerShell ISE command prompt, type the following command,
and then click Enter.
$CurrentValue = [Environment]::GetEnvironmentVariable("PSModulePath", "Machine")
[Environment]::SetEnvironmentVariable("PSModulePath", $CurrentValue + ";C:\Program
Files\Microsoft Host Integration Server 2013\system\ Microsoft.HostIntegration.PowerShell\
Microsoft.HostIntegration.PowerShell", "Machine")
2. Type the following Get-Module command, and then click Enter.
Get-Module Microsoft.HostIntegration.PowerShell
3. Verify the following information.
ModuleType: Binary
Version: 9.0.1000.0
Name: Microsoft.HostIntegration.PowerShell
ExportedCommands: {Add-DrdaApplicationEncoding, Remove-DrdaApplicationEncoding, GetDrdaApplicationEncoding, Add-DrdaCollationName...}
Get Module Commands
1. At the Windows PowerShell or PowerShell ISE command prompt, type the following command,
and then click Enter.
Get-Command - Microsoft.HostIntegration.PowerShell
2. Verify the following information.
Add-HisCharacterConversion
Add-HisCodePage
Add-HisDrdaApplicationEncoding
Add-HisDrdaCollationName
Add-HisDrdaDatabaseAlias
AddAdd-HisDrdaDatetimeFormat
Service for DRDA
Microsoft Corporation
Page 115
Add-HisDrdaPackageBindListener
Add-HisCustomCodePage
Add-HisCustomConversion
Get-DrdaApplicationEncoding
Get-DrdaCollationName
Get-DrdaDatabaseAlias
Get-DrdaDatetimeFormat
Get-DrdaPackageBindListener
Get-DrdaPackageBindProcessing
Get-DrdaPackageProcedureCache
Get-DrdaService
Get-DrdaSqlServerConnection
Get-DrdaSqlTransform
Get-DrdaTraceListener
Get-HisCustomCodePage
Get-HisCustomConversion
Remove-DrdaApplicationEncoding
Remove-DrdaCollationName
Remove-DrdaDatabaseAlias
Remove-DrdaDatetimeFormat
Remove-DrdaPackageBindListener
Remove-HisCustomCodePage
Remove-HisCustomConversion
Set-DrdaConsoleTraceListener
Set-DrdaEtwTraceListener
Set-DrdaEventLogTraceListener
Set-DrdaPackageBindProcessing
Set-DrdaPackageProcedureCache
Set-DrdaService
Set-DrdaSqlServerConnection
Set-DrdaSqlTransform
Set-DrdaTextTraceListener
Start-DrdaTraceListener
Stop-DrdaTraceListener
DRDA Service Connectivity and Package Bind Processing
DRDA Service connectivity and package binding comprises: (1) DRDA Client-to-DRDA Service
connections, (2) DRDA Service-to-SQL Server connections, (3) DRDA Service-to-DRDA Service
connections, and (4) DRDA Service package bind processing (including SQL syntax transformations).
Set-DrdaService
This Set-DrdaService cmdlet configures the DRDA Service for in-bound DRDA Client connections.
Syntax
Set-DrdaService [-PartnerServers <string>] [-Port <uint32>] [-IsPrimary ] [-UseSsl ] [-PingInterval
<uint32>] [-EnablePerformanceCounters ] [-AllowClientIpAddresses <string>] [-SslCertificatePath
<string>] [<CommonParameters>]
Service for DRDA
Microsoft Corporation
Page 116
Parameters
The AllowClientIpAddresses parameter restricts the DRDA Service to accepting in-bound TCP/IP
network connections from a list of known DRDA AR client computers. This optional parameter accepts a
string value. The default value is an empty string, which allows the DRDA Service to respond to all inbound client connection requests. The list is comprised of a TCP/IP address or alias semi-colon
delimited. The TCP/IP address can be defined in either IPv4 or IPv6 format. For example, 123.34.45.57;
123.34.45.58 defines a valid client list in IPv4 network address format.
The EnablePeformanceCounters parameter instructs the DRDA Service to collect information into
performance counters. This optional parameter accepts a Boolean value. The default value is false.
The IsPrimary parameter instructs the DRDA Service whether to operate in a primary role within a group
of servers. This optional parameter accepts a Boolean value. The default value is true. The primary
server will respond to all DRDA AR client requests by processing EXCSAT (Exchange Server Attributes),
ACCSEC (Access Security) and ACCRDB (Access Relational Database), including returning a SRVLST
(Server List) on the ACCRDBRM (ACCRDB Reply Message). The Server List contains a weighted priority
list of primary (highest weighted value) and secondary servers (lowest weighted values), to inform the
DRDA AR clients to which DRDA Service computer to connect.
The PartnerServers parameter defines the list of secondary server computers. This optional parameter
is required when isPrimary=false, and accepts a string value. The default value is an empty string. The
list is comprised of a TCP/IP address or alias colon-separated by a TCP/IP port number. The TCP/IP
address can be defined in either IPv4 or IPv6 format. The list can contain multiple partner server
computers semi-colon delimited. For example, 123.34.45.57:446; 123.34.45.58:446 defines a valid
partner server list in IPv4 network address format.
The PingInterval parameter instructs the DRDA Service how frequently to monitor the health of partner
server computers, by executing an EXCSAT (Exchange Server Attribute) flow and checking for an
EXCSATRD (EXCSAT Reply Data). This optional parameter accepts an integer value. The default value is
10000 milliseconds (10 seconds).
The Port parameter defines the TCP/IP Port number on which the DRDA Service must listen for in-bound
DRDA Application Requester client connection requests. This optional parameter accepts an integer
value. The default value is 446.
The SslCertificatePath parameter specifies the SSL or TLS certificate Common Name (CN). This optional
parameter is required when useSSL=true, and accepts a string value. The default value is an empty
string.
The UseSSL parameter instructs the DRDA Service to use Secure Sockets Layer (SSL) Version 3.0 and
Transport Layer Security (TLS) Version 1.0 when responding to in-bound TCP/IP network connections.
This optional parameter accepts a Boolean value. The default value is false.
Get-DrdaService
This Get-DrdaService cmdlet gets the DRDA Service configuration settings for in-bound DRDA Client
connections.
Service for DRDA
Microsoft Corporation
Page 117
Syntax
Get-DrdaService [<CommonParameters>]
Parameters
None.
Outputs
This Get-DrdaService cmdlet returns an object with properties: AllowClientIpAddresses (string);
IsPrimary (Boolean); PartnerServers (string); EnablePerformanceCounters (Boolean); PingInterval
(integer); Port (integer); SslCertificatePath (string); and UseSsl (Boolean).
Set-DrdaSqlServerConnection
This Set-DrdaSqlServerConnection cmdlet configures the DRDA Service for out-bound SQL Server
connections.
Syntax
Set-DrdaSqlServerConnection [-MappedAuthenticationDomain <string>] [AuthenticationLookupTimeoutDuration <string>] [-AuthenticationLookupRetryCount <uint32>] [SecurityTokenTimeoutDuration <string>] [-RollbackTransactionOnError ] [-ClientApplicationName
<ClientApplicationName>] [-DefaultCollationName <string>] [-ConnectionString <string>] [StoredProcedureCallTimeout <uint32>] [-HostInitiatedAffiliateApplication <string>] [WindowsInitiatedAffiliateApplication <string>] [-EnableArithAbort ] [<CommonParameters>]
Parameters
The AuthenticationLookupRetryCount parameter instructs the DRDA Service the number of times to
attempt a security authentication lookup request before failing. This optional parameter accepts an
integer value. The default value is 3 retries.
The AuthenticationLookupTimeoutDuration parameter instructs the DRDA Service the duration of time
to wait for a security authentication lookup request before failing. This optional parameter accepts a
string value representing an XML duration value. The default value is PT30S (Period of Time is 30
seconds). The duration value is specified in the form PnYnMnDTnHnMnS. For more information and
description of values, see Data Integration (Deployment), DRDA Service, Configuring SQL Server
Connections.
The ClientApplicationName parameter instructs the DRDA Service how to set the SQL Client Application
Name connection property. This optional parameter accepts an enumerated string value. The default
value is empty. Specify externalName to instruct the DRDA Service to use bytes 1-8 of the DRDA
External Name (EXTNAM) representing the name of the job, task or process of the DRDA AR client
program. Specify transactionIdentifier to instruct the DRDA Service to use bytes 5-8 of the EXTNAM
Service for DRDA
Microsoft Corporation
Page 118
representing the name of the transaction identifier of the DRDA AR client program when running in CICS
for z/OS.
The ConnectionString parameter defines the list of argument name and value pairs for use by the DRDA
Service in defining a Microsoft ADO.NET Framework Data Provider for SQL Server connection object.
This required parameter accepts a string value. The default value is Data Source=;Integrated
Security=True;MultipleActiveResultSets=True. For more information, see Data Integration
(Deployment), DRDA Service, Configuring SQL Server Connections.
The DefaultCollationName parameter instructs the DRDA Service to add a SQL Server COLLATE
(collation_name) clause, when transforming a DB2 SELECT statement with ORDER BY clause into a SQL
Server SELECT statement with ORDER BY clause. This optional parameter accepts a string value. The
default value is SQL_Latin1_General_CP1_CI_AS. For more information and description of values, see
Data Integration (Deployment), DRDA Service, Configuring Collation Mapping.
The EnableArithAbort parameter instructs the DRDA Service to issue the SET ARITHABORT statement at
connection time, to request SQL Server to terminate a query when an overflow or divide-by-zero error
occurs during query execution. This optional parameter accepts a Boolean value. The default is false.
The HostInitiatedAffiliateApplication parameter defines the Affiliate Application name that the DRDA
Service should use with Microsoft Enterprise Single Sign-On to map the in-bound DRDA AR client
credentials to a Windows Active Directory domain user, when the SQL Client uses Windows
Authentication. This optional parameter accepts a string value. The default value is an empty string,
which instructs the DRDA Service to not use host-initiated ESSO. When using host-initiated ESSO, you
must specify Integrated Security=true in the SQL Server connection string.
The MappedAuthenticationDomain parameter instructs the DRDA Service to which Microsoft Windows
Active Directory domain to map the in-bound DRDA client credentials (user name and password), when
connecting to SQL Server configured for Windows authentication using integrated Security Support
Provider Interface (SSPI), but not when using Microsoft Enterprise Single Sign-On. This optional
parameter accepts a string value. The default value is an empty string.
The RollbackTransactionOnError parameter instructs the DRDA Service to execute a ROLLBACK
following a negative SQL Server database error. This optional parameter accepts a Boolean value. The
default value is true.
The SecurityTokenTimeout parameter instructs the DRDA Service to retain a security token for a
duration of time, after which to obtain a new Windows Client Identifier (CID). This optional parameter
accepts a duration value. The default value is PT8H (Period of Time is 8 hours). The duration value is
specified in the form PnYnMnDTnHnMnS. For more information and description of values, see Data
Integration (Deployment), DRDA Service, Configuring SQL Server Connections.
The WindowsInitiatedAffiliateApplication parameter defines the Affiliate Application name that the
DRDA Service should use with Microsoft Enterprise Single Sign-On to map the Windows Active Directory
domain user to an out-bound SQL Client credentials, when the SQL Client uses SQL Server
Authentication. This optional parameter accepts a string value. The default value is an empty string,
which instructs the DRDA Service to not use Windows-initiated ESSO. When using Windows-initiated
ESSO, you must specify Integrated Security=false in the SQL Server connection string.
Service for DRDA
Microsoft Corporation
Page 119
The StoredProcedureCallTimeout parameter instructs the DRDA Service the length of time (in seconds)
to wait for SQL Server to process a CALL statement to execute a stored procedure, before terminating
the attempt and generating an error. This optional parameter accepts an integer value. Valid values are
greater than or equal to 0 and less than or equal to 2147483647. A value of 0 indicates no limit (an
attempt to execute a command will wait indefinitely). The default value is 30 seconds.
Get-DrdaSqlServerConnection
This Get-DrdaSqlServerConnection cmdlet gets the DRDA Service configuration settings for out-bound
SQL Server connections.
Syntax
Get-DrdaSqlServerConnection [<CommonParameters>]
Parameters
None.
Outputs
This Get-DrdaSqlServerConnection cmdlet returns an object with properties: ArithAbort (Boolean);
AuthenticationLookupTimeout (string); AuthenticationLookupRetryCount (integer);
ClientApplicationName (string); ConnectionString (string); DefaultCollationName (string);
HostInitiatedAffiliateApplication (string); MappedAuthenticationDomain (string);
RollbackTransactionOnError (Boolean); SecurityTokenTimeoutSeconds (string);
StoredProcedureCallTimeoutSeconds (integer); and WindowsInitiatedAffiliateApplication (string).
Set-DrdaPackageBindProcessing
This Set-DrdaPackageBindProcessing cmdlet configures the DRDA Service for processing DRDA static SQL
packages into SQL Server stored procedures.
Syntax
Set-DrdaPackageBindProcessing [-CreatePackageProcedureWithCustomSqlScripts ] [PackageProcedureSchemaList <string>] [-CreatePackageProcedure ] [-CreatePackageXml ] [PackageXmlFormat <PackageXmlFormat>] [-PackageXmlLocation <string>] [StoredProcedureNameSeparator <string>] [-CreatePackageProcedureWithExtendedProperties ]
[<CommonParameters>]
Parameters
The CreatePackageProcedure parameter instructs the DRDA Service to process a single BGNBND flow
into a SQL Server stored procedure, transforming the original statements as defined by the DRDA
BNDSQLSTT flows into corresponding SQL Server syntax. This optional parameter accepts a Boolean
value. The default value is true.
Service for DRDA
Microsoft Corporation
Page 120
The CreatePackageProcedureWithCustomSqlScripts parameter instructs the DRDA Service to process
DRDA BGNBND and BNDSQLSTT through an external custom package bind listener component. This
optional parameter accepts a Boolean value. The default value is false.
The CreatePackageProcedureWithExtendedProperties parameter instructs the DRDA Service to
preserve the BGNBND package bind options as extended properties on the SQL Server stored procedure.
This optional parameter accepts a Boolean value. The default value is false.
The CreatePackageXml parameter instructs the DRDA Service to process a single BGNBND flow into a
static SQL for DB2 package XML file, preserving the original bind options and statements as defined by
the DRDA BNDSQLSTT flows. This optional parameter accepts a Boolean value. The default value is
false.
The PackageProcedureSchemaList instructs the DRDA Service to locate the target SQL Server stored
procedure in alternative schemas. This optional parameter accepts a string value. The default value is an
empty string. The string is comprised of a comma-separated SQL Server schema names. The
packageProcedureSchemaList parameter is similar to the IBM DB2 for z/OS CURRENT PACKAGESET
special register and SET CURRENT PACKAGESET statement.
The PackageXmlFormat parameter instructs the DRDA Service to write the static SQL for DB2 XML file in
the either v90 or v85 format. This optional parameter accepts an enumerated string value of either v85
or v90. The default value is v90.
The PackageXmlLocation parameter instructs the DRDA Service where to write the static SQL for DB2
package XML file. This optional parameter accepts a string value. The default value is c:\temp.
The StoredProcedureNameSeparator parameter instructs the DRDA Service what separator character to
use when mapping a DRDA package name to a SQL Server stored procedure name. This optional
parameter accepts a string value. The default value is a single underscore character (_).
Get-DrdaPackageBindProcessing
This Get-DrdaPackageBindProcessing cmdlet gets the DRDA Service configuration settings for processing
DRDA static SQL packages into SQL Server stored procedures.
Syntax
Get-DrdaPackageBindProcessing [<CommonParameters>]
Parameters
None.
Outputs
This Get-DrdaPackageBindProcessing cmdlet returns an object with properties: CreatePackageProcedure
(Boolean); CreatePackageXml (Boolean); PackageXmlFormat (string); PackageXmlLocation (string);
StoredProcedureNameSeparator (string); CreatePackageProcedureWithExtendedProperties (Boolean);
CreatePackageProcedureWithCustomSqlScripts (Boolean); and PackageProcedureSchemaList (string).
Service for DRDA
Microsoft Corporation
Page 121
Set-DrdaPackageProcedureCache
This Set-DrdaPackageProcedureCache cmdlet configures the DRDA Service for caching metadata for the
SQL Server stored procedure with which to verify the statement type, cursor type, parameter data
types, and other attributes.
Syntax
Set-DrdaPackageProcedureCache -FlushTimeSpan <string> [<CommonParameters>]
Parameters
The FlushTimeSpan parameter instructs the DRDA Service to flush the package procedure cache after a
specified interval of time. This optional parameter accepts a string value representing an XML duration
value. The default value is P1D (Period of Time is 1 Day). The duration value is specified in the form
PnYnMnDTnHnMnS. For more information and description of values, see Data Integration
(Deployment), DRDA Service, Configuring Package Bind Processing.
Get-DrdaPackageProcedureCache
This Get-DrdaPackageProcedureCache cmdlet gets the DRDA Service configuration settings for caching
metadata for the SQL Server stored procedure with which to verify the statement type, cursor type,
parameter data types, and other attributes.
Syntax
Get-DrdaPackageProcedureCache [<CommonParameters>]
Parameters
None.
Outputs
This Get-DrdaPackageProcedureCache cmdlet returns an object with property: FlushTimeSpan (string).
Set-DrdaSqlTransform
This Set-DrdaSqlTransform cmdlet configures the DRDA Service for using internal or external CLR-based
SQL transforms to convert DB2 function syntax into SQL Server T-SQL function syntax.
Syntax
Set-DrdaSqlTransform [-EnableUnicodeOutput] [-Type <SqlTransforms>] [<CommonParameters>]
Parameters
Service for DRDA
Microsoft Corporation
Page 122
The EnableUnicodeOutput parameter instructs the DRDA Service to encode output from the CLR-based
SQL transformer in Unicode or ANSI. This optional parameter accepts a Boolean value. The default value
is false, which instructs the DRDA Service to output ANSI CHAR and VARCHAR strings.
The SqlTransforms parameter instructs the DRDA Service to utilize internal service or external CLRbased SQL transforms. This optional parameter accepts a SqlTransforms value of Service or Clr. The
default value is Service.
Get-DrdaSqlTransform
This Get-DrdaSqlTransform cmdlet gets the DRDA Service configuration settings for using internal or
external CLR-based SQL transforms to convert DB2 function syntax into SQL Server T-SQL function
syntax.
Syntax
Get-DrdaSqlTransforms [<CommonParameters>]
Parameters
None.
Outputs
This Get-DrdaSqlTransforms cmdlet returns an object with properties: Type (SqlTransforms); and
EnableUnicodeOutput (Boolean).
Database Alias Mapping
IBM DB2 and Microsoft SQL Server databases utilize different terminology for naming objects, as can be
seen in the following table defining the fully-qualified three-part object identifier for a table. The DRDA
Service can map DB2 catalog and schema names to SQL Server catalog and schema names. For more
information, see Configuring Database Alias Mappings.
Add-DrdaDatabaseAlias
This Add-DrdaDatabaseAlias cmdlet configures the DRDA Service for mapping in-bound catalog and
schema names to outbound catalog and schema names, for use when executing static SQL packages for
DB2 commands mapped to SQL Server stored procedures.
Syntax
Add-DrdaDatabaseAlias -SourceLocation <string> -SourceCollection <string> -TargetDatabase <string> TargetSchema <string> [<CommonParameters>]
Parameters
The SourceLocation parameter defines an in-bound DRDA RDBNAM (Relational Database Name) that
the DRDA Service should use when mapping to an out-bound SQL Server database name. This optional
parameter accepts a string value. The default value is an empty string, which denotes any value.
Service for DRDA
Microsoft Corporation
Page 123
The SourceCollection parameter defines an in-bound DRDA COLID (Collection Identifier) that the DRDA
Service should use when mapping to an out-bound SQL Server schema name. This optional parameter
accepts a string value. The default value is an empty string, which denotes any value.
The TargetDatabase parameter defines an out-bound SQL Server database name that the DRDA Service
should use when mapping from an in-bound DRDA RDBNAM value. This optional parameter accepts a
string value. The default value is an empty string, which denotes any value.
The TargetSchema parameter defines an out-bound SQL Server schema name that the DRDA Service
should use when mapping from an in-bound DRDA COLID value. This optional parameter accepts a
string value. The default value is an empty string, which denotes any value.
Get-DrdaDatabaseAlias
This Get-DrdaDatabaseAlias cmdlet gets the DRDA Service configuration settings for mapping in-bound
catalog and schema names to outbound catalog and schema names, for use when executing static SQL
packages for DB2 commands mapped to SQL Server stored procedures.
Syntax
Get-DrdaDatabaseAlias [<CommonParameters>]
Parameters
None.
Outputs
This Get-DrdaDatabaseAlias cmdlet returns an object with collection of properties: SourceLocation
(string); SourceCollection (string); TargetDatabase (string); and TargetSchema (string).
DRDA Service Date Time Conversions
DRDA Service will format string literal date time values from source and into target formats when
processing dynamic and static SQL statements, for specific date time and character data types.
Add-DrdaDatetimeFormat
This Add-DrdaDatetimeFormat cmdlet configures the DRDA Service for processing string literal date
values within DB2 and SQL Server DATE, CHAR (10), and VARCHAR (10) data types, to convert from DB2
date format to SQL Server date format, and to convert from SQL Server date format to DB2 date format.
The dateMasks contains one or more dateMask elements to define date mappings. The dateMask
element contains a db2ToSql or sqlToDb2 to indicate the direction, and a sourceFormat and a
targetFormat to specify the mapping. For more information and description of values, see Data
Integration (Deployment), DRDA Service, Configuring Date Time Conversions.
Syntax
Add-DrdaDatetimeFormat -Conversion <Conversion> -DateFormat <DateFormats>
[<CommonParameters>]
Service for DRDA
Microsoft Corporation
Page 124
Add-DrdaDatetimeFormat -Conversion <Conversion> -TimeFormat <TimeFormats>
[<CommonParameters>]
Add-DrdaDatetimeFormat -Conversion <Conversion> -DateTimeFormat <DateTimeFormats>
[<CommonParameters>]
Parameters
The Conversion parameter defines the direction either DB2-to-SQL or SQL-to-DB2. This required
parameter accepts an enumerated Conversion value. Specify Db2toSql to instruct the DRDA Service to
read to convert the in-bound DateTime format. Specify SqlToDb2 to instruct the DRDA Service to write
to convert the out-bound DateTime format.
The DateFormat parameter defines the format type. This required parameter accepts an enumerated
DateFormat value.
The TimeFormat parameter defines the format type. This required parameter accepts an enumerated
TimeFormat value.
The DateTimeFormat parameter defines the format type. This required parameter accepts an
enumerated DateTimeFormat value.
For more information and description of values, see Data Integration (Deployment), DRDA Service,
Configuring Date Time Conversions.
Get-DrdaDatetimeFormat
This Get-DrdaDatetimeFormat cmdlet gets the DRDA Service configuration settings for processing string
literal date values within DB2 and SQL Server DATE, CHAR (10), and VARCHAR (10) data types, to convert
from DB2 date format to SQL Server date format, and to convert from SQL Server date format to DB2
date format.
Syntax
Get-DrdaDatetimeFormat -DateTime <DateTime> [<CommonParameters>]
Parameters
The DateTime parameter instructs the DRDA Service to return a configured format conversion. This
required parameter accepts an enumerated DateTime value. There is no default value. Specify Date to
instruct the DRDA Service to return the configured Date format conversion. Specify Time to instruct the
DRDA Service to return the configured Time format conversion. Specify DateTime to instruct the DRDA
Service to return the configured DateTime format conversion.
Outputs
This Get-DrdaDatetimeFormat cmdlet returns an object with collection of properties: Db2ToSql (string);
and SqlToDb2 (string).
Service for DRDA
Microsoft Corporation
Page 125
Remove-DrdaDatetimeFormat
This Remove-DrdaDatetimeFormat cmdlet removes one or more DRDA Service configuration settings for
processing string literal date values within DB2 and SQL Server DATE, CHAR (10), and VARCHAR (10) data
types, to convert from DB2 date format to SQL Server date format, and to convert from SQL Server date
format to DB2 date format.
Syntax
Remove-DrdaDatetimeFormat -DateTime <DateTime> -Conversion <Conversion> -Format <string>
[<CommonParameters>]
Parameters
The DateTime parameter instructs the DRDA Service to remove a configured format conversion. This
required parameter accepts an enumerated DateTime value. There is no default value. Specify Date to
instruct the DRDA Service to remove the configured Date format conversion. Specify Time to instruct the
DRDA Service to remove the configured Time format conversion. Specify DateTime to instruct the DRDA
Service to remove the configured DateTime format conversion.
The Conversion parameter defines the direction either DB2-to-SQL or SQL-to-DB2. This required
parameter accepts an enumerated Conversion value. Specify Db2toSql to instruct the DRDA Service to
read to convert the in-bound DateTime format. Specify SqlToDb2 to instruct the DRDA Service to write
to convert the out-bound DateTime format.
The Format parameter defines the format type. This required parameter accepts an enumerated
DateFormat, TimeFormat, or DateTimeFormat value.
DRDA Service Encodings
DRDA Service maps code pages and supports custom code page conversions using an underlying HIS
Encoder component and the Windows National Language Support (NLS) system components. Using
Microsoft Windows Update, you can install additional Windows language packs that include Windows
NLS code page conversion libraries. Optionally, the HIS Encoder can load a custom NLS code page based
on codePage elements defined within the codePages portion of the MsDrdaService.exe.config file. The
HIS Encoder can custom map code points within standard NLS and custom NLS code pages based on
ebcdicToUnicodeConversion elements defined within the codePages portion of the
MsDrdaService.exe.config file. For more information and description of values, see Configuring Service
Encodings.
Add-HisCustomCodePage
This Add-HisCustomCodePage cmdlet configures the DRDA Service to instruct the HIS Encoder
component to load a custom Windows National Language Support (NLS) system code page conversion
file.
Syntax
Service for DRDA
Microsoft Corporation
Page 126
Add-HisCustomCodePage -CodePage <uint32> -Name <string> -NlsCodePage <uint32> [-Description
<string>] [<CommonParameters>]
Parameters
The CodePage parameter instructs the HIS Encoder to load a numbered custom NLS code page file. This
required parameter accepts an integer. The default value is 0.
The Name parameter names the custom NLS code page that the HIS Encoder should load based on the
defined custom NLS code page number. This required parameter accepts a string. The default value is
an empty string.
The NlsCodePage parameter defines which standard NLS code page number that the HIS Encoder should
replace with the custom code page number. This required parameter accepts an integer. The default
value is 0.
The Description parameter describes the custom NLS code page that the HIS Encoder should load based
on the defined custom NLS code page number. This optional parameter accepts a string. The default
value is an empty string.
Get-HisCustomCodePage
This Get-HisCustomCodePage cmdlet gets the DRDA Service configuration settings for instructing the HIS
Encoder component to load a custom Windows National Language Support (NLS) system code page
conversion file.
Syntax
Get-HisCustomCodePage [-CodePage <uint32>] [-Name <string>] [-NlsCodePage <uint32>]
[<CommonParameters>]
Parameters
The CodePage parameter instructs the DRDA Service to get configuration settings using this numbered
custom NLS code page file. This optional parameter accepts an integer. The default value is 0.
The Name parameter instructs the DRDA Service to get configuration settings using this custom NLS
code page name. This optional parameter accepts a string. The default value is an empty string.
The NlsCodePage parameter instructs the DRDA Service to get configuration settings using this custom
code page number. This optional parameter accepts an integer. The default value is 0.
Outputs
This Get-HisCustomCodePage cmdlet returns an object with properties: Name (string); CodePage
(integer); NlsCodePage (integer); and Description (string).
Service for DRDA
Microsoft Corporation
Page 127
Remove-HisCustomCodePage
This Remove-HisCustomCodePage cmdlet removes the DRDA Service configuration settings for
instructing the HIS Encoder component to load a custom Windows National Language Support (NLS)
system code page conversion file.
Syntax
Remove-HisCustomCodePage [-Name] <string> [<CommonParameters>]
Parameters
The Name parameter instructs the DRDA Service to remove configuration settings using custom NLS
code page name. This required parameter accepts a string. The default value is an empty string.
Add-HisCustomConversion
This Add-HisCustomConversion cmdlet configures the DRDA Service to override code point mappings
within standard NLS and custom NLS code pages.
Syntax
Add-HisCustomConversion -CodePage <uint32> [-EbcdicToUnicode <string[]>] [-UnicodeToEbcdic
<string[]>] [<CommonParameters>]
Add-HisCustomConversion -Name <string> [-EbcdicToUnicode <string[]>] [-UnicodeToEbcdic <string[]>]
[<CommonParameters>]
Parameters
The CodePage parameter instructs the DRDA Service to add configuration settings using this numbered
NLS code page file. This required parameter accepts an integer. The default value is 0.
The Name parameter instructs the DRDA Service to add configuration settings using this custom NLS
code page name file. This required parameter accepts a string. The default value is an empty string.
The EbcdicToUnicode parameter instructs the HIS Encoder to convert from the specified EBCDIC code
point. This optional parameter accepts a string value, in the form of “To=From” where the “To” is
EBCDIC hex code point value and the “From” is the Unicode hex code point value. The default value is an
empty string.
The UnicodeToEbcdic parameter instructs the HIS Encoder to convert from the specified Unicode code
point. This optional parameter accepts a string value, in the form of “To=From” where the “To” is
Unicode hex code point value and the “From” is the EBCDIC hex code point value. The default value is an
empty string.
Get-HisChracterConversion
This Get-HisCustomConversion cmdlet gets the DRDA Service configuration settings for overriding code
point mappings within standard NLS and custom NLS code pages.
Service for DRDA
Microsoft Corporation
Page 128
Syntax
Get-HisCustomConversion -Type <ConversionType> {EbcdicToUnicode | UnicodeToEbcdic} -CodePage
<uint32> [<CommonParameters>]
Get-HisCustomConversion -Type <ConversionType> {EbcdicToUnicode | UnicodeToEbcdic} -Name
<string> [<CommonParameters>]
Parameters
The CodePage parameter instructs the DRDA Service to get configuration settings using this numbered
NLS code page file. This required parameter accepts an integer. The default value is 0.
The Name parameter instructs the DRDA Service to get configuration settings using this custom NLS
code page name file. This required parameter accepts a string. The default value is an empty string.
The Type parameter instructs the DRDA Service to get configuration settings using this numbered NLS
code page file or custom NLS code page name file. This required parameter accepts an enumerated
value of either EbcdicToUnicode or UnicodeToEbcdic.
Outputs
This Get-HisCustomConversion cmdlet returns an object with properties: From (hex); and To (hex).
Remove-HisCustomConversion
This Remove-HisCustomConversion cmdlet removes the DRDA Service configuration settings for
overriding code point mappings within standard NLS and custom NLS code pages.
Syntax
Remove-HisCustomConversion -CodePage <uint32> [-EbcdicToUnicode <string[]>] [-UnicodeToEbcdic
<string[]>] [<CommonParameters>]
Remove-HisCustomConversion -Name <string> [-EbcdicToUnicode <string[]>] [-UnicodeToEbcdic
<string[]>] [<CommonParameters>]
Parameters
The CodePage parameter instructs the DRDA Service to get configuration settings using this numbered
NLS code page file. This required parameter accepts an integer. The default value is 0.
The Name parameter instructs the DRDA Service to get configuration settings using this custom NLS
code page name file. This required parameter accepts a string. The default value is an empty string.
The EbcdicToUnicode parameter instructs the HIS Encoder to convert from the specified EBCDIC code
point. This optional parameter accepts a string value. The default value is an empty string.
The UnicodeToEbcdic parameter instructs the HIS Encoder to convert from the specified Unicode code
point. This optional parameter accepts a string value. The default value is an empty string.
Service for DRDA
Microsoft Corporation
Page 129
DRDA Service Application Encodings
DRDA Service converts base code pages and maps code points using an underlying HIS Encoder
component and the Windows National Language Support (NLS) system components. The
applicationEncodings element contains applicationEncoding elements for specifying default applicationlevel encoding schemes on a per-database basis. For more information and description of values, see
Configuring Application Encodings.
Add-DrdaApplicationEncoding
This Add-DrdaApplicationEncoding cmdlet configures the DRDA Service for default application-level
encoding schemes on a per-database basis, for use by the HIS Encoder component and Windows
National Language Support (NLS) system components in mapping code points within code pages. For
more information and description of values, see Configuring Application Encodings for more
information.
Syntax
Add-DrdaApplicationEncoding -Ccsid <uint32> -Database <string> [-Scheme <string>]
[<CommonParameters>]
Add-DrdaApplicationEncoding -Database <string> -CustomCcsid <uint32> [-Scheme <string>]
[<CommonParameters>]
Parameters
The Ccsid parameter instructs the DRDA Service to encode output parameter and result set values using
an override CCSID (Coded Character Set Identifier), and not the DRDA AR client-requested CCSID. This
required parameter accepts an integer. The default value is 1208.
The CustomCcsid parameter instructs the DRDA Service to encode output parameter and result set
values using an override custom CCSID (Coded Character Set Identifier), and not the DRDA AR clientrequested CCSID. This required parameter accepts an integer. The default value is -1.
The Database parameter instructs the DRDA Service to encode output parameter and result set values
using an override encoding scheme, and not the DRDA AR client-requested encoding scheme, for a
specified target SQL Server database only. This required parameter accepts a string value. The default
value is an empty string.
The Scheme parameter instructs the DRDA Service to encode output parameter and result set values
using an override encoding scheme, and not the DRDA AR client-requested encoding scheme. This
optional parameter accepts a string value. The supported values are Ebcdic, Unicode, and Ansi. The
default value is Unicode.
Get-DrdaApplicationEncoding
This Get-DrdaApplicationEncoding cmdlet gets the DRDA Service configuration settings for default
application-level encoding schemes on a per-database basis, for use by the HIS Encoder component and
Windows National Language Support (NLS) system components in mapping code points within code
pages.
Service for DRDA
Microsoft Corporation
Page 130
Syntax
Get-DrdaApplicationEncoding [-Ccsid <uint32>] [-Database <string>] [-CustomCcsid <uint32>]
[<CommonParameters>]
Parameters
The Ccsid parameter instructs the DRDA Service to get application encoding configuration using an
override CCSID (Coded Character Set Identifier). This optional parameter accepts an integer. The default
value is 1208.
The CustomCcsid parameter instructs the DRDA Service to get application encoding configuration using
a custom CCSID (Coded Character Set Identifier). This optional parameter accepts an integer. The
default value is -1.
The Database parameter instructs the DRDA Service to get application encoding configuration using a
specified target SQL Server database name. This optional parameter accepts a string value. The default
value is an empty string.
Outputs
This Get-DrdaApplicationEncoding cmdlet returns an object with properties: Scheme (string); Ccsid
(integer); Database (string); and CustomCcsid (integer).
Remove-DrdaApplicationEncoding
This Remove-DrdaApplicationEncoding cmdlet removes the DRDA Service configuration settings for
default application-level encoding schemes on a per-database basis, for use by the HIS Encoder
component and Windows National Language Support (NLS) system components in mapping code points
within code pages.
Syntax
Remove-DrdaApplicationEncoding -Ccsid <string[]> [-Database <string>] [<CommonParameters>]
Remove-DrdaApplicationEncoding -CustomCcsid <string[]> [-Database <string>]
[<CommonParameters>]
Parameters
The Ccsid parameter instructs the DRDA Service to remove application encoding configuration using an
override CCSID (Coded Character Set Identifier). This optional parameter accepts an integer. The default
value is 1208.
The CustomCcsid parameter instructs the DRDA Service to remove application encoding configuration
using a custom CCSID (Coded Character Set Identifier). This optional parameter accepts an integer. The
default value is -1.
Service for DRDA
Microsoft Corporation
Page 131
The Database parameter instructs the DRDA Service to remove application encoding configuration using
a specified target SQL Server database name. This optional parameter accepts a string value. The
default value is an empty string.
DRDA Service Collation Mapping
DRDA Service maps collation syntax to provide cross-platform compatibility of query results. For more
information and description of values, see Data Integration (Deployment), DRDA Service, Configuring
Collation Mapping.
Add-DrdaCollationName
This Add-DrdaCollationName cmdlet configures the DRDA Service for transforming a SELECT statement
from DB2 ORDER BY COLLATION_KEY (collation-name) syntax to SQL Server T-SQL ORDER BY COLLATE
(collation_name) syntax, mapping from a DB2 collation-name value to a SQL Server collation_name
value, to provide more compatible query results. For more information and description of values, see
Data Integration (Deployment), DRDA Service, Configuring Collation Mapping.
Syntax
Add-DrdaCollationName -To <string> -From <string> [<CommonParameters>]
Parameters
The To parameter instructs the DRDA Service SQL Transformer to convert to the specified
collation_name string within a SQL Server SELECT ORDER BY COLLATE clause. This required parameter
accepts a string value. There is no default value.
The From parameter instructs the DRDA Service SQL Transformer to convert from the specified
collation-name string within a DB2 SELECT ORDER BY COLLATION_KEY clause. This required parameter
accepts a string value. There is no default value.
Get-DrdaCollationName
This Get-DrdaCollationName cmdlet gets the DRDA Service configuration settings for transforming a
SELECT statement from DB2 ORDER BY COLLATION_KEY (collation-name) syntax to SQL Server T-SQL
ORDER BY COLLATE (collation_name) syntax, mapping from a DB2 collation-name value to a SQL Server
collation_name value, to provide more compatible query results.
Syntax
Get-DrdaCollationName [-To <string>] [-From <string>] [<CommonParameters>]
Parameters
The To parameter instructs the DRDA Service get collation name configuration using the specified
collation_name string. This required parameter accepts a string value. There is no default value.
Service for DRDA
Microsoft Corporation
Page 132
The From parameter instructs the DRDA Service get collation name configuration using the specified
collation-name string within a DB2 SELECT ORDER BY COLLATION_KEY clause. This required parameter
accepts a string value. There is no default value.
Outputs
This Get-DrdaCollationName cmdlet returns an object with properties: To (string); and From (string).
Remove-DrdaCollationName
This Remove-DrdaCollationName cmdlet removes the DRDA Service configuration settings to add a
COLLATE clause to an ORDER BY clause, based on a default ORDER BY collation name.
Syntax
Remove-DrdaCollationName -RemoveAll <bool> [-To <string>] [-From <string>] [<CommonParameters>]
Parameters
The To parameter instructs the DRDA Service remove collation name configuration using the specified
collation_name string. This required parameter accepts a string value. There is no default value.
The From parameter instructs the DRDA Service remove collation name configuration using the
specified collation-name string within a DB2 SELECT ORDER BY COLLATION_KEY clause. This required
parameter accepts a string value. There is no default value.
Configuring Trace Listeners
The DRDA Service supports multiple concurrent trace listeners, including: text trace listener, console
trace listener, custom trace listener, and Event Trace for Windows (ETW) trace listener. For more
information and description of values, see Data Integration (Deployment), DRDA Service, Configuring
Trace Listeners.
Set-DrdaConsoleTraceListener
The Set-DrdaConsoleTraceListener cmdlet configures the DRDA Service console trace listener to write
trace data to a command console window.
Syntax
Set-DrdaConsoleTraceListener -Level <uint32> [<CommonParameters>]
Parameters
The Level parameter instructs the DRDA Service to trace defined collections of information, from a
minimum to a maximum level of tracing. This required parameter accepts an integer value. The default
value is 0.
Value
0
Description
Output no tracing messages.
Service for DRDA
Microsoft Corporation
Page 133
Value
Description
1
Output error messages.
2
Output warning messages and error messages.
3
Output information messages, warning messages and error messages.
4
Output all messages.
Table 39. Trace Levels.
Set-DrdaEtwTraceListener
The Set-DrdaEtwTraceListener cmdlet configures the DRDA Service ETW (Event Tracing for Windows) as
an ETW provider to output trace data through an ETW session to a Windows operating system ETW
controller.
Syntax
Set-DrdaEtwTraceListener -Level <uint32> [<CommonParameters>]
Parameters
The Level parameter instructs the DRDA Service to trace defined collections of information, from a
minimum to a maximum level of tracing. This required parameter accepts an integer value. The default
value is 0.
Value
Description
0
Output no tracing messages.
1
Output error messages.
2
Output warning messages and error messages.
3
Output information messages, warning messages and error messages.
4
Output all messages.
Table 40. Trace Levels.
Set-DrdaEventLogTraceListener
The Set-DrdaEventLogTraceListener cmdlet configures the DRDA Service event log listener outputs log
data to the Windows event log.
Syntax
Set-DrdaEventLogTraceListener -InitializeData <string> [<CommonParameters>]
Parameters
The InitializeData parameter instructs the DRDA Service to log defined collections of information. This
required parameter accepts a string value. The default value is “Error,Warning,Information”, which
includes all event log levels.
Value
Error
Warning
Description
This value instructs the DRDA Service to log only the error level data.
This value instructs the DRDA Service to log only the warning level data.
Service for DRDA
Microsoft Corporation
Page 134
Value
Description
Information This value instructs the DRDA Service to log only the information level data
Table 41. Event Log Levels.
Set-DrdaTextTraceListener
The Set-DrdaTextTraceListener cmdlet configures the DRDA Service text trace listener to write trace
data to a disk file in text format.
Syntax
Set-DrdaTextTraceListener -Level <uint32> [-InitializeData <string>] [-AutoFlush <bool>] [MaxTraceEntryCount <uint32>] [-MaxTraceFileCount <uint32>] [<CommonParameters>]
Parameters
The Level parameter instructs the DRDA Service to trace defined collections of information, from a
minimum to a maximum level of tracing. This required parameter accepts an integer value. The default
value is 0.
Value
Description
0
Output no tracing messages.
1
Output error messages.
2
Output warning messages and error messages.
3
Output information messages, warning messages and error messages.
4
Output all messages.
Table x. Trace Levels.
The AutoFlush parameter instructs the DRDA Service to flush data automatically to the trace listener.
This required parameter accepts a Boolean value. The default is false.
Note: The DRDA Service can flush trace data automatically to the trace listeners, which ensures the
trace data is captured but will increase disk I/O and reduce overall system performance. To improve
performance, set AutoFlush=$False, to disable automatic trace flush.
The MaxTraceEntryCount parameter instructs the DRDA Service to trace up to a maximum number of
entries, and then to stop tracing. This required parameter accepts an integer. The default value is
1000000.
The MaxTraceFileCount parameter instructs the DRDA Service to write the text listener trace output a
maximum number of individual trace files, and then overwrite existing trace files. This required
parameter accepts an integer. The default value is 10.
Get-DrdaTraceListener
This Get-DrdaTextTraceListener cmdlet gets the DRDA Service configuration settings for text trace
listener to write trace data to a disk file in text format.
Syntax
Service for DRDA
Microsoft Corporation
Page 135
Get-DrdaTraceListener [-Listener] <TraceListenerType> [<CommonParameters>]
Parameters
The Listener parameter instructs the DRDA Service to get the configuration for the specified trace
listener type. This required parameter accepts a Listener value of Console, Text, Etw, or EventLog. There
is no default value.
Outputs
This Get-DrdaTraceListener cmdlet returns a collection of properties.
Start-DrdaTraceListener
This Start-DrdaTraceListener cmdlet instructs the DRDA Service to start the specified type of trace
listener.
Syntax
Start-DrdaTraceListener [-Listener] <TraceListenerType> [<CommonParameters>]
Parameters
The Listener parameter instructs the DRDA Service to start the specified trace listener type. This
required parameter accepts a Listener value of Console, Text, Etw, or EventLog. There is no default
value.
Stop-DrdaTraceListener
This Stop-DrdaTraceListener cmdlet instructs the DRDA Service to stop the specified type of trace
listener.
Syntax
Stop-DrdaTraceListener [-Listener] <TraceListenerType> [<CommonParameters>]
Parameters
The Listener parameter instructs the DRDA Service to stop the specified trace listener type. This
required parameter accepts a Listener value of Console, Text, Etw, or EventLog. There is no default
value.
DRDA Service Package Bind Listener
The DRDA Service supports custom package binders in the form of a .NET Framework custom listener.
Add-DrdaPackageBindListener
This Add-DrdaPackageBindListener cmdlet adds a DRDA Service configuration for sending bind package
with bind SQL statement output to an optional custom bind listener.
Service for DRDA
Microsoft Corporation
Page 136
Syntax
Add-DrdaPackageBindListener -TypeName <string> [-ThrowWhenNoCallback ] [<CommonParameters>]
Parameters
The TypeName parameter defines the type of the DRDA Service custom bind listener. This mandatory
parameter is accepts a string. There is no default value. The Type value for the custom package bind
listener sample is "CustomListeners.MyPackageBindListener, CustomListeners, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=34013cf74da51d17, processorArchitecture=MSIL".
The ThrowWhenNoCallback parameter instructs the DRDA Service to return BGNBNDRM (Begin Bind
Reply Message) to the DRDA AR client, when the custom bind listener component does not return any
information on the callback interface. This optional parameter accepts a Boolean value. The default
value is true.
Get-DrdaPackageBindListener
This Get-DrdaPackageBindListener cmdlet gets the DRDA Service configuration settings for sending bind
package with bind SQL statement output to an optional custom bind listener.
Syntax
Get-DrdaPackageBindListener [-Type <string>] [<CommonParameters>]
Parameters
The Type parameter defines the type of the DRDA Service custom bind listener. This mandatory
parameter is accepts a string. There is no default value. The Type value for the custom package bind
listener sample is "CustomListeners.MyPackageBindListener, CustomListeners, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=34013cf74da51d17, processorArchitecture=MSIL".
Remove-DrdaPackageBindListener
This Remove-DrdaPackageBindListener cmdlet removes the DRDA Service configuration settings to add a
custom trace listener.
Syntax
Remove-DrdaPackageBindListener -TypeName <string> [<CommonParameters>]
Parameters
The Type parameter defines the type of the DRDA Service custom bind listener. This mandatory
parameter is accepts a string. There is no default value. The Type value for the custom package bind
listener sample is "CustomListeners.MyPackageBindListener, CustomListeners, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=34013cf74da51d17, processorArchitecture=MSIL".
Service for DRDA
Microsoft Corporation
Page 137
Static SQL for DB2 Custom Packages XML Schema V90
Microsoft HIS 2013 (V9) supports both the old and new format, which includes an associated XML
schema for validating the XML document. Microsoft HIS 2009 and HIS 2010 (V8.5) support the old
format only.
The Microsoft static SQL for DB2 custom package XML file contains multiple elements to inform the
DRDA Client and DRDA Service how to execute the DRDA commands BGNBND (Begin Binding a Package
to an RDB) and BNDSQLSTT (Bind SQL Statement to an RDB Package). This topic describes the XML
elements that you can define to describe the static SQL package bind options, package name, package
sections, statements, parameters, and result sets. The following XML listing is an example of the custom
package XML.
Package Schema V90 Example
The custom packages XML schema v90 sample contains multiple sections.
Options
<?xml version="1.0" encoding="utf-8"?>
<hostIntegration.staticSql xmlns="http://schemas.microsoft.com/his/StaticSql/2012">
<options bindAllowErrors="Yes" bindAuthorizationKeep="true" bindCheck="false"
bindReplace="true" bindReplaceVersion="" packageCcsidSbc="1208" packageCcsidDbc="1200"
packageCcsidMbc="1208" packageCharacterSubtype="Default" packageDecimalPrecision="15"
packageExecuteAuthorization="Requester" bindExplain="ExplainNone"
packageIsolationLevel="ReadCommitted" packageOwnerIdentifier="" statementDateFormat="Iso"
statementDecimalDelimiter="System" defaultRdbCollection=""
releaseDatabaseResources="Commit" parallelProcessDegree="1" keepPreparedStatement="None"
statementQueryProtocol="FixedRow" statementStringDelimiter="System"
statementTimeFormat="Iso"/>
<packages>
<package collectionIdentifier="DSN8910" consistencyToken="CHARTOK1"
packageIdentifier="MSDB2SDK" title="" versionName="">
Sections 1 and 2
<sections>
<section packageSectionAlias="MSDB2SDK1" packageSectionNumber="1">
<!--Example 1: Declare C1 as the cursor of a query to retrieve data from the
table DSN8910.DEPT. The query itself appears in the DECLARE CURSOR statement.-->
<statement sqlStatement="DECLARE C1 CURSOR FOR SELECT DEPTNO, DEPTNAME, MGRNO
FROM CONTOSO.DSN8910.DEPT WHERE ADMRDEPT = 'A00'" sqlStatementAssumptions="true"
sqlStatementNumber="1"/>
<resultSet>
<columns>
<column name="DEPTNO" nullable="false">
<char ccsid="37" length="3"/>
</column>
<column name="DEPTNAME" nullable="false">
<varChar ccsid="37" length="36"/>
</column>
<column name="MGRNO" nullable="false">
<char ccsid="37" length="6"/>
Service for DRDA
Microsoft Corporation
Page 138
</column>
</columns>
</resultSet>
</section>
<section packageSectionAlias="MSDB2SDK2" packageSectionNumber="2">
<!--Example 2: Declare C2 as the cursor of a query to retrieve data from the
table DSN8810.DEPT. Assume that the data will be updated later with a searched update and
should be locked when the query executes. The query itself appears in the DECLARE CURSOR
statement.-->
<statement sqlStatement="DECLARE C2 CURSOR FOR SELECT DEPTNO, DEPTNAME, MGRNO
FROM CONTOSO.DSN8910.DEPT WHERE ADMRDEPT = 'A00' FOR READ ONLY WITH RS"
sqlStatementAssumptions="true" sqlStatementNumber="2"/>
<resultSet>
<columns>
<column name="DEPTNO" nullable="false">
<char ccsid="37" length="3"/>
</column>
<column name="DEPTNAME" nullable="false">
<varChar ccsid="37" length="36"/>
</column>
<column name="MGRNO" nullable="false">
<char ccsid="37" length="6"/>
</column>
</columns>
</resultSet>
</section>
Sections 3 and 4
<!--<section packageSectionAlias="MSDB2SDK3" packageSectionNumber="3">
-->
<!--Example 3: Declare C2 as the cursor for a statement named STMT2.-->
<!-<statement sqlStatement="EXEC SQL DECLARE C2 CURSOR FOR STMT2;"
sqlStatementAssumptions="true" sqlStatementNumber="3"/>
</section>-->
<section packageSectionAlias="MSDB2SDK4" packageSectionNumber="4">
<!--Example 4: Declare C4 as the cursor for a query to be used in positioned
updates of the table DSN8910.EMP. Allow the completed updates to be committed from time
to time without closing the cursor.-->
<statement sqlStatement="DECLARE C4 CURSOR WITH HOLD FOR SELECT * FROM
CONTOSO.DSN8910.EMP FOR UPDATE OF WORKDEPT, PHONENO, JOB, EDLEVEL, SALARY"
sqlStatementAssumptions="true" sqlStatementNumber="4"/>
<resultSet>
<columns>
<column name="EMPNO" nullable="false">
<char ccsid="37" length="6"/>
</column>
<column name="FIRSTNAME" nullable="false">
<varChar ccsid="37" length="12"/>
</column>
<column name="MIDINIT" nullable="false">
<char ccsid="37" length="1"/>
Service for DRDA
Microsoft Corporation
Page 139
</column>
<column name="LASTNAME" nullable="false">
<varChar ccsid="37" length="15"/>
</column>
<column name="WORKDEPT" nullable="true">
<char ccsid="37" length="3"/>
</column>
<column name="PHONENO" nullable="true">
<char ccsid="37" length="4"/>
</column>
<column name="HIREDATE" nullable="true">
<date length="10"/>
</column>
<column name="JOB" nullable="true">
<char ccsid="37" length="8"/>
</column>
<column name="EDLEVEL" nullable="true">
<smallInt length="2"/>
</column>
<column name="SEX" nullable="true">
<char ccsid="37" length="1"/>
</column>
<column name="BIRTHDATE" nullable="true">
<date length="10"/>
</column>
<column name="SALARY" nullable="true">
<decimal precision="9" scale="2"/>
</column>
<column name="BONUS" nullable="true">
<decimal precision="9" scale="2"/>
</column>
<column name="COMM" nullable="true">
<decimal precision="9" scale="2"/>
</column>
</columns>
</resultSet>
</section>
Sections 5 and 6
<section packageSectionAlias="MSDB2SDK5" packageSectionNumber="5">
<!--Example 5: In stored procedure SP1, declare C4 as the cursor for a query of
the table DSN8910.PROJ. Enable the cursor to return a result set to the caller of SP1,
which performs a commit on return.-->
<statement sqlStatement="DECLARE C5 CURSOR WITH HOLD WITH RETURN FOR SELECT
PROJNO, PROJNAME FROM CONTOSO.DSN8910.PROJ WHERE DEPTNO = 'A01'"
sqlStatementAssumptions="true" sqlStatementNumber="5"/>
<resultSet>
<columns>
<column name="PROJNO" nullable="false">
<char ccsid="37" length="6"/>
</column>
<column name="PROJNAME" nullable="true">
Service for DRDA
Microsoft Corporation
Page 140
<varChar ccsid="37" length="24"/>
</column>
</columns>
</resultSet>
</section>
<section packageSectionAlias="MSDB2SDK7" packageSectionNumber="6">
<!--Example 6: Declare C1 as the cursor of a query to retrieve data from the
table DSN8910.DEPT. The query itself appears in the DECLARE CURSOR statement.-->
<statement sqlStatement="DECLARE C6 CURSOR FOR SELECT * FROM
CONTOSO.DSN8910.DEPT" sqlStatementAssumptions="true" sqlStatementNumber="6"/>
<resultSet>
<columns>
<column name="DEPTNO" nullable="false">
<char ccsid="37" length="3"/>
</column>
<column name="DEPTNAME" nullable="false">
<varChar ccsid="37" length="36"/>
</column>
<column name="MGRNO" nullable="false">
<char ccsid="37" length="6"/>
</column>
</columns>
</resultSet>
</section>
Sections 7 and 8
<section packageSectionAlias="MSDB2SDK7" packageSectionNumber="7">
<!--Example 7: Declare C1 as the cursor of a query to retrieve data from the
table DSN8910.DEPT. The query itself appears in the DECLARE CURSOR statement-->
<statement sqlStatement="DECLARE C7 CURSOR WITH HOLD FOR SELECT * FROM
CONTOSO.DSN8910.DEPT" sqlStatementAssumptions="true" sqlStatementNumber="7"/>
<resultSet>
<columns>
<column name="DEPTNO" nullable="false">
<char ccsid="37" length="3"/>
</column>
<column name="DEPTNAME" nullable="false">
<varChar ccsid="37" length="36"/>
</column>
<column name="MGRNO" nullable="false">
<char ccsid="37" length="6"/>
</column>
</columns>
</resultSet>
</section>
<section packageSectionAlias="MSDB2SDK8" packageSectionNumber="8">
<!--Example 8:
Declare C1 as the cursor of a query to retrieve data from the
table DSN8910.DEPT. The query itself appears in the DECLARE CURSOR statement.-->
<statement sqlStatement="DECLARE C7 CURSOR WITH HOLD FOR SELECT * FROM
CONTOSO.DSN8910.DEPT" sqlStatementAssumptions="true" sqlStatementNumber="8"/>
<resultSet>
<columns>
Service for DRDA
Microsoft Corporation
Page 141
<column name="DEPTNO" nullable="false">
<char ccsid="37" length="3"/>
</column>
<column name="DEPTNAME" nullable="false">
<varChar ccsid="37" length="36"/>
</column>
<column name="MGRNO" nullable="false">
<char ccsid="37" length="6"/>
</column>
</columns>
</resultSet>
</section>
Sections 9 and 10
<section packageSectionAlias="MSDB2SDK9" packageSectionNumber="9">
<!--Example 9:
Declare C1 as the cursor of a query to retrieve data from the
table DSN8910.DEPT. The query itself appears in the DECLARE CURSOR statement.-->
<statement sqlStatement="DECLARE C9 CURSOR WITH HOLD FOR SELECT * FROM
CONTOSO.DSN8910.DEPT FOR UPDATE" sqlStatementAssumptions="true" sqlStatementNumber="9"/>
<resultSet>
<columns>
<column name="DEPTNO" nullable="false">
<char ccsid="37" length="3"/>
</column>
<column name="DEPTNAME" nullable="false">
<varChar ccsid="37" length="36"/>
</column>
<column name="MGRNO" nullable="false">
<char ccsid="37" length="6"/>
</column>
</columns>
</resultSet>
</section>
<section packageSectionAlias="MSDB2SDK10" packageSectionNumber="10">
<!--Example 10: Put the maximum salary in DSN8910.EMP into the host variable
MAXSALARY.-->
<statement sqlStatement="SELECT MAX(SALARY) INTO :MAXSALRY FROM DSN8910.EMP
WHERE EMPNO = '000010'" sqlStatementAssumptions="true" sqlStatementNumber="10"/>
<parameters>
<parameter name="MAXSALARY" nullable="false">
<decimal precision="9" scale="2"/>
</parameter>
</parameters>
</section>
Section 11
<section packageSectionAlias="MSDB2SDK11" packageSectionNumber="11">
<!--Example 11: Put the row for employee 528671, from DSN8910.EMP, into the
host structure EMPREC.-->
<statement sqlStatement="SELECT * INTO :EMPREC FROM DSN8910.EMP WHERE EMPNO =
'528671'" sqlStatementAssumptions="true" sqlStatementNumber="11"/>
Service for DRDA
Microsoft Corporation
Page 142
<parameters>
<parameter name="MAXSALARY" nullable="false">
<decimal precision="9" scale="2"/>
</parameter>
</parameters>
</section>
</sections>
</package>
</packages>
</hostIntegration.staticSql>
Example x. Microsoft static SQL for DB2 custom package XML file format v90.
Options Element
The Options element contains a set of optional attributes that define the values for the BNDOPT (Bind
Options) when executing the DRDA command BGNBND (Begin Binding a Package to an RDB).
Bind Package Creation Control
The bindAllowErrors attribute informs the DRDA Service whether errors are allowed during package
binding. This optional attribute accepts a string value.
A value of Yes instructs the DRDA Service to allow errors and continue binding the package.
A value of No instructs the DRDA Service that no errors are allowed.
A value of Validate instructs the DRDA Service to validate the bind request only.
The default value is No.
Package Authorization Option
The bindAuthorizationKeep attribute informs the DRDA Service whether to keep or revoke package
authorizations when the package is replaced. This optional attribute accepts a Boolean value. The
default value is true.
Bind Existence Checking
The bindCheck attribute informs the DRDA Service whether to return an error when checking for the
existence of database objects and authorities referenced in a package statement. This optional attribute
accepts a Boolean value. The default value is false.
Package Replacement Option
The bindReplace attribute instructs the DRDA Service whether the bind should replace the existing
package. This optional attribute accepts a Boolean value. There default value is true.
Replaced Package Version Name
The bindReplaceVersion attribute defines the package version name of the package that the DRDA
Service should replace. This optional attribute accepts a string value. There is no default value for this
element.
Service for DRDA
Microsoft Corporation
Page 143
Package Default SBCS CCSID for a Column
The packageCcsidSbc informs the DRDA Service which Code Character Set Identifier for Single-Byte
Characters to use when executing a SQL CREATE or ALTER table statement. This optional attribute
accepts an integer value. The default value is 1208.
Package Default DBCS CCSID for a Column
The packageCcsidDbc informs the DRDA Service which Code Character Set Identifier for Double-Byte
Characters to use when executing a SQL CREATE or ALTER table statement. This optional attribute
accepts an integer value. The default value is 1200.
Package Default MBCS CCSID for a Column
The packageCcsidMbc informs the DRDA Service which Code Character Set Identifier for Mixed-Byte
Characters to use when executing a SQL CREATE or ALTER table statement. This optional attribute
accepts an integer value. The default value is 1208.
Package Default Character Subtype
The packageCharacterSubtype attribute informs the DRDA Service which character subtype to use when
executing a SQL CREATE or ALTER table statement. This optional attribute accepts a string value. The
default value is Default.
Value
Description
Bit
CHAR FOR BIT DATA
Default System default
MBCS
Mixed-Byte Character Set
SBCS
Single-Byte Character Set
Table 42. Values for packageCharacterSubtype.
Decimal Precision
The packageDecimalPrecision attribute informs the DRDA Service the default decimal precision. This
optional attribute accepts an integer value of 15, 16, 31 or 63. There default value is 15.
Note: When connecting to IBM DB2 for i5/OS, you should not specify this attribute.
Package Authorization Rules
The packageExecuteAuthorization attribute informs the DRDA Service which authorization identifier to
use when executing dynamic SQL statements. This optional element attribute a string value. The default
value is Requester.
Value
Requester
Owner
InvokerRevertToRequester
InvokerRevertToOwner
Service for DRDA
Description
Instructs the DRDA Service to use the DRDA requester authorization
Instructs the DRDA Service to use the package owner authorization
Instructs the DRDA Service to use the authorization of the invoker of a
function or stored procedure, otherwise use the DRDA requester
authorization
Instructs the DRDA Service to use the authorization of the invoker of a
function or stored procedure, otherwise use the package owner
authorization
Microsoft Corporation
Page 144
Value
DefinerRevertToRequester
Description
Instructs the DRDA Service to use the authorization of the creator of a
function or stored procedure, otherwise use the DRDA requester
authorization
DefinerRevertToOwner
Instructs the DRDA Service to use the authorization of the creator of a
function or stored procedure, otherwise use the package owner
authorization
Table 43. Values for packageExecuteAuthorization.
Bind Explain Option
The bindExplain attribute informs the DRDA Service whether to produce explanatory information for
explainable database objects. This optional attribute accepts a string value.
A value of ExplainNone instructs the DRDA Service to not produce explanatory information.
A value of ExplainAll instructs the DRDA Service to explain all statements.
A value of ExplainStatic instructs the DRDA Service to explain static SQL statements only.
The default value is ExplainNone.
Note: When connecting to IBM DB2 for i5/OS and DB2 for LUW, you should specify a value of
ExplainNone only.
Package Isolation Level
The packageIsolationLevel attribute instructs the DRDA Service to bind the package with the requested
DRDA PKGISOLVL (Package Isolation Level). This required attribute accepts a string value. The default
value is ReadCommitted.
Value
ReadCommitted
Serializable
RepeatableRead
ReadUncommitted
Service for DRDA
Description
ANSI READ COMMITTED
DRDA ISOLVLCS (Isolation Level Cursor Stability)
IBM DB2 CURSOR STABILITY (CS)
IBM DB2 for i5/OS COMMIT(*CS)
Microsoft .NET Framework ReadCommitted
ANSI SERIALIZABLE
DRDA ISOLVLRR (Isolation Level Repeatable Read)
IBM DB2 REPEATABLE READ (RR)
IBM DB2 for i5/OS COMMIT(*RR)
Microsoft .NET Framework Serializable
ANSI REPEATABLE READ
DRDA ISOLVLALL (Isolation Level All)
IBM DB2 READ STABILITY (RS)
IBM DB2 for i5/OS COMMIT(*RS)
Microsoft .NET Framework RepeatableRead
ANSI READ UNCOMITTED
DRDA ISOLVLCHG (Isolation Level Change)
IBM DB2 UNCOMMITTED READ (UR)
IBM DB2 for i5/OS COMMIT(*UR)
Microsoft .NET Framework ReadUncommitted
Microsoft Corporation
Page 145
Value
NoCommit
Description
DRDA ISOLVLNC (Isolation Level No Commit)
IBM DB2 for i5/OS COMMIT(*NC)
Table 44. Values for packageIsolationLevel.
Package Owner Identifier
The packageOwnerIdentifier attribute instructs the DRDA Service which authorization identifier is the
owner of the package. This optional attribute accepts a string value. There is no default value for this
element.
Statement Date Format
The statementDateFormat element informs the DRDA Service which statement date format to use in
SQL statements. This optional element accepts a string value. There default value is Default.
Value
Format
Description
Iso
yyyy-mm-dd
ISO date format
Usa
mm/dd/yyyy USA date format
Eur
dd.mm.yyyy
EUR date format
Jis
yyyy-mm-dd
JIS date format
Default
NA
Default date format
Local
NA
Local date format
DmyBlank
dd mm yy
Day Month Year with blank separator
DmyComma dd,mm,yy
Day Month Year with comma separator
DmyHyphen dd-mm-yy
Day Month Year with hyphen separator
DmyPeriod
dd.mm.yy
Day Month Year with period separator
DmySlash
dd/mm/yy
Day Month Year with slash separator
JulBlank
yy ddd
Julian with blank separator
JulComma
yy,ddd
Julian with comma separator
JulHyphen
yy-ddd
Julian with hyphen separator
JulPeriod
yy.ddd
Julian with period separator
JulSlash
yy/ddd
Julian with slash separator
MdyBlank
mm dd yy
Month Day Year with blank separator
MdyComma mm,dd,yy
Month Day Year with comma separator
MdyHyphen mm-dd-yy
Month Day Year with hyphen separator
MdyPeriod
mm.dd.yy
Month Day Year with period separator
MdySlash
mm/dd/yy
Month Day Year with slash separator
YmdBlank
yy mm dd
Year Month Day with blank separator
YmdComma
yy,mm,dd
Year Month Day with comma separator
YmdHyphen yy-mm-dd
Year Month Day with hyphen separator
YmdPeriod
yy.mm.dd
Year Month Day with period separator
YmdSlash
yy/mm/dd
Year Month Day with slash separator
Table 45. Values for statementDateFormat.
Statement Decimal Delimiter
The statementDecimalDelimiter attribute informs the DRDA Service which statement decimal delimiter
to use in SQL statements. This optional attribute accepts a string value. There default value is System.
Service for DRDA
Microsoft Corporation
Page 146
Value
Description
Period
Indicates a period
Comma
Indicates a comma
Package Indicates package default, when rebinding package
System
Indicates the system default
Table 46. Values for statementDecimalDelimiter.
Default RDB Collection ID
The defaultRdbCollection attribute informs the DRDA Service what default collection identifier to use to
complete unqualified database object names. This optional attribute accepts a string value. There is no
default value. IBM DB2 for z/OS accepts a 128-byte string. IBM DB2 for i5/OS accepts a 10-byte string.
IBM DB2 for LUW accepts a 30-byte string.
Release Database Object Resources
The releaseDatabaseResources attribute informs the DRDA Service when to release database object
resources such as locks that are associated with the package execution. This optional attribute accepts a
string value. A value of Commit instructs the DRDA Service to release database object resources when
processing a transaction commit. A value of Deallocation instructs the DRDA Service to release database
object resources when deallocating the session. The default value is Commit.
Degree of IO Parallelism
The parallelProcessDegree attribute informs the DRDA Service to what degree to utilize I/O parallel
processing for bound statements. This optional attribute accepts an integer value of -1 to 32676. A
value of 1 instructs the DRDA Service that no IO parallel processing is required. A value of -1 instructs
the DRDA Service to apply whatever degree of IO parallel processing is appropriate. The default value is
1.
Keep Prepared Statement
The keepPreparedStatement attribute instructs the DRDA Service to keep prepared dynamic SQL
statements until released. This optional attribute accepts a string value. The default value is None.
Value
Description
None
Indicates statements are released during commit and rollback
Commit
Indicates statements are kept during commit, but released during rollback
Rollback Indicates statements are released during commit, but kept during rollback
All
Indicates statements are kept during commit and rollback
Table 47. Values for keepPreparedStatement.
Query Block Protocol Control
The statementQueryProtocol attribute instructs the DRDA Service what type of query block protocol to
use when returning results on a query. This optional attribute accepts a string value. The default value is
FixedRow.
Value
Description
FixedRow
Indicates fixed row query protocol
LimitedBlock
Indicates limited block query protocol
ForceFixedRow Indicates force fixed row query protocol
Table 48. Values for statementQueryProtocol.
Service for DRDA
Microsoft Corporation
Page 147
Statement String Delimiter
The statementStringDelimiter attribute informs the DRDA Service which statement string delimiter to
use in SQL statements. This optional attribute accepts a string value. There default value is System.
Value
Description
Apostrophe
Indicates an apostrophe
DoubleQuote Indicates a double quote
Package
Indicates package default, when rebinding package
System
Indicates the system default
Table 49. Values for statementDecimalDelimiter.
Statement Time Format
The statementTimeFormat attribute informs the DRDA Service which statement time format to use in
SQL statements. This optional attribute accepts a string value. There default value is Iso.
Value
Format
Description
Iso
hh.mm.ss
ISO time format
Usa
hh:mm:ss AM USA time format AM | PM
Eur
hh.mm.ss
EUR time format
Jis
hh:mm:ss
JIS time format
Default
NA
Default time format
Local
NA
Local time format
HmsBlank
hh mm ss
Hour Minute Second with blank separator
HmsColon
hh:mm:ss
Hour Minute Second with colon separator
HmsComma
hh,mm,ss
Hour Minute Second with comma separator
HmsPeriod
hh.mm.ss
Hour Minute Second with period separator
Table 50. Values for statementTimeFormat.
Packages Element
The packages element contains one or more package elements that define the values when executing
the DRDA command BGNBND (Begin Binding a Package to an RDB).
Package Element
The package element contains a set of attributes and a sections element.
Collection Identifier
The collectionIdentifier attribute corresponds to the DRDA RDBCOLID (RDB Collection Identifier) and
instructs the DRDA Service into which collection to bind the package. This optional element accepts a
string value. There is no default value. IBM DB2 for z/OS accepts a 128-byte string. IBM DB2 for i5/OS
accepts a 10-byte string. IBM DB2 for LUW accepts a 30-byte string.
Note: DRDA defines a fully-qualified static SQL package using a PKGNAM (RDB Package Name) that
consists of these multiple parts.

RDBNAM (Relational Database Name)

RDBCOLID (RDB Collection Identifier)

PKGID (RDB Package Identifier)
Service for DRDA
Microsoft Corporation
Page 148
RDBNAME.RDBCOLID.PKGID.PKGCNSTKN.PKGSN
Example x. Fully-qualified package name with consistency token.
Package Identifier
The packageIdentifier attribute corresponds to the DRDA PKGID (RDB Package Identifier) and informs
the DRDA Service what is the package identifier. This required element accepts a string value. There is
no default value. IBM DB2 accepts a 128-byte string.
Consistency Token
The consistencyToken attribute corresponds to the DRDA PKGCNSTKN (RDB Package Consistency Token)
and informs the DRDA Service what is the package consistency token. This optional element accepts a
string value. There is no default value. IBM DB2 supports an 8-byte string.
Note: If more than one package has the same value for PKGNAM, then the packages are distinguished
by the VRSNAM (Version Name) or PKGCNSTKN (package name consistency token).

PKGCNSTKN (RDB Package Consistency Token)

VRSNAM (Version Name)
Version Name
The versionName attribute corresponds to the DRDA VRSNAM (Version Name) and informs the DRDA
Service what is the package version name. This optional element accepts a string value. There default
value is null. IBM DB2 supports a 254-byte string.
Package Title
The Title attribute corresponds to the DRDA TITLE (Title) and instructs the DRDA Service to bind the
package with a descriptive comment. This optional element accepts a string value. There is no default
value. DRDA supports a 254-byte string.
Sections Element
The sections element contains one or more section elements that define the values when executing the
DRDA command BGNBND (Begin Binding a Package to an RDB).
Section Element
The section element contains a set of attributes, a required statement element, and an optional
resultSet element.
Section Number
The packageSectionNumber attribute corresponds to the DRDA PKGSN (RDB Package Section Number)
and instructs the DRDA Service to bind the section as this number. This optional attribute accepts an
integer value and must be unique within the Package element. There is no default value.
Section Alias
The packageSectionAlias attribute instructs the Microsoft DRDA Client to locate a package section based
on an alias name. This optional element accepts an 8-byte string value. There is no default value.
Note: See Programmer’s Reference for Microsoft.HostIntegration.MsDb2Client.MsDb2Connection
SetCustomPackageData.
Service for DRDA
Microsoft Corporation
Page 149
Statement Element
The Statement element contains a set of attributes, and an optional parameters element.
Statement Number
The sqlStatementNumber attribute corresponds to the DRDA SQLSTTNBR (SQL Statement Number) and
instructs the DRDA Service to bind the statement as this number, which is a reference to the statement
embedded within the source application. This optional attribute accepts an integer value and must be
unique within the Package element. There is no default value.
SQL Statement Assumptions
The sqlStatementAssumptions attribute corresponds to the DRDA BNDSTTASM (Bind SQL Statement
Assumptions) and instructs the DRDA Service to bind the statement with these assumptions. This
optional attribute accepts a Boolean value. A value of Yes indicates the source server successfully
classified the statement during the program precompile preparation process. A value of No indicates the
source server made assumptions for a statement that it could not classify. The default value is Yes.
SQL Statement Command Text
The sqlStatement attribute corresponds to the DRDA SQLSTT (SQL Statement) and instructs the DRDA
Service to bind the statement to the package with this SQL statement command text. This required
element accepts a string value. There is no default value. DB2 accepts a 2,097,152-byte string.
Parameters Element
The parameters element contains one or more parameter elements.
Parameter Element
The parameter element contains a set of attributes that correspond to the DRDA SQLSTTVRB (SQL
Statement Variable Descriptions), and type element.
Note: The parameter elements must be defined in the same order as the variables in the SQL statement.
Parameter Name
The name attribute instructs the DRDA Service what is the name of the parameter. This required
attribute accepts a string value. There is no default value. IBM DB2 supports a 128-byte string.
Parameter Nullability
The nullable attribute instructs the DRDA Service whether the parameter value is nullable. This required
attribute accepts a Boolean value. There default value is true.
Parameter Type
The type element instructs the DRDA Service what is the type of the parameter. This required attribute
accepts a string value. There is no default value.
Parameter Length
The length attribute instructs the DRDA Service what is the length of the parameter. This required
attribute accepts an integer value. There is no default value.
Parameter Precision
The precision attribute instructs the DRDA Service what is the precision of the parameter. This required
attribute accepts an integer value. There is no default value.
Service for DRDA
Microsoft Corporation
Page 150
Parameter Scale
The scale attribute instructs the DRDA Service what is the scale of the parameter. This required attribute
accepts an integer value. There is no default value.
Parameter Coded Character Set Identifier
The ccsid attribute instructs the DRDA Service what is the Coded Character Set Identifier of the
parameter. This required attribute accepts an integer value. There is no default value.
ResultSet Element
The optional resultSet element contains a columns element, which informs the DRDA Client what are
the expected order and data types of columns in the result set.
Note: The MsDb2Client provider uses this information to return a result set to the consumer program,
including the correct metadata for the column names and data types. Optionally, configure the
MsDb2Client connection string argument “Use Early Metadata=False” to instruct the MsDb2Client to
ignore the design-time metadata defined in the ResultSet portion of the static SQL for DB2 XML file, and
then use the late metadata returned by the DRDA Service.
Columns Element
The columns element contains one or more column elements.
Column Element
The column element contains a set of attributes.
Column Ordinal
The ordinal attribute identifies the place of the column within the result set. This required attribute
accepts an integer value. There is no default value.
Column Name
The name attribute instructs the DRDA Service what is the name of the column. This required attribute
accepts a string value. There is no default value. IBM DB2 supports a 128-byte string.
Column Nullability
The nullable attribute instructs the DRDA Service whether the column value is nullable. This required
attribute accepts a Boolean value. There default value is true.
Column Type
The type element instructs the DRDA Service what is the type of the column. This required attribute
accepts a string value. There is no default value.
Column Length
The Length attribute instructs the DRDA Service what is the length of the column. This required
attribute accepts an integer value. There is no default value.
Column Precision
The Precision attribute instructs the DRDA Service what is the precision of the column. This required
attribute accepts an integer value. There is no default value.
Service for DRDA
Microsoft Corporation
Page 151
Column Scale
The Scale attribute instructs the DRDA Service what is the scale of the column. This required attribute
accepts an integer value. There is no default value.
Column Coded Character Set Identifier
The CCSID attribute instructs the DRDA Service what is the Coded Character Set Identifier of the column.
This required attribute accepts an integer value. There is no default value.
Reference Tables
Data Types
The following table lists data types and lengths for use in defining parameter and columns in the static
SQL for DB2 XML file format V85.
Type
bigint
char
charForBit
date
Length
8
Description
A 64-bit signed integer.
A character string.
A binary string.
10
Date and time data ranging in value from January 1, 1753 to December
31, 9999 to an accuracy of 3.33 milliseconds.
decimal
A simple type representing values ranging from 1.0 x 10 -28 to
approximately 7.9 x 10 28 with 28-29 significant digits.
double
8
A floating point number within the range of -1.79E +308 through 1.79E
+308.
graphic
A double-byte character string.
int
4
A 32-bit signed integer, with values between -2147483648 and
2147483647.
numeric
An exact numeric value with a fixed precision and scale.
real
4
Signed, approximate, numeric value with a binary precision 24 (zero or
absolute value 10[–38] to 10[38]).
smallint
2
A 16-bit signed integer, with values between -32768 and 32767.
time
8.
Date and time data ranging in value from January 1, 1753 to December
31, 9999 to an accuracy of 3.33 milliseconds.
timestamp
26
Data and time data in the format YYYY-MM-DD-hh.mm.ss.tttttt.
varChar
A variable-length character string.
varCharForBit
A variable-length binary string.
varGraphic
A double-byte character string.
Table 51. Data type and length values.
Coded Character Set Identifiers
The following table lists data types and lengths for use in defining options, parameter and columns in
the static SQL for DB2 XML file format V85.
Type
SBCS
SBCS
SBCS
SBCS
Group
ANSI
ANSI
ANSI
ANSI
Service for DRDA
CCSID
1250
1251
1252
1253
NLS
1250
1251
1252
1253
Description
Central Europe
Cyrillic
Latin I
Greek
Microsoft Corporation
Page 152
Type
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
Group
ANSI
ANSI
ANSI
ANSI
ANSI/OEM
ANSI/OEM
ANSI/OEM
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
Service for DRDA
CCSID
1254
1255
1256
1257
874
932
1258
37
37
273
273
277
277
278
278
280
280
284
284
285
285
290
290
297
297
420
423
424
500
500
833
836
838
870
871
871
875
880
905
924
NLS
1254
1255
1256
1257
874
932
1258
1140
37
1141
20273
1142
20277
1143
20278
1144
20280
1145
20284
1146
20285
NA
290
1147
20297
20420
20423
20424
1148
500
NA
NA
20838
870
1149
20871
875
20880
20905
20924
Description
Turkish
Hebrew
Arabic
Baltic
Thai
Japanese Shift-JIS
Viet Nam
U.S./ Canada (Euro)
U.S./ Canada
Germany (Euro)
Germany
Denmark/ Norway (Euro)
Denmark/ Norway
Finland/ Sweden (Euro)
Finland/ Sweden
Italy (Euro)
Italy
Latin America/Spain (Euro)
Latin America/Spain
United Kingdom (Euro)
United Kingdom
Japan Katakana (Extended)
Japan Katakana (Extended)
France (Euro)
France
Arabic
Greek
Hebrew
International (Euro)
International
Korean (Extended)
Simplified Chinese (Extended)
Thai
Multilingual/ ROECE (Latin-2)
Icelandic (Euro)
Icelandic
Greek (Modern)
Cyrillic (Russian)
Turkish (Latin-3)
Latin-1/Open System (Euro)
Microsoft Corporation
Page 153
Type
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
Group
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
ISO
ISO
ISO
ISO
ISO
ISO
ISO
ISO
ISO
ISO
ISO
OEM
OEM
OEM
OEM
OEM
OEM
OEM
OEM
OEM
OEM
OEM
OEM
OEM
OEM
OEM
Service for DRDA
CCSID
930
931
933
935
937
939
1025
1026
1027
1027
1047
5026
5035
28709
813
819
912
913
914
915
916
920
923
1089
6937
437
737
775
850
852
855
857
860
861
862
863
864
865
866
869
NLS
930
931
933
935
937
939
21025
1026
NA
NA
1047
NA
NA
NA
28597
28591
28592
28593
28594
28595
28598
28599
20865
28596
20269
437
737
775
850
852
855
857
860
861
862
863
864
865
866
869
Description
Japan Katakana/Kanji (Extend Katakana)
Japanese
Korea (Extended)
Simplified Chinese (Extended)
Traditional Chinese (Extended)
Japan English/Kanji (Extended)
Cyrillic (Serbian, Bulgarian)
Turkish (Latin-5)
Japan English (Extended)
Japan English (Extended)
Latin-1/Open System
Japan Katakana/Kanji (Extend Katakana)
Japan English/Kanji (Extended)
Traditional Chinese (Extended)
8859-7 Greek
8859-1 Latin-1
8859-2 Central Europe
8859-3 Latin 3
8859-4 Baltic
8859-5 Cyrillic
8859-8 Hebrew (Visually Ordered)
8859-9 Hebrew (Logically Ordered)
8859-15 Latin 9 (Euro)
8859-6 Arabic
6937 Non-Spacing Accent
United States
Greek 437G
Baltic
Multilingual Latin I
Multilingual Latin II
Cyrillic
Turkish
Portuguese
Icelandic
Hebrew
Canadian French
Arabic
Nordic
Cyrillic II
Modern Greek
Microsoft Corporation
Page 154
Type
Group
CCSID
NLS
Description
MBCS EBCDIC
930
NA
Japan Katakana/Kanji (Extended)
MBCS EBCDIC
931
NA
Japanese
MBCS EBCDIC
933
NA
Korea (Extended)
MBCS EBCDIC
935
NA
Simplified Chinese (Extended)
MBCS EBCDIC
937
NA
Traditional Chinese (Extended)
MBCS EBCDIC
939
NA
Japan English/Kanji (Extended)
MBCS EBCDIC
5026
NA
Japan Katakana/Kanji (Extended)
MBCS EBCDIC
5035
NA
Japan English/Kanji (Extended)
DBCS
ANSI/OEM 936
936
Simplified Chinese GBK
DBCS
ANSI/OEM 949
949
Korean
DBCS
ANSI/OEM 950
950
Traditional Chinese Big5
DBCS
EBCDIC
300
NA
IBM EBCDIC - Japan
DBCS
EBCDIC
834
NA
IBM EBCDIC - Korea
DBCS
EBCDIC
835
NA
IBM EBCDIC - Traditional Chinese
DBCS
EBCDIC
837
NA
IBM EBCDIC - Simplified Chinese
DBCS
EBCDIC
4396
NA
IBM EBCDIC - Japan
Table 52. Coded Character Set Identifier values.
Note: The Microsoft ADO.NET Data Provider for DB2 supports a set of Coded Character Set Identifiers.
IBM DB2 database servers for z/OS and i5/OS typically use EBCDIC. For more information, see
Service for DRDA
Microsoft Corporation
Page 155
Static SQL for DB2 Custom Packages XML Schema V85
The Microsoft static SQL for DB2 custom package XML file contains multiple elements to inform the
DRDA AR client how to execute the DRDA commands BGNBND (Begin Binding a Package to an RDB) and
BNDSQLSTT (Bind SQL Statement to an RDB Package). This topic describes the XML elements that you
can define to describe the static SQL package bind options, package name, package sections,
statements, parameters, and result sets. The following XML listing is an example of the custom package
XML.
Package Schema V85 Example
The custom packages XML schema v85 sample contains multiple sections.
Options
<?xml version="1.0" encoding="utf-8"?>
<Packages>
<Options>
<BNDCHKEXS>BNDEXSOPT</BNDCHKEXS>
<BNDCRTCTL>BNDNERALW</BNDCRTCTL>
<BNDEXPOPT>EXPNON</BNDEXPOPT>
<DECPRC>31</DECPRC>
<DFTRDBCOL>COLLID</DFTRDBCOL>
<DGRIOPRL>1</DGRIOPRL>
<PKGATHOPT>PKGATHKP</PKGATHOPT>
<PKGATHRUL>OWNER</PKGATHRUL>
<PKGDFTCC>
<CCSIDDBC>0</CCSIDDBC>
<CCSIDMBC>0</CCSIDMBC>
<CCSIDSBC>0</CCSIDSBC>
</PKGDFTCC>
<PKGDFTCST>CSTSYSDFT</PKGDFTCST>
<PKGOWNID>PLARSEN</PKGOWNID>
<PKGRPLOPT>PKGRPLALW</PKGRPLOPT>
<PKGRPLVRS></PKGRPLVRS>
<PRPSTTKP>F0</PRPSTTKP>
<RDBRLSOPT>RDBRLSCMM</RDBRLSOPT>
<STTDATFMT>ISODATFMT</STTDATFMT>
<STTDECDEL>DECDELPRD</STTDECDEL>
<STTSTRDEL>STRDELAP</STTSTRDEL>
<STTTIMFMT>ISOTIMFMT</STTTIMFMT>
</Options>
<Package Collection="DBO" Id="MSDB2SDK" Token="CHARTOK1"
IsolationLevel="CursorStability">
Sections 1 and 2
<Section Number="1" Alias="MSDB2SDK1">
<!--Example 1: Declare C1 as the cursor of a query to retrieve data from
the table DSN8910.DEPT. The query itself appears in the DECLARE CURSOR
statement.-->
<Statement>DECLARE C1 CURSOR FOR SELECT DEPTNO, DEPTNAME, MGRNO FROM
CONTOSO.DSN8910.DEPT WHERE ADMRDEPT = 'A00'</Statement>
<ResultSet>
<Column Ordinal="1" Name="DEPTNO" Type="CHAR" Length="3"
CCSID="37" Nullable="FALSE"/>
<Column Ordinal="2" Name="DEPTNAME" Type="VARCHAR" Length="36"
CCSID="37" Nullable="FALSE"/>
Service for DRDA
Microsoft Corporation
Page 156
<Column Ordinal="3" Name="MGRNO" Type="CHAR" Length="6"
CCSID="37" Nullable="FALSE"/>
</ResultSet>
</Section>
<Section Number="2" Alias="MSDB2SDK2">
<!--Example 2: Declare C2 as the cursor of a query to retrieve data from
the table DSN8810.DEPT. Assume that the data will be updated later with
a searched update and should be locked when the query executes. The
query itself appears in the DECLARE CURSOR statement.-->
<Statement>DECLARE C2 CURSOR FOR SELECT DEPTNO, DEPTNAME, MGRNO FROM
CONTOSO.DSN8910.DEPT WHERE ADMRDEPT = 'A00' FOR READ ONLY WITH
RS</Statement>
<ResultSet>
<Column Ordinal="1" Name="DEPTNO" Type="CHAR" Length="3"
CCSID="37" Nullable="False"/>
<Column Ordinal="2" Name="DEPTNAME" Type="VARCHAR" Length="36"
CCSID="37" Nullable="True"/>
<Column Ordinal="3" Name="MGRNO" Type="CHAR" Length="6"
CCSID="37" Nullable="True"/>
</ResultSet>
</Section>
Sections 3 and 4
<!--<Section Number="3" Alias="MSDB2SDK3"> -->
<!--Example 3: Declare C2 as the cursor for a statement named STMT2.-->
<!--<Statement>EXEC SQL DECLARE C2 CURSOR FOR STMT2;</Statement>-->
<Section Number="4" Alias="MSDB2SDK4">
<!--Example 4: Declare C4 as the cursor for a query to be used in
positioned updates of the table DSN8910.EMP. Allow the completed updates
to be committed from time to time without closing the cursor.-->
<Statement>DECLARE C4 CURSOR WITH HOLD FOR SELECT * FROM
CONTOSO.DSN8910.EMP FOR UPDATE OF WORKDEPT, PHONENO, JOB, EDLEVEL,
SALARY</Statement>
<ResultSet>
<Column Ordinal="1" Name="EMPNO" Type="CHAR" Length="6"
CCSID="37" Nullable="False"/>
<Column Ordinal="2" Name="FIRSTNAME" Type="VARCHAR" Length="12"
CCSID="37" Nullable="False"/>
<Column Ordinal="3" Name="MIDINIT" Type="CHAR" Length="1"
CCSID="37" Nullable="False"/>
<Column Ordinal="4" Name="LASTNAME" Type="VARCHAR" Length="15"
CCSID="37" Nullable="False"/>
<Column Ordinal="5" Name="WORKDEPT" Type="CHAR" Length="3"
CCSID="37" Nullable="True"/>
<Column Ordinal="6" Name="PHONENO" Type="CHAR" Length="4"
CCSID="37" Nullable="True"/>
<Column Ordinal="7" Name="HIREDATE" Type="DATE" Nullable="True"/>
<Column Ordinal="8" Name="JOB" Type="CHAR" Length="8" CCSID="37"
Nullable="True"/>
<Column Ordinal="9" Name="EDLEVEL" Type="SMALLINT"
Nullable="True"/>
<Column Ordinal="10" Name="SEX" Type="CHAR" Length="1" CCSID="37"
Nullable="True"/>
Service for DRDA
Microsoft Corporation
Page 157
<Column Ordinal="11" Name="BIRTHDATE" Type="DATE"
Nullable="True"/>
<Column Ordinal="12" Name="SALARY" Type="DECIMAL" Precision="9"
Scale="2" Nullable="True"/>
<Column Ordinal="13" Name="BONUS" Type="DECIMAL" Precision="9"
Scale="2" Nullable="True"/>
<Column Ordinal="14" Name="COMM" Type="DECIMAL" Precision="9"
Scale="2" Nullable="True"/>
</ResultSet>
</Section>
Sections 5 and 6
<Section Number="5" Alias="MSDB2SDK5">
<!--Example 5: In stored procedure SP1, declare C4 as the cursor for a
query of the table DSN8910.PROJ. Enable the cursor to return a result
set to the caller of SP1, which performs a commit on return.-->
<Statement>DECLARE C5 CURSOR WITH HOLD WITH RETURN FOR SELECT PROJNO,
PROJNAME FROM CONTOSO.DSN8910.PROJ WHERE DEPTNO = 'A01'</Statement>
<ResultSet>
<Column Ordinal="1" Name="PROJNO" Type="CHAR" Length="6"
CCSID="37" Nullable="False"/>
<Column Ordinal="2" Name="PROJNAME" Type="VARCHAR" Length="24"
CCSID="37" Nullable="True"/>
</ResultSet>
</Section>
<Section Number="6" Alias="MSDB2SDK6">
<!--Example 6: Declare C1 as the cursor of a query to retrieve
data from the table DSN8910.DEPT. The query itself appears in the
DECLARE CURSOR statement.-->
<Statement>DECLARE C6 CURSOR FOR SELECT * FROM
CONTOSO.DSN8910.DEPT</Statement>
<ResultSet>
<Column Ordinal="1" Name="DEPTNO" Type="CHAR" Length="3"
CCSID="37" Nullable="FALSE"/>
<Column Ordinal="2" Name="DEPTNAME" Type="VARCHAR" Length="36"
CCSID="37" Nullable="FALSE"/>
<Column Ordinal="3" Name="MGRNO" Type="CHAR" Length="6"
CCSID="37" Nullable="FALSE"/>
</ResultSet>
</Section>
Sections 7 and 8
<Section Number="7" Alias="MSDB2SDK7">
<!--Example 7: Declare C1 as the cursor of a query to retrieve data from
the table DSN8910.DEPT.
The query itself appears in the DECLARE CURSOR statement.-->
<Statement>DECLARE C7 CURSOR WITH HOLD FOR SELECT * FROM
CONTOSO.DSN8910.DEPT</Statement>
<ResultSet>
<Column Ordinal="1" Name="DEPTNO" Type="CHAR" Length="3"
CCSID="37" Nullable="FALSE"/>
<Column Ordinal="2" Name="DEPTNAME" Type="VARCHAR" Length="36"
CCSID="37" Nullable="FALSE"/>
Service for DRDA
Microsoft Corporation
Page 158
<Column Ordinal="3" Name="MGRNO" Type="CHAR" Length="6"
CCSID="37" Nullable="FALSE"/>
</ResultSet>
</Section>
<Section Number="8" Alias="MSDB2SDK8">
<!--Example 8: Declare C1 as the cursor of a query to retrieve data from
the table DSN8910.DEPT. The query itself appears in the DECLARE CURSOR
statement.-->
<Statement>DECLARE C8 CURSOR WITH HOLD FOR SELECT * FROM
CONTOSO.DSN8910.DEPT FOR READ ONLY</Statement>
<ResultSet>
<Column Ordinal="1" Name="DEPTNO" Type="CHAR" Length="3"
CCSID="37" Nullable="FALSE"/>
<Column Ordinal="2" Name="DEPTNAME" Type="VARCHAR" Length="36"
CCSID="37" Nullable="FALSE"/>
<Column Ordinal="3" Name="MGRNO" Type="CHAR" Length="6"
CCSID="37" Nullable="FALSE"/>
</ResultSet>
</Section>
Sections 9 and 10
<Section Number="9" Alias="MSDB2SDK9">
<!--Example 9: Declare C1 as the cursor of a query to retrieve data from
the table DSN8910.DEPT. The query itself appears in the DECLARE CURSOR
statement. -->
<Statement>DECLARE C9 CURSOR WITH HOLD FOR SELECT * FROM
CONTOSO.DSN8910.DEPT FOR UPDATE</Statement>
<ResultSet>
<Column Ordinal="1" Name="DEPTNO" Type="CHAR" Length="3"
CCSID="37" Nullable="FALSE"/>
<Column Ordinal="2" Name="DEPTNAME" Type="VARCHAR" Length="36"
CCSID="37" Nullable="FALSE"/>
<Column Ordinal="3" Name="MGRNO" Type="CHAR" Length="6"
CCSID="37" Nullable="FALSE"/>
</ResultSet>
</Section>
<Section Number="10" Alias="MSDB2SDK10">
<!--Example 10: Put the maximum salary in DSN8910.EMP into the host
variable MAXSALARY. -->
<Statement>SELECT MAX(SALARY) INTO :MAXSALRY FROM DSN8910.EMP WHERE
EMPNO = '000010'</Statement>
<Parameters>
<Parameter Name="MAXSALRY" Type="DECIMAL" Precision="9"
Scale="2"/>
</Parameters>
</Section>
Sections 11 and 12
<Section Number="11" Alias="MSDB2SDK11">
<!--Example 11: Put the row for employee 528671, from DSN8910.EMP, into
the host structure EMPREC. -->
Service for DRDA
Microsoft Corporation
Page 159
<Statement>SELECT * INTO :EMPREC FROM DSN8910.EMP WHERE EMPNO =
'528671'</Statement>
<Parameters>
<Parameter Name="MAXSALRY" Type="DECIMAL" Precision="9"
Scale="2"/>
</Parameters>
</Section>
<Section Number="12" Alias="MSDB2SDK12">
<Statement>SELECT 1 FROM DSN8910.EMP FETCH FIRST 1 ROW ONLY</Statement>
</Section>
</Package>
</Packages>
Example x. Microsoft static SQL for DB2 custom package XML file format v85.
Packages Root Element
The Packages root element contains a set of nested elements consisting of Options and Package. There
may be one Options element per document. There must be at least one Package element per
document, as described in the following table.
Options Element
The Options element contains a set of optional elements that instruct the DRDA Client what values to
specify for the BNDOPT (Bind Options) when executing the DRDA command BGNBND (Begin Binding a
Package to an RDB).
Bind Existence Checking
The BNDCHKEXS element informs the DRDA Service whether to return an error when checking for the
existence of database objects and authorities referenced in a package statement. This optional element
accepts a string value. BNDEXSOPT instructs the DRDA Service to not return an error. BNDEXSRQR
instructs the DRDA Service to check existence of database objects and authorities. The default value is
BNDEXSOPT.
Bind Package Creation Control
The BNDCRTCTL element informs the DRDA Service whether errors are allowed during package binding.
This optional element accepts a string value. BNDNERALW instructs the DRDA Service that no errors are
allowed. BNDERRALW instructs the DRDA Service to allow errors and continue binding the package.
BNDCHKONL instructs the DRDA Service to validate the bind request only. The default value is
BDNERALW.
Bind Explain Option
The BNDEXPOPT element informs the DRDA Service whether to produce explanatory information for
explainable database objects. This optional element accepts a string value. EXPNON instructs the DRDA
Service to not produce explanatory information. EXPALL instructs the DRDA Service to explain all
statements. EXPYES instructs the DRDA Service to explain static SQL statements only. The default value
is EXPNON.
Note: When connecting to IBM DB2 for i5/OS and DB2 for LUW, you should specify a value of EXPNON
only.
Service for DRDA
Microsoft Corporation
Page 160
Decimal Precision
The DECPRC element informs the DRDA Service the default decimal precision. This optional element
accepts an integer value of 15, 16, 31 or 63. There is no default value.
Note: When connecting to IBM DB2 for i5/OS, you should not specify this element.
Default RDB Collection ID
The DFTRDBCOL element informs the DRDA Service what default collection identifier to use to complete
unqualified database object names. This optional element accepts a string value. There is no default
value for this element. IBM DB2 for z/OS accepts a 128-byte string. IBM DB2 for i5/OS accepts a 10-byte
string. IBM DB2 for LUW accepts a 30-byte string.
Degree of IO Parallelism
The DGRIOPRL element informs the DRDA Service to what degree I/O parallel processing is in effect for
bound statements. This optional element accepts an integer value of -1 to 32676. A value of 1 instructs
the DRDA Service that no IO parallel processing is required. A value of -1 instructs the DRDA Service to
apply whatever degree of IO parallel processing is appropriate. The default value is 1.
Package Authorization Option
The PKGATHOPT element informs the DRDA Service whether to keep or revoke package authorizations
when the package is replaced. This optional element accepts a string value. PKGATHKP instructs the
DRDA Service to keep authorizations. PKGATHRVK instructs the DRDA Service to revoke authorizations.
The default value is PKGATHKP.
Package Authorization Rules
The PKGATHRUL element informs the DRDA Service which authorization identifier to use when
executing dynamic SQL statements. This optional element accepts a string value. There default value is
REQUESTER.
Value
REQUESTER
OWNER
INVOKER_REVERT_TO_REQUESTER
INVOKER_REVERT_TO_OWNER
DEFINER_REVERT_TO_REQUESTER
DEFINER_REVERT_TO_OWNER
Service for DRDA
Description
Instructs the DRDA Service to use the DRDA requester
authorization
Instructs the DRDA Service to use the package owner
authorization
Instructs the DRDA Service to use the authorization of the
invoker of a function or stored procedure, otherwise use the
DRDA requester authorization
Instructs the DRDA Service to use the authorization of the
invoker of a function or stored procedure, otherwise use the
package owner authorization
Instructs the DRDA Service to use the authorization of the
creator of a function or stored procedure, otherwise use the
DRDA requester authorization
Instructs the DRDA Service to use the authorization of the
creator of a function or stored procedure, otherwise use the
package owner authorization
Microsoft Corporation
Page 161
Table 53. PKGATHRUL values.
Package Default CCSIDs for a Column
The PKGDFTCC element informs the DRDA Service which CCSID (Coded Character Set Identifier) to use
when executing a SQL CREATE or ALTER table statement. This optional element contains 3 elements:
CCSIDSBC (Code Character Set Identifier for Single-Byte Characters); CCSIDMBC (Code Character Set
Identifier for Mixed-Byte Characters); and CCSIDDBC (Code Character Set Identifier for Double-Byte
Characters). There is no default value for this element.
Package Default Character Subtype
The PKGDFTCST element informs the DRDA Service which character subtype to use when executing a
SQL CREATE or ALTER table statement. This optional element accepts a string value. CSTSYSDFT
indicates system default. CSTBCS indicates SBCS. CSTMBCS indicates MBCS. CSTBITS indicates CHAR FOR
BIT DATA. The default value is CSTSYSDFT.
Package Owner Identifier
The PKGOWNID element instructs the DRDA Service which authorization identifier is the owner of the
package. This optional element accepts a string value. There is no default value for this element.
Package Replacement Option
The PKGRPLOPT element instructs the DRDA Service whether the bind should replace the existing
package. This optional element accepts a string value. PKGRPLALW indicates replace package allowed.
PKGRPLNA indicates replace package not allowed. There default value is PKGRPLALW.
Replaced Package Version Name
The PKGRPLVRS element defines the package version name of the package that the DRDA Service
should replace. This optional element accepts a string value. There is no default value for this element.
Prepared Statement Keep
The PRPSTTKP element instructs the DRDA Service to keep prepared dynamic SQL statements until
released. This optional element accepts a string value. The default value is F0.
Value Description
F0
Indicates statements are released during commit and rollback
F1
Indicates statements are kept during commit, but released during rollback
F2
Indicates statements are released during commit, but kept during rollback
F3
Indicates statements are kept during commit and rollback
Table 54. PRPSTTKP values.
RDB Release Option
The RDBRLSOPT element informs the DRDA Service when to release objects. This optional element
accepts a string value. RDBRLSCMM indicates resources are released at commit. RDBRLSCNV indicates
resources are released at end of session. The default value is RDBRLSCMM.
Statement Date Format
The STTDATFMT element informs the DRDA Service which statement date format to use in SQL
statements. This optional element accepts a string value. There is no default value for this element.
Service for DRDA
Microsoft Corporation
Page 162
Value
Format
ISODATFMT
yyyy-mm-dd
USADATFMT
mm/dd/yyyy
EURDATFMT
dd.mm.yyyy
JISDATFMT
yyyy-mm-dd
DFTDATFMT
NA
LOCDATFMT
NA
DMYBLKDATFMT
dd mm yy
DMYCMADATFMT
dd,mm,yy
DMYHPNDATFMT
dd-mm-yy
DMYPRDDATFMT
dd.mm.yy
DMYSLHDATFMT
dd/mm/yy
JULBLKDATFMT
yy ddd
JULCMADATFMT
yy,ddd
JULHPNDATFMT
yy-ddd
JULPRDDATFMT
yy.ddd
JULSLHDATFMT
yy/ddd
MDYBLKDATFMT
mm dd yy
MDYCMADATFMT
mm,dd,yy
MDYHPNDATFMT
mm-dd-yy
MDYPRDDATFMT
mm.dd.yy
MDYSLHDATFMT
mm/dd/yy
YMDBLKDATFMT
yy mm dd
YMDCMADATFMT
yy,mm,dd
YMDHPNDATFMT
yy-mm-dd
YMDPRDDATFMT
yy.mm.dd
YMDSLHDATFMT
yy/mm/dd
Table 55. STTDATFMT values.
Description
ISO date format
USA date format
EUR date format
JIS date format
Default date format
Local date format
Day Month Year with blank separator
Day Month Year with comma separator
Day Month Year with hyphen separator
Day Month Year with period separator
Day Month Year with slash separator
Julian with blank separator
Julian with comma separator
Julian with hyphen separator
Julian with period separator
Julian with slash separator
Month Day Year with blank separator
Month Day Year with comma separator
Month Day Year with hyphen separator
Month Day Year with period separator
Month Day Year with slash separator
Year Month Day with blank separator
Year Month Day with comma separator
Year Month Day with hyphen separator
Year Month Day with period separator
Year Month Day with slash separator
Statement Decimal Delimiter
The STTDECDEL element informs the DRDA Service which statement decimal delimiter to use in SQL
statements. This optional element accepts a string value. DECDELPRD indicates a period. DECDELCMA
indicates a comma. DFTPKG indicates package default, when rebinding package. There is no default
value.
Statement String Delimiter
The STTSTRDEL element informs the DRDA Service which statement string delimiter to use in SQL
statements. This optional element accepts a string value. STRDELAP indicates an apostrophe. STRDELDQ
indicates a double quote. DFTPKG indicates package default, when rebinding package. There is no
default value.
Statement Time Format
The STTTIMFMT element informs the DRDA Service which statement time format to use in SQL
statements. This optional element accepts a string value. There is no default value for this element.
Value
ISOTIMFMT
Service for DRDA
Format
hh.mm.ss
Description
ISO time format
Microsoft Corporation
Page 163
Value
Format
USATIMFMT
hh:mm:ss AM
USATIMFMT
hh:mm:ss PM
EURTIMFMT
hh.mm.ss
JISTIMFMT
hh:mm:ss
DFTTIMFMT
NA
LOCTIMFMT
NA
HMSBLKTIMFMT
hh mm ss
HMSCLNTIMFMT
hh:mm:ss
HMSCMATIMFMT hh,mm,ss
HMSPRDTIMFMT
hh.mm.ss
Table 56. STTTIMFMT values.
Description
USA time format AM
USA time format PM
EUR time format
JIS time format
Default time format
Local time format
Hour Minute Second with blank separator
Hour Minute Second with colon separator
Hour Minute Second with comma separator
Hour Minute Second with period separator
Package Element
The Package element contains a set of attributes, and one or more nested Section elements. There must
be at least one Section element per Package element.
Collection Identifier
The Collection attribute corresponds to the DRDA RDBCOLID (RDB Collection Identifier) and instructs the
DRDA Service into which collection to bind the package. This optional element accepts a string value.
There is no default value. IBM DB2 for z/OS accepts a 128-byte string. IBM DB2 for i5/OS accepts a 10byte string. IBM DB2 for LUW accepts a 30-byte string.
Note: DRDA defines a fully-qualified static SQL package using a PKGNAM (RDB Package Name) that
consists of these multiple parts.

RDBNAM (Relational Database Name)

RDBCOLID (RDB Collection Identifier)

PKGID (RDB Package Identifier)
RDBNAME.RDBCOLID.PKGID.PKGCNSTKN.PKGSN
Example x. Fully-qualified package name with consistency token.
Package Identifier
The Id attribute corresponds to the DRDA PKGID (RDB Package Identifier) and informs the DRDA Service
what is the package identifier. This required element accepts a string value. There is no default value.
IBM DB2 accepts a 128-byte string.
Consistency Token
The Token attribute corresponds to the DRDA PKGCNSTKN (RDB Package Consistency Token) and
informs the DRDA Service what is the package consistency token. This optional element accepts a string
value. There is no default value. IBM DB2 supports an 8-byte string.
Note: If more than one package has the same value for PKGNAM, then the packages are distinguished
by the VRSNAM (Version Name) or PKGCNSTKN (package name consistency token).

PKGCNSTKN (RDB Package Consistency Token)
Service for DRDA
Microsoft Corporation
Page 164

VRSNAM (Version Name)
Version Name
The Version attribute corresponds to the DRDA VRSNAM (Version Name) and informs the DRDA Service
what is the package version name. This optional element accepts a string value. There default value is
null. IBM DB2 supports a 254-byte string.
Package Isolation Level
The IsolationLevel attribute instructs the DRDA Service to bind the package with the requested DRDA
PKGISOLVL (Package Isolation Level). This required element accepts a string value. The default value is
ISOLVLCS.
DDM
ISOLVLCS
Description
DRDA ISOLVLCS (Isolation Level Cursor Stability)
ANSI READ COMMITTED
IBM DB2 CURSOR STABILITY (CS)
IBM DB2 for i5/OS COMMIT(*CS)
Microsoft .NET Framework ReadCommitted
ISOLVLRR
DRDA ISOLVLRR (Isolation Level Repeatable Read)
ANSI SERIALIZABLE
IBM DB2 REPEATABLE READ (RR)
IBM DB2 for i5/OS COMMIT(*RR)
Microsoft .NET Framework Serializable
ISOLVLALL
DRDA ISOLVLALL (Isolation Level All)
ANSI REPEATABLE READ
IBM DB2 READ STABILITY (RS)
IBM DB2 for i5/OS COMMIT(*RS)
Microsoft .NET Framework RepeatableRead
ISOLVLCHG
DRDA ISOLVLCHG (Isolation Level Change)
ANSI READ UNCOMITTED
IBM DB2 UNCOMMITTED READ (UR)
IBM DB2 for i5/OS COMMIT(*UR)
Microsoft .NET Framework ReadUncommitted
ISOLVLNC
DRDA ISOLVLNC (Isolation Level No Commit)
IBM DB2 for i5/OS COMMIT(*NC)
Table 57. PKGISOLVL values.
Package Title
The Title attribute instructs the DRDA Service to bind the package with the requested DRDA TITLE (Title),
which is a descriptive comment. This optional element accepts a string value. There is no default value.
DRDA supports a 254-byte string.
Section Element
The Section element contains a set of attributes, and nested Statement, Parameters, and ResultSet
elements. There must be at least one Statement element per Section element.
Service for DRDA
Microsoft Corporation
Page 165
Section Number
The Number attribute instructs the DRDA Service to bind the statement to the package with the
requested DRDA PKGSN (RDB Package Section Number). This required element accepts an integer value
and must be unique within the Package element. There is no default value.
Section Alias
The Alias attribute instructs the Microsoft DRDA Client to locate a package section based on an alias
name. This optional element accepts an 8-byte string value. There is no default value.
Note: See Programmer’s Reference for Microsoft.HostIntegration.MsDb2Client.MsDb2Connection
SetCustomPackageData.
Statement Element
The Statement element contains an attribute and a value.
Statement Number
The Number attribute instructs the DRDA Service to bind the statement to the package with the
requested DRDA SQLSTTNBR (SQL Statement Number). This required element accepts an integer value
and must be unique within the Package element. There is no default value.
The Number attribute corresponds to the DRDA PKGSN (RDB Package Section Number) and instructs the
DRDA Service to bind the section as this number. This optional attribute accepts an integer value and
must be unique within the Package element. There is no default value.
SQL Statement Command Text
The Statement attribute corresponds to the DRDA SQLSTT (SQL Statement) and instructs the DRDA
Service to bind the statement to the package with this SQL statement command text. This required
element accepts a string value. There is no default value. DB2 accepts a 2,097,152-byte string.
Parameters Element
The Parameters element contains one or more Parameter elements.
Parameter Element
The Parameter element contains a set of attributes.
Note: The parameter elements must be defined in the same order as the variables in the SQL statement.
Parameter Name
The Name attribute instructs the DRDA Service what is the name of the parameter. This required
attribute accepts a string value. There is no default value. IBM DB2 supports a 128-byte string.
Parameter Type
The Type attribute instructs the DRDA Service what is the type of the parameter. This required attribute
accepts a string value. There is no default value.
Parameter Length
The Length attribute instructs the DRDA Service what is the length of the parameter. This required
attribute accepts an integer value. There is no default value.
Service for DRDA
Microsoft Corporation
Page 166
Parameter Precision
The Precision attribute instructs the DRDA Service what is the precision of the parameter. This required
attribute accepts an integer value. There is no default value.
Parameter Scale
The Scale attribute instructs the DRDA Service what is the scale of the parameter. This required
attribute accepts an integer value. There is no default value.
Parameter Coded Character Set Identifier
The CCSID attribute instructs the DRDA Service what is the Coded Character Set Identifier of the
parameter. This required attribute accepts an integer value. There is no default value.
Parameter Nullability
The Nullable attribute instructs the DRDA Service whether the parameter value is nullable. This required
attribute accepts a Boolean value. There default value is true.
ResultSet Element
The ResultSet element contains one or more Column elements which define the output column in the
result set.
Note: The MsDb2Client provider uses this information to return a result set to the consumer program,
including the correct metadata for the column names and data types. Optionally, configure the
MsDb2Client connection string argument “Use Early Metadata=False” to instruct the MsDb2Client to
ignore the design-time metadata defined in the ResultSet portion of the static SQL for DB2 XML file, and
then use the late metadata returned by the DRDA Service.
Column Element
The Column element contains a set of attributes.
Column Ordinal
The Ordinal attribute identifies the place of the column within the result set. This required attribute
accepts an integer value. There is no default value.
Column Name
The Name attribute instructs the DRDA Service what is the name of the column. This required attribute
accepts a string value. There is no default value. IBM DB2 supports a 128-byte string.
Column Type
The Type attribute instructs the DRDA Service what is the type of the column. This required attribute
accepts a string value. There is no default value.
Column Length
The Length attribute instructs the DRDA Service what is the length of the column. This required
attribute accepts an integer value. There is no default value.
Column Precision
The Precision attribute instructs the DRDA Service what is the precision of the column. This required
attribute accepts an integer value. There is no default value.
Service for DRDA
Microsoft Corporation
Page 167
Column Scale
The Scale attribute instructs the DRDA Service what is the scale of the column. This required attribute
accepts an integer value. There is no default value.
Column Coded Character Set Identifier
The CCSID attribute instructs the DRDA Service what is the Coded Character Set Identifier of the column.
This required attribute accepts an integer value. There is no default value.
Column Nullability
The Nullable attribute instructs the DRDA Service whether the column value is nullable. This required
attribute accepts a Boolean value. There default value is true.
Reference Tables
Data Types
The following table lists data types and lengths for use in defining parameter and columns in the static
SQL for DB2 XML file format V85.
Type
BigInt
Char
CharForBit
Date
Length
8
Description
A 64-bit signed integer.
A character string.
A binary string.
10
Date and time data ranging in value from January 1, 1753 to December
31, 9999 to an accuracy of 3.33 milliseconds.
Decimal
A simple type representing values ranging from 1.0 x 10 -28 to
approximately 7.9 x 10 28 with 28-29 significant digits.
Double
8
A floating point number within the range of -1.79E +308 through 1.79E
+308.
Graphic
A double-byte character string.
Int
4
A 32-bit signed integer, with values between -2147483648 and
2147483647.
Numeric
An exact numeric value with a fixed precision and scale.
Real
4
Signed, approximate, numeric value with a binary precision 24 (zero or
absolute value 10[–38] to 10[38]).
SmallInt
2
A 16-bit signed integer, with values between -32768 and 32767.
Time
8.
Date and time data ranging in value from January 1, 1753 to December
31, 9999 to an accuracy of 3.33 milliseconds.
Timestamp
26
Data and time data in the format YYYY-MM-DD-hh.mm.ss.tttttt.
VarChar
A variable-length character string.
VarCharForBit
A variable-length binary string.
VarGraphic
A double-byte character string.
Table 58. Data type and length values.
Coded Character Set Identifiers
The following table lists data types and lengths for use in defining options, parameter and columns in
the static SQL for DB2 XML file format V85.
Type
SBCS
Group
ANSI
Service for DRDA
CCSID
1250
NLS
1250
Description
Central Europe
Microsoft Corporation
Page 168
Type
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
Group
ANSI
ANSI
ANSI
ANSI
ANSI
ANSI
ANSI
ANSI/OEM
ANSI/OEM
ANSI/OEM
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
Service for DRDA
CCSID
1251
1252
1253
1254
1255
1256
1257
874
932
1258
37
37
273
273
277
277
278
278
280
280
284
284
285
285
290
290
297
297
420
423
424
500
500
833
836
838
870
871
871
875
NLS
1251
1252
1253
1254
1255
1256
1257
874
932
1258
1140
37
1141
20273
1142
20277
1143
20278
1144
20280
1145
20284
1146
20285
NA
290
1147
20297
20420
20423
20424
1148
500
NA
NA
20838
870
1149
20871
875
Description
Cyrillic
Latin I
Greek
Turkish
Hebrew
Arabic
Baltic
Thai
Japanese Shift-JIS
Viet Nam
U.S./ Canada (Euro)
U.S./ Canada
Germany (Euro)
Germany
Denmark/ Norway (Euro)
Denmark/ Norway
Finland/ Sweden (Euro)
Finland/ Sweden
Italy (Euro)
Italy
Latin America/Spain (Euro)
Latin America/Spain
United Kingdom (Euro)
United Kingdom
Japan Katakana (Extended)
Japan Katakana (Extended)
France (Euro)
France
Arabic
Greek
Hebrew
International (Euro)
International
Korean (Extended)
Simplified Chinese (Extended)
Thai
Multilingual/ ROECE (Latin-2)
Icelandic (Euro)
Icelandic
Greek (Modern)
Microsoft Corporation
Page 169
Type
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
SBCS
Group
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
EBCDIC
ISO
ISO
ISO
ISO
ISO
ISO
ISO
ISO
ISO
ISO
ISO
OEM
OEM
OEM
OEM
OEM
OEM
OEM
OEM
OEM
OEM
OEM
OEM
Service for DRDA
CCSID
880
905
924
930
931
933
935
937
939
1025
1026
1027
1027
1047
5026
5035
28709
813
819
912
913
914
915
916
920
923
1089
6937
437
737
775
850
852
855
857
860
861
862
863
864
NLS
20880
20905
20924
930
931
933
935
937
939
21025
1026
NA
NA
1047
NA
NA
NA
28597
28591
28592
28593
28594
28595
28598
28599
20865
28596
20269
437
737
775
850
852
855
857
860
861
862
863
864
Description
Cyrillic (Russian)
Turkish (Latin-3)
Latin-1/Open System (Euro)
Japan Katakana/Kanji (Extend Katakana)
Japanese
Korea (Extended)
Simplified Chinese (Extended)
Traditional Chinese (Extended)
Japan English/Kanji (Extended)
Cyrillic (Serbian, Bulgarian)
Turkish (Latin-5)
Japan English (Extended)
Japan English (Extended)
Latin-1/Open System
Japan Katakana/Kanji (Extend Katakana)
Japan English/Kanji (Extended)
Traditional Chinese (Extended)
8859-7 Greek
8859-1 Latin-1
8859-2 Central Europe
8859-3 Latin 3
8859-4 Baltic
8859-5 Cyrillic
8859-8 Hebrew (Visually Ordered)
8859-9 Hebrew (Logically Ordered)
8859-15 Latin 9 (Euro)
8859-6 Arabic
6937 Non-Spacing Accent
United States
Greek 437G
Baltic
Multilingual Latin I
Multilingual Latin II
Cyrillic
Turkish
Portuguese
Icelandic
Hebrew
Canadian French
Arabic
Microsoft Corporation
Page 170
Type
Group
CCSID
NLS
Description
SBCS
OEM
865
865
Nordic
SBCS
OEM
866
866
Cyrillic II
SBCS
OEM
869
869
Modern Greek
MBCS EBCDIC
930
NA
Japan Katakana/Kanji (Extended)
MBCS EBCDIC
931
NA
Japanese
MBCS EBCDIC
933
NA
Korea (Extended)
MBCS EBCDIC
935
NA
Simplified Chinese (Extended)
MBCS EBCDIC
937
NA
Traditional Chinese (Extended)
MBCS EBCDIC
939
NA
Japan English/Kanji (Extended)
MBCS EBCDIC
5026
NA
Japan Katakana/Kanji (Extended)
MBCS EBCDIC
5035
NA
Japan English/Kanji (Extended)
DBCS
ANSI/OEM 936
936
Simplified Chinese GBK
DBCS
ANSI/OEM 949
949
Korean
DBCS
ANSI/OEM 950
950
Traditional Chinese Big5
DBCS
EBCDIC
300
NA
IBM EBCDIC - Japan
DBCS
EBCDIC
834
NA
IBM EBCDIC - Korea
DBCS
EBCDIC
835
NA
IBM EBCDIC - Traditional Chinese
DBCS
EBCDIC
837
NA
IBM EBCDIC - Simplified Chinese
DBCS
EBCDIC
4396
NA
IBM EBCDIC - Japan
Table 59. Coded Character Set Identifier values.
Note: The Microsoft ADO.NET Data Provider for DB2 supports a set of Coded Character Set Identifiers.
IBM DB2 database servers for z/OS and i5/OS typically use EBCDIC. For more information, see SNA
Internationalization Programmer's Reference (http://go.microsoft.com/fwlink/?LinkID=181017).
Service for DRDA
Microsoft Corporation
Page 171
Service for DRDA
Microsoft Corporation
Page 172
Samples
Custom Listeners
A number of the DRDA Service listeners are replaceable with custom listeners for trace output and
package bind output.
Custom Trace Listener
The DRDA Service can trace runtime operations and output the information to the default
MsDrdaService.log file and to the standard DrdaAsTextListener. Optionally, you can replace the
DrdaAsTextListener with a custom trace listener.
The DRDA Service supports trace levels to select information to write to the log file and trace listeners.
For more information, see Tracing topic in the Troubleshooting book.
To use the trace listener sample, follow these steps.
1. Using Microsoft Visual Studio 2010, build the sample. You may need to change the reference to
the strong name key in the project properties, and the output directory path in the program
code.
using System;
using System.IO;
using Microsoft.HostIntegration.Drda.Common;
namespace CustomListeners
{
public class MyTraceListener : BaseDrdaTraceListener
{
StreamWriter sw = null;
public bool EnsureWriter()
{
if (sw == null)
{
try
{
System.IO.DirectoryInfo dirInfo = new
System.IO.DirectoryInfo(@"c:\temp");
if (!dirInfo.Exists)
{
dirInfo.Create();
}
string fileName = @"c:\temp\MsDrdaService" +
DateTime.Now.ToFileTime() + ".log";
sw = new StreamWriter(fileName);
sw.AutoFlush = true;
sw.WriteLine("MsDrdaService custom log.
Created on: " + DateTime.Now);
Service for DRDA
Microsoft Corporation
Page 173
return true;
}
catch (Exception ex)
{
System.Console.WriteLine("Failed to create
log file. Message:" + ex.Message);
return false;
}
}
else
return true;
}
#region override IDrdaTraceListener Members
public override void
TraceEvent(System.Diagnostics.TraceEventType type, int id, string
msg)
{
if (EnsureWriter())
{
sw.WriteLine(string.Format("[" + type + "][" + id
+ "]" + msg));
}
}
#endregion
}
}
Sample x. Sample code for a custom trace listener.
2. Using Microsoft Global Assembly Cache tool, install an assembly into the global assembly cache.
In the Visual Studio x64 Win64 Command Prompt (2010) window, navigate to the bin\Debug or
bin\Retail folder for your custom package bind listener component, type gacutil /i
“<path>\<component_name>.dll”, and then press Enter.
C:\Windows\system32>gacutil /i
<path>\CustomListeners\bin\Debug\CustomListeners.dll
Microsoft (R) .NET Global Assembly Cache Utility.
4.0.30319.1
Copyright (c) Microsoft Corporation.
Version
All rights reserved.
Assembly successfully added to the cache
Example x. Example command to add custom listener component to GAC.
3. Using Microsoft Global Assembly Cache tool, read the assembly information from the global
assembly cache. In the Visual Studio x64 Win64 Command Prompt (2010) window, navigate to
Service for DRDA
Microsoft Corporation
Page 174
the bin\Debug or bin\Retail folder for your custom package bind listener component, type
gacutil /l “<path>\<component_name>.dll”, and then press Enter.
C:\TechReady\DRDA_AS\CustomListeners\bin\Debug>gacutil -l
CustomListeners
Microsoft (R) .NET Global Assembly Cache Utility.
4.0.30319.1
Copyright (c) Microsoft Corporation.
Version
All rights reserved.
The Global Assembly Cache contains the following assemblies:
CustomListeners, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=34013cf74da51d17, processorArchitecture=MSIL
Number of items = 2
Example x. Example command to read custom listener component info from GAC.
4. Using Microsoft Visual Studio 2010, edit the DRDA Service application configuration file. Update
the configuration for the custom trace listener.
<drdaServiceTraceListeners>
<drdaServiceTraceListener type="CustomListeners.MyTraceListener,
CustomListeners, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=34013cf74da51d17, processorArchitecture=MSIL" traceLevel="3"/>
</drdaServiceTraceListeners>
Example x. Sample values for custom trace listener in the MsDrdaService.exe.config.
Custom Package Bind Listener
To use the custom package bind listener sample, follow these steps.
1. Using Microsoft Visual Studio 2010, build the sample. You may need to change the reference to
the strong name key in the project properties, and the output directory path in the program
code.
using
using
using
using
using
System;
System.Collections.Generic;
System.Xml;
System.Text;
Microsoft.HostIntegration.Drda.Common;
namespace CustomListeners
{
public class MyPackageBindListener: IPackageBindListener
{
#region IPackageBindListener Members
/// <summary>
/// Notify after package is bound with string representation of the xml.
/// </summary>
/// <param name="packageXMLString">package XML String</param>
public void OnPackageBound(string packageXMLString, string rdbNam, string
collid)
Service for DRDA
Microsoft Corporation
Page 175
{
}
/// <summary>
/// Notify after package is bound with xml document.
/// </summary>
/// <param name="xmldoc"></param>
public void OnPackageBound(XmlDocument xmldoc, string rdbNam, string collid)
{
try
{
System.IO.DirectoryInfo dirInfo = new
System.IO.DirectoryInfo(@"c:\temp");
if (!dirInfo.Exists)
{
dirInfo.Create();
}
string fileName = @"c:\temp\PackageXMLFile" +
DateTime.Now.ToFileTime() + ".xml";
xmldoc.Save(fileName);
//callback.ReloadPackageProcedureTable(null);
}
catch (Exception ex)
{
System.Console.WriteLine("Failed to save xml file. Message:" +
ex.Message);
}
}
/// <summary>
/// Notify after package is bound with string representation of the xml.
/// </summary>
public void OnPackageBound(string packageXMLString, string rdbNam, string
collid, out List<string> sqlScripts)
{
sqlScripts = new List<string>();
}
/// <summary>
/// Notify after package is bound with xml document.
/// </summary>
public void OnPackageBound(XmlDocument xmldoc, string rdbNam, string collid,
out List<string> sqlScripts)
{
sqlScripts = new List<string>();
string[] sqlScript1 = {
"/****** Object: StoredProcedure
[dbo].[DBOAREAS_43484152544F4B31_1]
Script Date: 01/06/2012 13:36:23 ******/",
"SET ANSI_NULLS ON",
"GO",
"SET QUOTED_IDENTIFIER ON",
"GO",
Service for DRDA
Microsoft Corporation
Page 176
[dbo].[DBOAREAS_43484152544F4B31_1]
DBO.AREAS",
"CREATE PROCEDURE
AS DECLARE C1 CURSOR GLOBAL FOR SELECT * FROM
"GO",
};
string[] sqlScript2 = {
"CREATE PROCEDURE
[dbo].[DBOAREAS_43484152544F4B31_2] AS SELECT * FROM DBO.AREAS"
};
sqlScripts.AddRange(sqlScript1);
sqlScripts.AddRange(sqlScript2);
}
#endregion
}
}
Sample x. Sample code for a custom package bind listener.
2. Using Microsoft Global Assembly Cache tool, install an assembly into the global assembly cache.
In the Visual Studio x64 Win64 Command Prompt (2010) window, navigate to the bin\Debug or
bin\Retail folder for your custom package bind listener component, type gacutil /i
“<path>\<component_name>.dll”, and then press Enter.
C:\Windows\system32>gacutil /i
<path>\CustomListeners\bin\Debug\CustomListeners.dll
Microsoft (R) .NET Global Assembly Cache Utility.
4.0.30319.1
Copyright (c) Microsoft Corporation.
Version
All rights reserved.
Assembly successfully added to the cache
Example x. Example command to add custom listener component to GAC.
5. Using Microsoft Global Assembly Cache tool, read the assembly information from the global
assembly cache. In the Visual Studio x64 Win64 Command Prompt (2010) window, navigate to
the bin\Debug or bin\Retail folder for your custom package bind listener component, type
gacutil /l “<path>\<component_name>.dll”, and then press Enter.
C:\TechReady\DRDA_AS\CustomListeners\bin\Debug>gacutil -l
CustomListeners
Microsoft (R) .NET Global Assembly Cache Utility.
4.0.30319.1
Copyright (c) Microsoft Corporation.
Version
All rights reserved.
The Global Assembly Cache contains the following assemblies:
CustomListeners, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=34013cf74da51d17, processorArchitecture=MSIL
Service for DRDA
Microsoft Corporation
Page 177
Number of items = 2
Example x. Example command to read custom listener component info from GAC.
3. Using Microsoft Visual Studio 2010, edit the DRDA Service application configuration file. Replace
the default package bind listener with the custom package bind listener. The DRDA Service will
return a BGNBNDRM (Begin Bind Error Reply Message) to the DRDA AR, if it does not receive a
valid response to the callback interface, when the errorWhenNoCallback= value is “true”.
<packageBindListeners>
<packageBindListener type="CustomListeners.MyPackageBindListener,
CustomListeners, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=34013cf74da51d17, processorArchitecture=MSIL"
errorWhenNoCallback="true"/>
</packageBindListeners>
Example x. Example values for custom package bind listener in the DRDA Service application
configuration file.
Enterprise Single Sign-On
To create and enable a host-initiated affiliate application using the command line
You can use the SSO Administration MMC Snap-In or the SSO Command Line Utility to create and enable
one or more applications, as specified by an XML file. In this task, you will create and enable a hostinitiated affiliate application using the command line.
1. Click Start, click Run, type cmd, and then click OK.
2. At the command prompt, go to the Enterprise Single Sign-On installation directory. The default
installation directory is <drive>:\Program Files\Common Files\Enterprise Single Sign-On.
3. Type ssomanage –createapps <application file name>, and then press Enter.
<sso>
<application name="HOST1">
<description>Host DRDA AR</description>
<contact>[email protected]</contact>
<appuserAccount>domain\AppUserAccount</appuserAccount>
<appAdminAccount>domain\AppAdminAccount</appAdminAccount>
<field ordinal="0" label="User ID" masked="no" />
<field ordinal="1" label="Password" masked="yes" />
<flags hostInitiatedSSO="yes" enableApp="yes" />
</application>
</sso>
Example x. x.
4. Verify the SSO Command Line Utility output.
Using SSO server on this computer
---------Created application 'HOST1' with the following values Application name: DRDAHOSTINIT
Application type: Individual
Description: An Affiliate Application for Host Initiated SSO
Service for DRDA
Microsoft Corporation
Page 178
Contact info: [email protected]
Application Users account: REDMOND\plarsen
Application Administrators account: REDMOND\plarsen
Ticket timeout (in minutes): 0
Application flags Application enabled: Yes
Allow local accounts: No
Admin account same: No
Allow Windows initiated SSO: No
Allow host initiated SSO: Yes
- verify external credentials: Yes
Allow direct password sync: No
Credentials are Windows credentials: No
Application Users cannot create mappings: Yes
Application fields User ID: (Not Masked)
Password: (Masked)
----------
Number of applications created = 1
Example x. x.
5. Type ssomanage –enableapp <application name>, and then press Enter.
6. Verify the SSO Command Line Utility output.
Using SSO server on this computer
The operation completed successfully.
Example x. x.
To create, set and enable user mappings using the command line
You can use the SSO Administration MMC Snap-In or the SSO Command Line Utility to create, set and
enable one or more mappings, as specified by an XML file. In this task, you will create, set and enable a
mapping using the command line.
1. Click Start, click Run, type cmd, and then click OK.
2. At the command prompt, go to the Enterprise Single Sign-On installation directory. The default
installation directory is <drive>:\Program Files\Common Files\Enterprise Single Sign-On.
3. Type ssomanage –createmappings <mappings file name>, and then press Enter.
<sso>
<mapping>
<windowsDomain>domain</windowsDomain>
<windowsUserId>WindowsUserName</windowsUserId>
<externalApplication>Application name1</externalApplication>
Service for DRDA
Microsoft Corporation
Page 179
<externalUserId>App1UserName</externalUserId>
</mapping>
<mapping>
<windowsDomain>domain</windowsDomain>
<windowsUserId>WindowsUserName</windowsUserId>
<externalApplication>Application name2</externalApplication>
<externalUserId>App2UserName</externalUserId>
</mapping>
</sso>
Example x. x.
4. Verify the SSO Command Line Utility output.
Using SSO server on this computer
Created mapping in application 'HOST1' for user DOMAIN\user to
HISDEMO.
Example x. x.
5. Type ssomanage -setcredentials <Windows account name> <application name>, and then
press Enter. Enter password and connection string values at the command prompt.
6. Verify the SSO Command Line Utility output.
Using SSO server on this computer
User Id : HISDEMO
Password : *******
Confirm 'Password' : *******
The operation completed successfully.
Example x. x.
7. Type ssomanage –enablemapping <domain>\<username> <application name>, and then press
Enter.
8. Verify the SSO Command Line Utility output.
Using SSO server on this computer
The operation completed successfully.
Example x. x.
Service for DRDA
Microsoft Corporation
Page 180