Was this helpful?
SQL Server 2016 Multimode
SQL Server 2016 is a database application that you can connect to directly or through ODBC. This connector uses the SQL Server Native Client 11.0 ODBC driver, which must be installed on your system.
This connector allows you to perform multiple operations (Change Source or Target, table drops, table inserts, etc.) directly on your target database within the same transformation.
Connector-Specific Notes
Target Schema modification: In multimode targets, modifications to column names, data types, and sizes are not permitted.
Transaction Control: SQL Server 2016 does not allow mixing of API-level transaction control and Transact-SQL control. If you want explicit control of transactions, use Target Only (Unbound) mode, which does not use bind variables. The Target Only mode attempts to use bind variables for speed, which limits your ability to explicitly control of transactions.
Transaction Support: When a transformation starts, it is in AutoCommit mode (for example, every statement is considered a separate unit of work and is automatically committed). To operate in Explicit mode, do a BEGIN TRANSACTION statement. For Implicit mode, use a SET IMPLICIT_TRANSACTIONS ON Statement.
Property Options
You can set the following source (S) and target (T) properties.
Property
S/T
Description
AutoCommit
T
Allows you to automatically commit changes as they are made by each SQL statement, instead of waiting until the end of the transaction. If AutoCommit is set to true, there is no way to roll back changes once they have been made. The default is false.
Encoding
T
Translates user names and query statements to Unicode before passing them on to SQL Server. The default is OEM. For choices, see Source and Target Map Connectors.
Notes:
Shift-JIS encoding is meaningful only in Japanese operating systems.
This property is not the encoding of the database that you connect to, but rather the encoding in which the connector expects to receive SQL query statements to be sent to the database.
IdentifierQuotes
T
All databases have what are called quoted identifiers. You use these identifiers to make a SQL statement parseable and to distinguish between columns and character data in SQL statements. For example, Oracle uses double quotes for column and tables names in SQL statements and single quotes for character data. In a SQL statement, you should enclose identifiers containing special characters or match keywords in identifier quote characters; (also known as delimited identifiers in SQL-92). For example, the Accounts Receivable identifier is quoted in the following SELECT statement.
SELECT * FROM "Accounts Receivable"
If you do not use identifier quotes, the parser assumes there are two tables, Accounts and Receivable and returns a syntax error that they are not separated by a comma.
IdentifierQuotes has four options:
Default
None
"
'
MaxDataLength
T
Refers to the maximum data length for long data types. The default is 1 MB. You can reset this number as you choose based on your available memory capabilities and target data requirements.
Some ODBC drivers have limitations concerning the maximum data length they can handle. If you choose an application (ODBC) target connector and the default setting is not 1 MB, then Map Designer presets the default in respect for the capabilities of that particular ODBC driver. It is not recommended that you set this property higher under these conditions.
SQL Log
T
The default is sql.log in the default installation directory. To use a different log, browse to the file or enter the path and file name.
SQL Output
T
Allows you to select bound or unbound mode and whether or not to write SQL statements to a SQL log. Keep in mind that bound mode is faster as bind variables are used.
Available options:
Target Only (default) - Uses bound mode, which uses bind variables. SQL statements are sent to the target and not to the SQL log specified in the SQL Log property.
Target Only (Unbound mode) - Uses unbound mode, which does not use bind variables and sends the literal SQL statement to the database engine. SQL statements are sent to the target and not to the SQL log specified in the SQL Log property.
Target and SQL Log - Sends SQL statements to the target and to the SQL log specified in the SQL Log property.
SQL Log Only - Sends SQL statements only to the SQL log file specified in the SQL Log property.
SystemTables
T
If set to true, allows you to see all tables created by the DBA in the database. The system table names appear in the table list. Default is false.
TransactionIsolation
T
Allows you to specify isolation level when reading from or writing to a database table with ODBC. The default is serializable.
The ANSI SQL 2 standard defines three ways in which serializability of a transaction may be violated: P1 (Dirty Read), P2 (Nonrepeatable Read), and P3 (Phantoms).
The supported isolation levels are as follows:
read uncommitted - Permits P1, P2, and P3.
read committed - Permits P2 and P3. Does not permit P1.
repeatable read - Permits P3. Does not permit P1 and P2.
serializable - Does not permit any of P1, P2, and P3.
For further details about TransactionIsolation levels, see the Microsoft ODBC SDK documentation.
UpdateNullFields
T
Null values are sent to the database when inserting or updating records. The default is true. If you select false, null values are not sent to the database when inserting or updating record and the connector is forced to operate in unbound mode, which may cause slower performance.
Best Practice — If fields in the target record are not mapped, then the null values are passed to the target. If you do not want to write to these fields, then it is recommended to set the value for UpdateNullFields to False.
Views
T
If set to True, this property allows you to see the view names in the table list along with the table names. Default is True.
Note:  This property supports only Append and DeleteAndAppend output modes and does not support the Replace output mode.
Data Types
SQL Server 2016 Multi-mode connector supports the following data types:
Exact numerics:
bigint
numeric
bit
smallint
decimal
smallmoney
int
tinyint
money
Note:  The bigint identity, decimal() identity, numeric() identity, smallint identity, and tinyint identity data types are Id numbers that are read-only and cannot be used as target.
Approximate numerics:
float
real
Date and time:
date
datetimeoffset
datetime2
smalldatetime
datetime
time
timestamp
Character strings:
char
varchar
text
Unicode character strings:
nchar
nvarchar
ntext
Binary strings:
binary
varbinary
image
Other data types:
uniqueidentifier
sql_variant
xml
sysname
Note:  timestamp, uniqueidentifier, and sysname are read-only and system generated. Hence, cannot be used as target.
Additional Information
Rowversion, timestamp, and sysname datatypes are automatically generated identifiers and hence cannot be used as target fields.
Note:  Timestamp data type is deprecated.
Id datatypes such as bigint identity, decimal identity, int identity, numeric identity, smallint identity, and tinyint identity are automatically generated numbers and cannot be used as target fields.
Last modified date: 08/02/2023