tedious
- Version 18.6.1
- Published
- 3.44 MB
- 10 dependencies
- MIT license
Install
npm i tedious
yarn add tedious
pnpm add tedious
Overview
A TDS driver, for connecting to MS SQLServer databases.
Index
Variables
Functions
Classes
Connection
- beginTransaction()
- callProcedure()
- cancel()
- cancelTimeout()
- cancelTimer
- cleanupConnection()
- clearCancelTimer()
- clearConnectTimer()
- clearRequestTimer()
- clearRetryTimer()
- close()
- closeConnection()
- closed
- commitTransaction()
- config
- connect()
- connectOnPort()
- connectTimeout()
- connectTimer
- createCancelTimer()
- createConnectTimer()
- createDebug()
- createRequestTimer()
- createRetryTimer()
- createTokenStreamParser()
- currentTransactionDescriptor()
- curTransientRetryCount
- databaseCollation
- debug
- dispatchEvent()
- emit()
- execBulkLoad()
- execSql()
- execSqlBatch()
- execute()
- fedAuthRequired
- getEventHandler()
- getInitialSql()
- getIsolationLevelText()
- initialiseConnection()
- inTransaction
- isSqlBatch
- loginError
- makeRequest()
- messageBuffer
- messageIo
- newBulkLoad()
- ntlmpacket
- ntlmpacketBuffer
- on()
- prepare()
- processedInitialSql()
- procReturnStatusValue
- request
- requestTimeout()
- requestTimer
- reset()
- resetConnectionOnNextRequest
- retryTimeout()
- retryTimer
- rollbackTransaction()
- routingData
- saveTransaction()
- secureContextOptions
- sendFedAuthTokenMessage()
- sendInitialSql()
- sendLogin7Packet()
- sendPreLogin()
- socket
- socketClose()
- socketEnd()
- socketError()
- socketHandlingForSendPreLogin()
- state
- STATE
- transaction()
- transactionDepth
- transactionDescriptors
- transientErrorLookup
- transitionTo()
- unprepare()
- wrapWithTls()
Request
- addOutputParameter()
- addParameter()
- callback
- cancel()
- canceled
- connection
- cryptoMetadataLoaded
- emit()
- error
- handle
- makeParamsParameter()
- on()
- parameters
- parametersByName
- pause()
- paused
- preparing
- resume()
- rowCount
- rows
- rst
- setTimeout()
- shouldHonorAE
- sqlTextOrProcedure
- statementColumnEncryptionSetting
- timeout
- userCallback
- validateParameters()
Interfaces
ConnectionOptions
- abortTransactionOnError
- appName
- camelCaseColumns
- cancelTimeout
- columnNameReplacer
- connectionIsolationLevel
- connectionRetryInterval
- connector
- connectTimeout
- cryptoCredentialsDetails
- database
- datefirst
- dateFormat
- debug
- enableAnsiNull
- enableAnsiNullDefault
- enableAnsiPadding
- enableAnsiWarnings
- enableArithAbort
- enableConcatNullYieldsNull
- enableCursorCloseOnCommit
- enableImplicitTransactions
- enableNumericRoundabort
- enableQuotedIdentifier
- encrypt
- fallbackToDefaultDb
- instanceName
- isolationLevel
- language
- localAddress
- lowerCaseGuids
- maxRetriesOnTransientErrors
- multiSubnetFailover
- packetSize
- port
- readOnlyIntent
- requestTimeout
- rowCollectionOnDone
- rowCollectionOnRequestCompletion
- serverName
- tdsVersion
- textsize
- trustServerCertificate
- useColumnNames
- useUTC
- workstationId
Type Aliases
Namespaces
Variables
variable ISOLATION_LEVEL
const ISOLATION_LEVEL: { [key: string]: number };
variable library
const library: { name: string };
variable TDS_VERSION
const TDS_VERSION: { [key: string]: number };
variable TYPES
const TYPES: { TinyInt: DataType; Bit: DataType; SmallInt: DataType; Int: DataType; SmallDateTime: DataType; Real: DataType; Money: DataType; DateTime: DataType; Float: DataType; Decimal: DataType & { resolvePrecision: NonNullable<DataType['resolvePrecision']>; resolveScale: NonNullable<DataType['resolveScale']>; }; Numeric: DataType & { resolveScale: NonNullable<DataType['resolveScale']>; resolvePrecision: NonNullable<DataType['resolvePrecision']>; }; SmallMoney: DataType; BigInt: DataType; Image: DataType; Text: DataType; UniqueIdentifier: DataType; NText: DataType; VarBinary: { maximumLength: number } & DataType; VarChar: { maximumLength: number } & DataType; Binary: { maximumLength: number } & DataType; Char: { maximumLength: number } & DataType; NVarChar: { maximumLength: number } & DataType; NChar: DataType & { maximumLength: number }; Xml: DataType; Time: DataType; Date: DataType; DateTime2: DataType & { resolveScale: NonNullable<DataType['resolveScale']> }; DateTimeOffset: DataType & { resolveScale: NonNullable<DataType['resolveScale']>; }; UDT: DataType; TVP: DataType; Variant: DataType;};
Type Constant JavaScript Result set Parameter
Exact numerics bit [[TYPES.Bit]] boolean ✓ ✓ tinyint [[TYPES.TinyInt]] number ✓ ✓ smallint [[TYPES.SmallInt]] number ✓ ✓ int [[TYPES.Int]] number ✓ ✓ bigint1 [[TYPES.BigInt]] string ✓ ✓ numeric2 [[TYPES.Numeric]] number ✓ ✓ decimal2 [[TYPES.Decimal]] number ✓ ✓ smallmoney [[TYPES.SmallMoney]] number ✓ ✓ money [[TYPES.Money]] number ✓ ✓
Approximate numerics float [[TYPES.Float]] number ✓ ✓ real [[TYPES.Real]] number ✓ ✓
Date and Time smalldatetime [[TYPES.SmallDateTime]] Date ✓ ✓ datetime [[TYPES.DateTime]] Date ✓ ✓ datetime2 [[TYPES.DateTime2]] Date ✓ ✓ datetimeoffset [[TYPES.DateTimeOffset]] Date ✓ ✓ time [[TYPES.Time]] Date ✓ ✓ date [[TYPES.Date]] Date ✓ ✓
Character Strings char [[TYPES.Char]] string ✓ ✓ varchar3 [[TYPES.VarChar]] string ✓ ✓ text [[TYPES.Text]] string ✓ ✓
Unicode Strings nchar [[TYPES.NChar]] string ✓ ✓ nvarchar3 [[TYPES.NVarChar]] string ✓ ✓ ntext [[TYPES.NText]] string ✓ -
Binary Strings4 binary [[TYPES.Binary]] Buffer ✓ ✓ varbinary [[TYPES.VarBinary]] Buffer ✓ ✓ image [[TYPES.Image]] Buffer ✓ ✓
Other Data Types TVP [[TYPES.TVP]] Object - ✓ UDT [[TYPES.UDT]] Buffer ✓ - uniqueidentifier4 [[TYPES.UniqueIdentifier]] string ✓ ✓ variant [[TYPES.Variant]] any ✓ - xml [[TYPES.Xml]] string ✓ -
BigInt Values are returned as a string. This is because values can exceed 53 bits of significant data, which is greater than a Javascript number type can represent as an integer. Numerical, Decimal For input parameters, default precision is 18 and default scale is 0. Maximum supported precision is 19. VarChar, NVarChar varchar(max) and nvarchar(max) are also supported. UniqueIdentifier Values are returned as a 16 byte hexadecimal string. Note that the order of bytes is not the same as the character representation. See Using uniqueidentifier Data for an example of the different ordering of bytes.
Functions
function connect
connect: ( config: ConnectionConfiguration, connectListener?: (err?: Error) => void) => Connection;
Classes
class BulkLoad
class BulkLoad extends EventEmitter {}
A BulkLoad instance is used to perform a bulk insert.
Use [[Connection.newBulkLoad]] to create a new instance, and [[Connection.execBulkLoad]] to execute it.
Example of BulkLoad Usages:
// optional BulkLoad optionsconst options = { keepNulls: true };// instantiate - provide the table where you'll be inserting to, options and a callbackconst bulkLoad = connection.newBulkLoad('MyTable', options, (error, rowCount) => {console.log('inserted %d rows', rowCount);});// setup your columns - always indicate whether the column is nullablebulkLoad.addColumn('myInt', TYPES.Int, { nullable: false });bulkLoad.addColumn('myString', TYPES.NVarChar, { length: 50, nullable: true });// executeconnection.execBulkLoad(bulkLoad, [{ myInt: 7, myString: 'hello' },{ myInt: 23, myString: 'world' }]);
constructor
constructor( table: string, collation: Collation, connectionOptions: InternalConnectionOptions, { checkConstraints, fireTriggers, keepNulls, lockTable, order }: Options, callback: Callback);
property bulkOptions
bulkOptions: InternalOptions;
property callback
callback: Callback;
property canceled
canceled: boolean;
property collation
collation: Collation;
property columns
columns: Column[];
property columnsByName
columnsByName: { [name: string]: Column };
property connection
connection: Connection;
property error
error: Error;
property executionStarted
executionStarted: boolean;
property firstRowWritten
firstRowWritten: boolean;
property options
options: InternalConnectionOptions;
property rowCount
rowCount: number;
property rows
rows: any[];
property rowToPacketTransform
rowToPacketTransform: RowTransform;
property rst
rst: any[];
property streamingMode
streamingMode: boolean;
property table
table: string;
property timeout
timeout: number;
method addColumn
addColumn: ( name: string, type: DataType, { output, length, precision, scale, objName, nullable }: ColumnOptions) => void;
Adds a column to the bulk load.
The column definitions should match the table you are trying to insert into. Attempting to call addColumn after the first row has been added will throw an exception.
bulkLoad.addColumn('MyIntColumn', TYPES.Int, { nullable: false });Parameter name
The name of the column.
Parameter type
One of the supported
data types
.Parameter __namedParameters
Additional column type information. At a minimum,
nullable
must be set to true or false.Parameter length
For VarChar, NVarChar, VarBinary. Use length as
Infinity
for VarChar(max), NVarChar(max) and VarBinary(max).Parameter nullable
Indicates whether the column accepts NULL values.
Parameter objName
If the name of the column is different from the name of the property found on
rowObj
arguments passed to [[addRow]] or [[Connection.execBulkLoad]], then you can use this option to specify the property name.Parameter precision
For Numeric, Decimal.
Parameter scale
For Numeric, Decimal, Time, DateTime2, DateTimeOffset.
method cancel
cancel: () => void;
method createDoneToken
createDoneToken: () => Buffer;
method getBulkInsertSql
getBulkInsertSql: () => string;
method getColMetaData
getColMetaData: () => Buffer;
method getOptionsSql
getOptionsSql: () => string;
method getTableCreationSql
getTableCreationSql: () => string;
This is simply a helper utility function which returns a
CREATE TABLE SQL
statement based on the columns added to the bulkLoad object. This may be particularly handy when you want to insert into a temporary table (a table which starts with#
).var sql = bulkLoad.getTableCreationSql();A side note on bulk inserting into temporary tables: if you want to access a local temporary table after executing the bulk load, you'll need to use the same connection and execute your requests using [[Connection.execSqlBatch]] instead of [[Connection.execSql]]
method setTimeout
setTimeout: (timeout?: number) => void;
Sets a timeout for this bulk load.
bulkLoad.setTimeout(timeout);Parameter timeout
The number of milliseconds before the bulk load is considered failed, or 0 for no timeout. When no timeout is set for the bulk load, the [[ConnectionOptions.requestTimeout]] of the Connection is used.
class Connection
class Connection extends EventEmitter {}
A [[Connection]] instance represents a single connection to a database server.
var Connection = require('tedious').Connection;var config = {"authentication": {...,"options": {...}},"options": {...}};var connection = new Connection(config);Only one request at a time may be executed on a connection. Once a [[Request]] has been initiated (with [[Connection.callProcedure]], [[Connection.execSql]], or [[Connection.execSqlBatch]]), another should not be initiated until the [[Request]]'s completion callback is called.
constructor
constructor(config: ConnectionConfiguration);
Note: be aware of the different options field: 1. config.authentication.options 2. config.options
const { Connection } = require('tedious');const config = {"authentication": {...,"options": {...}},"options": {...}};const connection = new Connection(config);Parameter config
property cancelTimer
cancelTimer: any;
property closed
closed: boolean;
property config
config: InternalConnectionConfig;
property connectTimer
connectTimer: any;
property curTransientRetryCount
curTransientRetryCount: number;
property databaseCollation
databaseCollation: Collation;
property debug
debug: Debug;
property fedAuthRequired
fedAuthRequired: boolean;
property inTransaction
inTransaction: boolean;
property isSqlBatch
isSqlBatch: boolean;
property loginError
loginError: AggregateError | ConnectionError;
property messageBuffer
messageBuffer: Buffer;
property messageIo
messageIo: MessageIO;
property ntlmpacket
ntlmpacket: any;
property ntlmpacketBuffer
ntlmpacketBuffer: any;
property procReturnStatusValue
procReturnStatusValue: any;
property request
request: Request | BulkLoad;
property requestTimer
requestTimer: any;
property resetConnectionOnNextRequest
resetConnectionOnNextRequest: boolean;
property retryTimer
retryTimer: any;
property routingData
routingData: RoutingData;
property secureContextOptions
secureContextOptions: SecureContextOptions;
property socket
socket: any;
property state
state: State;
property STATE
STATE: { INITIALIZED: State; CONNECTING: State; SENT_PRELOGIN: State; REROUTING: State; TRANSIENT_FAILURE_RETRY: State; SENT_TLSSSLNEGOTIATION: State; SENT_LOGIN7_WITH_STANDARD_LOGIN: State; SENT_LOGIN7_WITH_NTLM: State; SENT_LOGIN7_WITH_FEDAUTH: State; LOGGED_IN_SENDING_INITIAL_SQL: State; LOGGED_IN: State; SENT_CLIENT_REQUEST: State; SENT_ATTENTION: State; FINAL: State;};
property transactionDepth
transactionDepth: number;
property transactionDescriptors
transactionDescriptors: Buffer[];
property transientErrorLookup
transientErrorLookup: TransientErrorLookup;
method beginTransaction
beginTransaction: ( callback: BeginTransactionCallback, name?: string, isolationLevel?: number) => void;
Start a transaction.
Parameter callback
Parameter name
A string representing a name to associate with the transaction. Optional, and defaults to an empty string. Required when
isolationLevel
is present.Parameter isolationLevel
The isolation level that the transaction is to be run with.
The isolation levels are available from
require('tedious').ISOLATION_LEVEL
. *READ_UNCOMMITTED
*READ_COMMITTED
*REPEATABLE_READ
*SERIALIZABLE
*SNAPSHOT
Optional, and defaults to the Connection's isolation level.
method callProcedure
callProcedure: (request: Request) => void;
Call a stored procedure represented by [[Request]].
Parameter request
A [[Request]] object representing the request.
method cancel
cancel: () => boolean;
Cancel currently executed request.
method cancelTimeout
cancelTimeout: () => void;
method cleanupConnection
cleanupConnection: ( cleanupType: (typeof CLEANUP_TYPE)[keyof typeof CLEANUP_TYPE]) => void;
method clearCancelTimer
clearCancelTimer: () => void;
method clearConnectTimer
clearConnectTimer: () => void;
method clearRequestTimer
clearRequestTimer: () => void;
method clearRetryTimer
clearRetryTimer: () => void;
method close
close: () => void;
Closes the connection to the database.
The [[Event_end]] will be emitted once the connection has been closed.
method closeConnection
closeConnection: () => void;
method commitTransaction
commitTransaction: (callback: CommitTransactionCallback, name?: string) => void;
Commit a transaction.
There should be an active transaction - that is, [[beginTransaction]] should have been previously called.
Parameter callback
Parameter name
A string representing a name to associate with the transaction. Optional, and defaults to an empty string. Required when
isolationLevel
is present.
method connect
connect: (connectListener?: (err?: Error) => void) => void;
method connectOnPort
connectOnPort: ( port: number, multiSubnetFailover: boolean, signal: AbortSignal, customConnector?: () => Promise<net.Socket>) => void;
method connectTimeout
connectTimeout: () => void;
method createCancelTimer
createCancelTimer: () => void;
method createConnectTimer
createConnectTimer: () => AbortSignal;
method createDebug
createDebug: () => Debug;
method createRequestTimer
createRequestTimer: () => void;
method createRetryTimer
createRetryTimer: () => void;
method createTokenStreamParser
createTokenStreamParser: ( message: Message, handler: TokenHandler) => TokenStreamParser;
method currentTransactionDescriptor
currentTransactionDescriptor: () => Buffer;
method dispatchEvent
dispatchEvent: < T extends | 'retry' | 'socketError' | 'connectTimeout' | 'message' | 'reconnect'>( eventName: T, ...args: Parameters<NonNullable<State['events'][T]>>) => void;
method emit
emit: { (event: 'charsetChange', charset: string): boolean; (event: 'connect', error?: Error): boolean; (event: 'databaseChange', databaseName: string): boolean; (event: 'debug', messageText: string): boolean; (event: 'error', error: Error): boolean; (event: 'errorMessage', message: ErrorMessageToken): boolean; (event: 'end'): boolean; (event: 'infoMessage', message: InfoMessageToken): boolean; (event: 'languageChange', languageName: string): boolean; (event: 'secure', cleartext: any): boolean; (event: 'rerouting'): boolean; (event: 'resetConnection'): boolean; (event: 'retry'): boolean; (event: 'rollbackTransaction'): boolean;};
method execBulkLoad
execBulkLoad: ( bulkLoad: BulkLoad, rows: | AsyncIterable<unknown[] | { [columnName: string]: unknown }> | Iterable<unknown[] | { [columnName: string]: unknown }>) => void;
Execute a [[BulkLoad]].
// We want to perform a bulk load into a table with the following format:// CREATE TABLE employees (first_name nvarchar(255), last_name nvarchar(255), day_of_birth date);const bulkLoad = connection.newBulkLoad('employees', (err, rowCount) => {// ...});// First, we need to specify the columns that we want to write to,// and their definitions. These definitions must match the actual table,// otherwise the bulk load will fail.bulkLoad.addColumn('first_name', TYPES.NVarchar, { nullable: false });bulkLoad.addColumn('last_name', TYPES.NVarchar, { nullable: false });bulkLoad.addColumn('date_of_birth', TYPES.Date, { nullable: false });// Execute a bulk load with a predefined list of rows.//// Note that these rows are held in memory until the// bulk load was performed, so if you need to write a large// number of rows (e.g. by reading from a CSV file),// passing an `AsyncIterable` is advisable to keep memory usage low.connection.execBulkLoad(bulkLoad, [{ 'first_name': 'Steve', 'last_name': 'Jobs', 'day_of_birth': new Date('02-24-1955') },{ 'first_name': 'Bill', 'last_name': 'Gates', 'day_of_birth': new Date('10-28-1955') }]);Parameter bulkLoad
A previously created [[BulkLoad]].
Parameter rows
A [[Iterable]] or [[AsyncIterable]] that contains the rows that should be bulk loaded.
method execSql
execSql: (request: Request) => void;
Execute the SQL represented by [[Request]].
As
sp_executesql
is used to execute the SQL, if the same SQL is executed multiples times using this function, the SQL Server query optimizer is likely to reuse the execution plan it generates for the first execution. This may also result in SQL server treating the request like a stored procedure which can result in the [[Event_doneInProc]] or [[Event_doneProc]] events being emitted instead of the [[Event_done]] event you might expect. Using [[execSqlBatch]] will prevent this from occurring but may have a negative performance impact.Beware of the way that scoping rules apply, and how they may [affect local temp tables](http://weblogs.sqlteam.com/mladenp/archive/2006/11/03/17197.aspx) If you're running in to scoping issues, then [[execSqlBatch]] may be a better choice. See also [issue #24](https://github.com/pekim/tedious/issues/24)
Parameter request
A [[Request]] object representing the request.
method execSqlBatch
execSqlBatch: (request: Request) => void;
Execute the SQL batch represented by [[Request]]. There is no param support, and unlike [[Request.execSql]], it is not likely that SQL Server will reuse the execution plan it generates for the SQL.
In almost all cases, [[Request.execSql]] will be a better choice.
Parameter request
A [[Request]] object representing the request.
method execute
execute: (request: Request, parameters?: { [key: string]: unknown }) => void;
Execute previously prepared SQL, using the supplied parameters.
Parameter request
A previously prepared [[Request]].
Parameter parameters
An object whose names correspond to the names of parameters that were added to the [[Request]] before it was prepared. The object's values are passed as the parameters' values when the request is executed.
method getEventHandler
getEventHandler: < T extends | 'retry' | 'socketError' | 'connectTimeout' | 'message' | 'reconnect'>( eventName: T) => NonNullable<State['events'][T]>;
method getInitialSql
getInitialSql: () => string;
method getIsolationLevelText
getIsolationLevelText: ( isolationLevel: (typeof ISOLATION_LEVEL)[keyof typeof ISOLATION_LEVEL]) => | 'read uncommitted' | 'repeatable read' | 'serializable' | 'snapshot' | 'read committed';
method initialiseConnection
initialiseConnection: () => void | Promise<void>;
method makeRequest
makeRequest: ( request: Request | BulkLoad, packetType: number, payload: (Iterable<Buffer> | AsyncIterable<Buffer>) & { toString: (indent?: string) => string; }) => void;
method newBulkLoad
newBulkLoad: { (table: string, callback: BulkLoadCallback): BulkLoad; ( table: string, options: BulkLoadOptions, callback: BulkLoadCallback ): BulkLoad;};
Creates a new BulkLoad instance.
Parameter table
The name of the table to bulk-insert into.
Parameter options
A set of bulk load options.
method on
on: { (event: 'charsetChange', listener: (charset: string) => void): this; (event: 'connect', listener: (err: Error) => void): this; (event: 'databaseChange', listener: (databaseName: string) => void): this; (event: 'debug', listener: (messageText: string) => void): this; (event: 'error', listener: (err: Error) => void): this; ( event: 'errorMessage', listener: (message: ErrorMessageToken) => void ): this; (event: 'end', listener: () => void): this; (event: 'infoMessage', listener: (message: InfoMessageToken) => void): this; (event: 'languageChange', listener: (languageName: string) => void): this; (event: 'resetConnection', listener: () => void): this; (event: 'secure', listener: (cleartext: any) => void): this;};
The server has reported that the charset has changed.
The attempt to connect and validate has completed.
The server has reported that the active database has changed. This may be as a result of a successful login, or a
use
statement.A debug message is available. It may be logged or ignored.
Internal error occurs.
The server has issued an error message.
The connection has ended.
This may be as a result of the client calling [[close]], the server closing the connection, or a network error.
The server has issued an information message.
The server has reported that the language has changed.
The connection was reset.
A secure connection has been established.
method prepare
prepare: (request: Request) => void;
Prepare the SQL represented by the request.
The request can then be used in subsequent calls to [[execute]] and [[unprepare]]
Parameter request
A [[Request]] object representing the request. Parameters only require a name and type. Parameter values are ignored.
method processedInitialSql
processedInitialSql: () => void;
method requestTimeout
requestTimeout: () => void;
method reset
reset: (callback: ResetCallback) => void;
Reset the connection to its initial state. Can be useful for connection pool implementations.
Parameter callback
method retryTimeout
retryTimeout: () => void;
method rollbackTransaction
rollbackTransaction: ( callback: RollbackTransactionCallback, name?: string) => void;
Rollback a transaction.
There should be an active transaction - that is, [[beginTransaction]] should have been previously called.
Parameter callback
Parameter name
A string representing a name to associate with the transaction. Optional, and defaults to an empty string. Required when
isolationLevel
is present.
method saveTransaction
saveTransaction: (callback: SaveTransactionCallback, name: string) => void;
Set a savepoint within a transaction.
There should be an active transaction - that is, [[beginTransaction]] should have been previously called.
Parameter callback
Parameter name
A string representing a name to associate with the transaction.\ Optional, and defaults to an empty string. Required when
isolationLevel
is present.
method sendFedAuthTokenMessage
sendFedAuthTokenMessage: (token: string) => void;
method sendInitialSql
sendInitialSql: () => void;
method sendLogin7Packet
sendLogin7Packet: () => void;
method sendPreLogin
sendPreLogin: () => void;
method socketClose
socketClose: () => void;
method socketEnd
socketEnd: () => void;
method socketError
socketError: (error: Error) => void;
method socketHandlingForSendPreLogin
socketHandlingForSendPreLogin: (socket: net.Socket) => void;
method transaction
transaction: ( cb: ( err: Error | null | undefined, txDone?: <T extends TransactionDoneCallback>( err: Error | null | undefined, done: T, ...args: CallbackParameters<T> ) => void ) => void, isolationLevel?: (typeof ISOLATION_LEVEL)[keyof typeof ISOLATION_LEVEL]) => void;
Run the given callback after starting a transaction, and commit or rollback the transaction afterwards.
This is a helper that employs [[beginTransaction]], [[commitTransaction]], [[rollbackTransaction]], and [[saveTransaction]] to greatly simplify the use of database transactions and automatically handle transaction nesting.
Parameter cb
Parameter isolationLevel
The isolation level that the transaction is to be run with.
The isolation levels are available from
require('tedious').ISOLATION_LEVEL
. *READ_UNCOMMITTED
*READ_COMMITTED
*REPEATABLE_READ
*SERIALIZABLE
*SNAPSHOT
Optional, and defaults to the Connection's isolation level.
method transitionTo
transitionTo: (newState: State) => void;
method unprepare
unprepare: (request: Request) => void;
Release the SQL Server resources associated with a previously prepared request.
Parameter request
A [[Request]] object representing the request. Parameters only require a name and type. Parameter values are ignored.
method wrapWithTls
wrapWithTls: (socket: net.Socket, signal: AbortSignal) => Promise<tls.TLSSocket>;
class ConnectionError
class ConnectionError extends Error {}
constructor
constructor(message: string, code?: string, options?: ErrorOptions);
property code
code: string;
property isTransient
isTransient: boolean;
class Request
class Request extends EventEmitter {}
- const { Request } = require('tedious');const request = new Request("select 42, 'hello world'", (err, rowCount) {// Request completion callback...});connection.execSql(request);
constructor
constructor( sqlTextOrProcedure: string, callback: CompletionCallback, options?: RequestOptions);
Parameter sqlTextOrProcedure
The SQL statement to be executed
Parameter callback
The callback to execute once the request has been fully completed.
property callback
callback: CompletionCallback;
property canceled
canceled: boolean;
property connection
connection: Connection;
property cryptoMetadataLoaded
cryptoMetadataLoaded: boolean;
property error
error: Error;
property handle
handle: number;
property parameters
parameters: Parameter[];
property parametersByName
parametersByName: { [key: string]: Parameter };
property paused
paused: boolean;
property preparing
preparing: boolean;
property rowCount
rowCount?: number;
property rows
rows?: any[];
property rst
rst?: any[];
property shouldHonorAE
shouldHonorAE?: boolean;
property sqlTextOrProcedure
sqlTextOrProcedure: string;
property statementColumnEncryptionSetting
statementColumnEncryptionSetting: SQLServerStatementColumnEncryptionSetting;
property timeout
timeout: number;
property userCallback
userCallback: CompletionCallback;
method addOutputParameter
addOutputParameter: ( name: string, type: DataType, value?: unknown, options?: Readonly<ParameterOptions> | null) => void;
Parameter name
The parameter name. This should correspond to a parameter in the SQL, or a parameter that a called procedure expects.
Parameter type
One of the supported data types.
Parameter value
The value that the parameter is to be given. The Javascript type of the argument should match that documented for data types
Parameter options
Additional type options. Optional.
method addParameter
addParameter: ( name: string, type: DataType, value?: unknown, options?: Readonly<ParameterOptions> | null) => void;
Parameter name
The parameter name. This should correspond to a parameter in the SQL, or a parameter that a called procedure expects. The name should not start with
@
.Parameter type
One of the supported data types.
Parameter value
The value that the parameter is to be given. The Javascript type of the argument should match that documented for data types.
Parameter options
Additional type options. Optional.
method cancel
cancel: () => void;
Cancels a request while waiting for a server response.
method emit
emit: { ( event: 'columnMetadata', columns: ColumnMetadata[] | { [key: string]: ColumnMetadata } ): boolean; (event: 'prepared'): boolean; (event: 'error', err: Error): boolean; (event: 'row', columns: any): boolean; (event: 'done', rowCount: number, more: boolean, rst?: any[]): boolean; (event: 'doneInProc', rowCount: number, more: boolean, rst?: any[]): boolean; ( event: 'doneProc', rowCount: number, more: boolean, procReturnStatusValue: number, rst?: any[] ): boolean; ( event: 'returnValue', parameterName: string, value: unknown, metadata: Metadata ): boolean; (event: 'requestCompleted'): boolean; (event: 'cancel'): boolean; (event: 'pause'): boolean; (event: 'resume'): boolean; (event: 'order', orderColumns: number[]): boolean;};
method makeParamsParameter
makeParamsParameter: (parameters: Parameter[]) => string;
method on
on: { ( event: 'columnMetadata', listener: ( columns: ColumnMetadata[] | { [key: string]: ColumnMetadata } ) => void ): this; (event: 'prepared', listener: () => void): this; (event: 'error', listener: (err: Error) => void): this; (event: 'row', listener: (columns: any) => void): this; ( event: 'done', listener: (rowCount: number, more: boolean, rst?: any[]) => void ): this; ( event: 'doneInProc', listener: (rowCount: number, more: boolean, rst?: any[]) => void ): this; ( event: 'doneProc', listener: ( rowCount: number, more: boolean, procReturnStatusValue: number, rst?: any[] ) => void ): this; ( event: 'returnValue', listener: ( parameterName: string, value: unknown, metadata: Metadata ) => void ): this; (event: 'order', listener: (orderColumns: number[]) => void): this; (event: 'requestCompleted', listener: () => void): this; (event: 'cancel', listener: () => void): this; (event: 'pause', listener: () => void): this; (event: 'resume', listener: () => void): this;};
This event, describing result set columns, will be emitted before row events are emitted. This event may be emitted multiple times when more than one recordset is produced by the statement.
An array like object, where the columns can be accessed either by index or name. Columns with a name that is an integer are not accessible by name, as it would be interpreted as an array index.
The request has been prepared and can be used in subsequent calls to execute and unprepare.
The request encountered an error and has not been prepared.
A row resulting from execution of the SQL statement.
All rows from a result set have been provided (through
row
events).This token is used to indicate the completion of a SQL statement. As multiple SQL statements can be sent to the server in a single SQL batch, multiple
done
can be generated. Andone
event is emitted for each SQL statement in the SQL batch except variable declarations. For execution of SQL statements within stored procedures,doneProc
anddoneInProc
events are used in place ofdone
.If you are using [[Connection.execSql]] then SQL server may treat the multiple calls with the same query as a stored procedure. When this occurs, the
doneProc
anddoneInProc
events may be emitted instead. You must handle both events to ensure complete coverage.request.on('doneInProc', function (rowCount, more, rows) { });
Indicates the completion status of a SQL statement within a stored procedure. All rows from a statement in a stored procedure have been provided (through
row
events).This event may also occur when executing multiple calls with the same query using [[execSql]].
Indicates the completion status of a stored procedure. This is also generated for stored procedures executed through SQL statements.\ This event may also occur when executing multiple calls with the same query using [[execSql]].
A value for an output parameter (that was added to the request with [[addOutputParameter]]). See also
Using Parameters
.This event gives the columns by which data is ordered, if
ORDER BY
clause is executed in SQL Server.
method pause
pause: () => void;
Temporarily suspends the flow of data from the database. No more
row
events will be emitted until [[resume] is called. If this request is already in a paused state, calling [[pause]] has no effect.
method resume
resume: () => void;
Resumes the flow of data from the database. If this request is not in a paused state, calling [[resume]] has no effect.
method setTimeout
setTimeout: (timeout?: number) => void;
Sets a timeout for this request.
Parameter timeout
The number of milliseconds before the request is considered failed, or
0
for no timeout. When no timeout is set for the request, the [[ConnectionOptions.requestTimeout]] of the [[Connection]] is used.
method validateParameters
validateParameters: (collation: Collation | undefined) => void;
class RequestError
class RequestError extends Error {}
constructor
constructor(message: string, code?: string, options?: ErrorOptions);
property class
class: number;
property code
code: string;
property lineNumber
lineNumber: number;
property number
number: number;
property procName
procName: string;
property serverName
serverName: string;
property state
state: number;
Interfaces
interface ConnectionConfiguration
interface ConnectionConfiguration {}
property authentication
authentication?: AuthenticationOptions;
Authentication related options for connection.
property options
options?: ConnectionOptions;
Configuration options for forming the connection.
property server
server: string;
Hostname to connect to.
interface ConnectionOptions
interface ConnectionOptions {}
property abortTransactionOnError
abortTransactionOnError?: boolean | undefined;
A boolean determining whether to rollback a transaction automatically if any error is encountered during the given transaction's execution. This sets the value for
SET XACT_ABORT
during the initial SQL phase of a connection [documentation](https://docs.microsoft.com/en-us/sql/t-sql/statements/set-xact-abort-transact-sql).
property appName
appName?: string | undefined;
Application name used for identifying a specific application in profiling, logging or tracing tools of SQLServer.
(default:
Tedious
)
property camelCaseColumns
camelCaseColumns?: boolean;
A boolean, controlling whether the column names returned will have the first letter converted to lower case (
true
) or not. This value is ignored if you provide a [[columnNameReplacer]].(default:
false
).
property cancelTimeout
cancelTimeout?: number;
The number of milliseconds before the [[Request.cancel]] (abort) of a request is considered failed
(default:
5000
).
property columnNameReplacer
columnNameReplacer?: ( colName: string, index: number, metadata: Metadata) => string;
A function with parameters
(columnName, index, columnMetaData)
and returning a string. If provided, this will be called once per column per result-set. The returned value will be used instead of the SQL-provided column name on row and meta data objects. This allows you to dynamically convert between naming conventions.(default:
null
)
property connectionIsolationLevel
connectionIsolationLevel?: number;
The default isolation level for new connections. All out-of-transaction queries are executed with this setting.
The isolation levels are available from
require('tedious').ISOLATION_LEVEL
. *READ_UNCOMMITTED
*READ_COMMITTED
*REPEATABLE_READ
*SERIALIZABLE
*SNAPSHOT
(default:
READ_COMMITED
).
property connectionRetryInterval
connectionRetryInterval?: number;
Number of milliseconds before retrying to establish connection, in case of transient failure.
(default:
500
)
property connector
connector?: () => Promise<net.Socket>;
Custom connector factory method.
(default:
undefined
)
property connectTimeout
connectTimeout?: number;
The number of milliseconds before the attempt to connect is considered failed
(default:
15000
).
property cryptoCredentialsDetails
cryptoCredentialsDetails?: SecureContextOptions;
When encryption is used, an object may be supplied that will be used for the first argument when calling [
tls.createSecurePair
](http://nodejs.org/docs/latest/api/tls.html#tls_tls_createsecurepair_credentials_isserver_requestcert_rejectunauthorized)(default:
{}
)
property database
database?: string | undefined;
Database to connect to (default: dependent on server configuration).
property datefirst
datefirst?: number;
Sets the first day of the week to a number from 1 through 7.
property dateFormat
dateFormat?: string;
A string representing position of month, day and year in temporal datatypes.
(default:
mdy
)
property debug
debug?: DebugOptions;
property enableAnsiNull
enableAnsiNull?: boolean;
A boolean, controls the way null values should be used during comparison operation.
(default:
true
)
property enableAnsiNullDefault
enableAnsiNullDefault?: boolean;
If true,
SET ANSI_NULL_DFLT_ON ON
will be set in the initial sql. This means new columns will be nullable by default. See the [T-SQL documentation](https://msdn.microsoft.com/en-us/library/ms187375.aspx)(default:
true
).
property enableAnsiPadding
enableAnsiPadding?: boolean;
A boolean, controls if padding should be applied for values shorter than the size of defined column.
(default:
true
)
property enableAnsiWarnings
enableAnsiWarnings?: boolean;
If true, SQL Server will follow ISO standard behavior during various error conditions. For details, see [documentation](https://docs.microsoft.com/en-us/sql/t-sql/statements/set-ansi-warnings-transact-sql)
(default:
true
)
property enableArithAbort
enableArithAbort?: boolean;
Ends a query when an overflow or divide-by-zero error occurs during query execution. See [documentation](https://docs.microsoft.com/en-us/sql/t-sql/statements/set-arithabort-transact-sql?view=sql-server-2017) for more details.
(default:
true
)
property enableConcatNullYieldsNull
enableConcatNullYieldsNull?: boolean;
A boolean, determines if concatenation with NULL should result in NULL or empty string value, more details in [documentation](https://docs.microsoft.com/en-us/sql/t-sql/statements/set-concat-null-yields-null-transact-sql)
(default:
true
)
property enableCursorCloseOnCommit
enableCursorCloseOnCommit?: boolean | null;
A boolean, controls whether cursor should be closed, if the transaction opening it gets committed or rolled back.
(default:
null
)
property enableImplicitTransactions
enableImplicitTransactions?: boolean;
A boolean, sets the connection to either implicit or autocommit transaction mode.
(default:
false
)
property enableNumericRoundabort
enableNumericRoundabort?: boolean;
If false, error is not generated during loss of precession.
(default:
false
)
property enableQuotedIdentifier
enableQuotedIdentifier?: boolean;
If true, characters enclosed in single quotes are treated as literals and those enclosed double quotes are treated as identifiers.
(default:
true
)
property encrypt
encrypt?: string | boolean;
A string value that can be only set to 'strict', which indicates the usage TDS 8.0 protocol. Otherwise, a boolean determining whether or not the connection will be encrypted.
(default:
true
)
property fallbackToDefaultDb
fallbackToDefaultDb?: boolean;
By default, if the database requested by [[database]] cannot be accessed, the connection will fail with an error. However, if [[fallbackToDefaultDb]] is set to
true
, then the user's default database will be used instead(default:
false
)
property instanceName
instanceName?: string | undefined;
The instance name to connect to. The SQL Server Browser service must be running on the database server, and UDP port 1434 on the database server must be reachable.
(no default)
Mutually exclusive with [[port]].
property isolationLevel
isolationLevel?: number;
The default isolation level that transactions will be run with.
The isolation levels are available from
require('tedious').ISOLATION_LEVEL
. *READ_UNCOMMITTED
*READ_COMMITTED
*REPEATABLE_READ
*SERIALIZABLE
*SNAPSHOT
(default:
READ_COMMITED
).
property language
language?: string;
Specifies the language environment for the session. The session language determines the datetime formats and system messages.
(default:
us_english
).
property localAddress
localAddress?: string | undefined;
A string indicating which network interface (ip address) to use when connecting to SQL Server.
property lowerCaseGuids
lowerCaseGuids?: boolean;
A boolean determining whether to parse unique identifier type with lowercase case characters.
(default:
false
).
property maxRetriesOnTransientErrors
maxRetriesOnTransientErrors?: number;
The maximum number of connection retries for transient errors.、
(default:
3
).
property multiSubnetFailover
multiSubnetFailover?: boolean;
Sets the MultiSubnetFailover = True parameter, which can help minimize the client recovery latency when failovers occur.
(default:
false
).
property packetSize
packetSize?: number;
The size of TDS packets (subject to negotiation with the server). Should be a power of 2.
(default:
4096
).
property port
port?: number | undefined;
Port to connect to (default:
1433
).Mutually exclusive with [[instanceName]]
property readOnlyIntent
readOnlyIntent?: boolean;
A boolean, determining whether the connection will request read only access from a SQL Server Availability Group. For more information, see [here](http://msdn.microsoft.com/en-us/library/hh710054.aspx "Microsoft: Configure Read-Only Routing for an Availability Group (SQL Server)")
(default:
false
).
property requestTimeout
requestTimeout?: number;
The number of milliseconds before a request is considered failed, or
0
for no timeout.As soon as a response is received, the timeout is cleared. This means that queries that immediately return a response have ability to run longer than this timeout.
(default:
15000
).
property rowCollectionOnDone
rowCollectionOnDone?: boolean;
A boolean, that when true will expose received rows in Requests done related events: * [[Request.Event_doneInProc]] * [[Request.Event_doneProc]] * [[Request.Event_done]]
(default:
false
)Caution: If many row are received, enabling this option could result in excessive memory usage.
property rowCollectionOnRequestCompletion
rowCollectionOnRequestCompletion?: boolean;
A boolean, that when true will expose received rows in Requests' completion callback.See [[Request.constructor]].
(default:
false
)Caution: If many row are received, enabling this option could result in excessive memory usage.
property serverName
serverName?: string;
property tdsVersion
tdsVersion?: string | undefined;
The version of TDS to use. If server doesn't support specified version, negotiated version is used instead.
The versions are available from
require('tedious').TDS_VERSION
. *7_1
*7_2
*7_3_A
*7_3_B
*7_4
(default:
7_4
)
property textsize
textsize?: number;
Specifies the size of varchar(max), nvarchar(max), varbinary(max), text, ntext, and image data returned by a SELECT statement.
(default:
2147483647
)
property trustServerCertificate
trustServerCertificate?: boolean;
If "true", the SQL Server SSL certificate is automatically trusted when the communication layer is encrypted using SSL.
If "false", the SQL Server validates the server SSL certificate. If the server certificate validation fails, the driver raises an error and terminates the connection. Make sure the value passed to serverName exactly matches the Common Name (CN) or DNS name in the Subject Alternate Name in the server certificate for an SSL connection to succeed.
(default:
true
)
property useColumnNames
useColumnNames?: boolean;
A boolean determining whether to return rows as arrays or key-value collections.
(default:
false
).
property useUTC
useUTC?: boolean;
A boolean determining whether to pass time values in UTC or local time.
(default:
true
).
property workstationId
workstationId?: string | undefined;
The workstation ID (WSID) of the client, default os.hostname(). Used for identifying a specific client in profiling, logging or tracing client activity in SQLServer.
The value is reported by the TSQL function HOST_NAME().
Type Aliases
type ConnectionAuthentication
type ConnectionAuthentication = | DefaultAuthentication | NtlmAuthentication | TokenCredentialAuthentication | AzureActiveDirectoryPasswordAuthentication | AzureActiveDirectoryMsiAppServiceAuthentication | AzureActiveDirectoryMsiVmAuthentication | AzureActiveDirectoryAccessTokenAuthentication | AzureActiveDirectoryServicePrincipalSecret | AzureActiveDirectoryDefaultAuthentication;
Namespaces
namespace js-md4
module 'js-md4' {}
variable md4
const md4: { arrayBuffer(message: string | ArrayBuffer): ArrayBuffer };
namespace native-duplexpair
module 'native-duplexpair' {}
class DuplexPair
class DuplexPair {}
Package Files (10)
Dependencies (10)
Dev Dependencies (28)
- @babel/cli
- @babel/core
- @babel/node
- @babel/preset-env
- @babel/preset-typescript
- @babel/register
- @types/async
- @types/bl
- @types/chai
- @types/depd
- @types/lru-cache
- @types/mocha
- @types/sprintf-js
- @typescript-eslint/eslint-plugin
- @typescript-eslint/parser
- async
- babel-plugin-istanbul
- chai
- codecov
- eslint
- mitm
- mocha
- nyc
- rimraf
- semantic-release
- sinon
- typedoc
- typescript
Peer Dependencies (0)
No peer dependencies.
Badge
To add a badge like this oneto your package's README, use the codes available below.
You may also use Shields.io to create a custom badge linking to https://www.jsdocs.io/package/tedious
.
- Markdown[![jsDocs.io](https://img.shields.io/badge/jsDocs.io-reference-blue)](https://www.jsdocs.io/package/tedious)
- HTML<a href="https://www.jsdocs.io/package/tedious"><img src="https://img.shields.io/badge/jsDocs.io-reference-blue" alt="jsDocs.io"></a>
- Updated .
Package analyzed in 7162 ms. - Missing or incorrect documentation? Open an issue for this package.