tedious 1.12.3 → 1.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/appveyor.yml +9 -5
- package/benchmarks/README.md +33 -0
- package/benchmarks/common.js +82 -0
- package/benchmarks/index.js +34 -0
- package/benchmarks/query/many-result-rows.js +49 -0
- package/benchmarks/query/nvarchar-large.js +44 -0
- package/benchmarks/query/nvarchar-small.js +44 -0
- package/benchmarks/query/varbinary-4.js +42 -0
- package/benchmarks/query/varbinary-huge.js +46 -0
- package/benchmarks/query/varbinary-large.js +46 -0
- package/benchmarks/query/varbinary-small.js +42 -0
- package/benchmarks/token-parser/colmetadata-token.js +42 -0
- package/benchmarks/token-parser/done-token.js +42 -0
- package/benchmarks/token-parser/simple-tokens.js +366 -0
- package/lib/all-headers.js +9 -11
- package/lib/buffertools.js +17 -13
- package/lib/bulk-load.js +196 -169
- package/lib/collation.js +80 -2
- package/lib/connection.js +1086 -1060
- package/lib/data-type.js +450 -253
- package/lib/debug.js +57 -51
- package/lib/errors.js +40 -55
- package/lib/guid-parser.js +12 -36
- package/lib/instance-lookup.js +57 -54
- package/lib/library.js +3 -2
- package/lib/login7-payload.js +187 -180
- package/lib/message-io.js +169 -199
- package/lib/metadata-parser.js +169 -255
- package/lib/ntlm-payload.js +173 -160
- package/lib/packet.js +166 -152
- package/lib/prelogin-payload.js +170 -160
- package/lib/request.js +122 -122
- package/lib/rpcrequest-payload.js +64 -38
- package/lib/special-stored-procedure.js +3 -2
- package/lib/sqlbatch-payload.js +20 -16
- package/lib/stream-parser.js +116 -104
- package/lib/tds-versions.js +5 -8
- package/lib/tedious.js +8 -14
- package/lib/token/colmetadata-token-parser.js +79 -125
- package/lib/token/done-token-parser.js +47 -129
- package/lib/token/env-change-token-parser.js +90 -126
- package/lib/token/infoerror-token-parser.js +47 -125
- package/lib/token/loginack-token-parser.js +36 -74
- package/lib/token/nbcrow-token-parser.js +40 -64
- package/lib/token/order-token-parser.js +26 -43
- package/lib/token/returnstatus-token-parser.js +11 -23
- package/lib/token/returnvalue-token-parser.js +31 -54
- package/lib/token/row-token-parser.js +39 -52
- package/lib/token/sspi-token-parser.js +14 -32
- package/lib/token/stream-parser.js +424 -304
- package/lib/token/token-stream-parser.js +39 -34
- package/lib/token/token.js +3 -6
- package/lib/tracking-buffer/bigint.js +45 -48
- package/lib/tracking-buffer/readable-tracking-buffer.js +238 -223
- package/lib/tracking-buffer/tracking-buffer.js +3 -9
- package/lib/tracking-buffer/writable-tracking-buffer.js +272 -244
- package/lib/transaction.js +112 -102
- package/lib/value-parser.js +559 -1154
- package/package.json +10 -9
- package/benchmarks/benchmarks.coffee +0 -122
- package/benchmarks/query.coffee +0 -57
package/lib/bulk-load.js
CHANGED
|
@@ -1,40 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
EventEmitter = require('events').EventEmitter;
|
|
18
|
-
|
|
19
|
-
WritableTrackingBuffer = require('./tracking-buffer/tracking-buffer').WritableTrackingBuffer;
|
|
20
|
-
|
|
21
|
-
TOKEN_TYPE = require('./token/token').TYPE;
|
|
22
|
-
|
|
23
|
-
FLAGS = {
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _get = require('babel-runtime/helpers/get')['default'];
|
|
4
|
+
|
|
5
|
+
var _inherits = require('babel-runtime/helpers/inherits')['default'];
|
|
6
|
+
|
|
7
|
+
var _createClass = require('babel-runtime/helpers/create-class')['default'];
|
|
8
|
+
|
|
9
|
+
var _classCallCheck = require('babel-runtime/helpers/class-call-check')['default'];
|
|
10
|
+
|
|
11
|
+
var EventEmitter = require('events').EventEmitter;
|
|
12
|
+
var WritableTrackingBuffer = require('./tracking-buffer/tracking-buffer').WritableTrackingBuffer;
|
|
13
|
+
var TOKEN_TYPE = require('./token/token').TYPE;
|
|
14
|
+
|
|
15
|
+
var FLAGS = {
|
|
24
16
|
nullable: 1 << 0,
|
|
25
17
|
caseSen: 1 << 1,
|
|
26
18
|
updateableReadWrite: 1 << 2,
|
|
27
19
|
updateableUnknown: 1 << 3,
|
|
28
20
|
identity: 1 << 4,
|
|
29
|
-
computed: 1 << 5,
|
|
30
|
-
fixedLenCLRType: 1 << 8,
|
|
31
|
-
sparseColumnSet: 1 << 10,
|
|
32
|
-
hidden: 1 << 13,
|
|
33
|
-
key: 1 << 14,
|
|
34
|
-
nullableUnknown: 1 << 15
|
|
21
|
+
computed: 1 << 5, // introduced in TDS 7.2
|
|
22
|
+
fixedLenCLRType: 1 << 8, // introduced in TDS 7.2
|
|
23
|
+
sparseColumnSet: 1 << 10, // introduced in TDS 7.3.B
|
|
24
|
+
hidden: 1 << 13, // introduced in TDS 7.2
|
|
25
|
+
key: 1 << 14, // introduced in TDS 7.2
|
|
26
|
+
nullableUnknown: 1 << 15 // introduced in TDS 7.2
|
|
35
27
|
};
|
|
36
28
|
|
|
37
|
-
DONE_STATUS = {
|
|
29
|
+
var DONE_STATUS = {
|
|
38
30
|
FINAL: 0x00,
|
|
39
31
|
MORE: 0x1,
|
|
40
32
|
ERROR: 0x2,
|
|
@@ -44,14 +36,17 @@ DONE_STATUS = {
|
|
|
44
36
|
SRVERROR: 0x100
|
|
45
37
|
};
|
|
46
38
|
|
|
47
|
-
|
|
48
|
-
|
|
39
|
+
module.exports = (function (_EventEmitter) {
|
|
40
|
+
_inherits(BulkLoad, _EventEmitter);
|
|
41
|
+
|
|
42
|
+
function BulkLoad(table, options1, callback) {
|
|
43
|
+
_classCallCheck(this, BulkLoad);
|
|
49
44
|
|
|
50
|
-
|
|
45
|
+
_get(Object.getPrototypeOf(BulkLoad.prototype), 'constructor', this).call(this);
|
|
51
46
|
|
|
52
|
-
|
|
47
|
+
this.error = undefined;
|
|
48
|
+
this.canceled = false;
|
|
53
49
|
|
|
54
|
-
function BulkLoad(table, options1, callback) {
|
|
55
50
|
this.table = table;
|
|
56
51
|
this.options = options1;
|
|
57
52
|
this.callback = callback;
|
|
@@ -61,149 +56,181 @@ BulkLoad = (function (superClass) {
|
|
|
61
56
|
this.firstRowWritten = false;
|
|
62
57
|
}
|
|
63
58
|
|
|
64
|
-
BulkLoad
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
options
|
|
68
|
-
|
|
69
|
-
if (this.firstRowWritten) {
|
|
70
|
-
throw new Error('Columns cannot be added to bulk insert after the first row has been written.');
|
|
71
|
-
}
|
|
72
|
-
column = {
|
|
73
|
-
type: type,
|
|
74
|
-
name: name,
|
|
75
|
-
value: null,
|
|
76
|
-
output: options.output || (options.output = false),
|
|
77
|
-
length: options.length,
|
|
78
|
-
precision: options.precision,
|
|
79
|
-
scale: options.scale,
|
|
80
|
-
objName: options.objName || name,
|
|
81
|
-
nullable: options.nullable
|
|
82
|
-
};
|
|
83
|
-
if ((type.id & 0x30) === 0x20) {
|
|
84
|
-
column.length = (ref = column.length) != null ? ref : typeof type.resolveLength === "function" ? type.resolveLength(column) : void 0;
|
|
85
|
-
}
|
|
86
|
-
if (type.hasPrecision) {
|
|
87
|
-
column.precision = (ref1 = column.precision) != null ? ref1 : typeof type.resolvePrecision === "function" ? type.resolvePrecision(column) : void 0;
|
|
88
|
-
}
|
|
89
|
-
if (type.hasScale) {
|
|
90
|
-
column.scale = (ref2 = column.scale) != null ? ref2 : typeof type.resolveScale === "function" ? type.resolveScale(column) : void 0;
|
|
91
|
-
}
|
|
92
|
-
this.columns.push(column);
|
|
93
|
-
return this.columnsByName[name] = column;
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
BulkLoad.prototype.addRow = function (row) {
|
|
97
|
-
var arr, arrTemp, c, i, j, k, len, len1, ref, results;
|
|
98
|
-
this.firstRowWritten = true;
|
|
99
|
-
if (arguments.length > 1 || !row || typeof row !== 'object') {
|
|
100
|
-
arrTemp = new Array(arguments.length);
|
|
101
|
-
for (i = j = 0, len = arguments.length; j < len; i = ++j) {
|
|
102
|
-
c = arguments[i];
|
|
103
|
-
arrTemp[i] = c;
|
|
59
|
+
_createClass(BulkLoad, [{
|
|
60
|
+
key: 'addColumn',
|
|
61
|
+
value: function addColumn(name, type, options) {
|
|
62
|
+
if (options == null) {
|
|
63
|
+
options = {};
|
|
104
64
|
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
arr = row instanceof Array;
|
|
109
|
-
ref = this.columns;
|
|
110
|
-
results = [];
|
|
111
|
-
for (i = k = 0, len1 = ref.length; k < len1; i = ++k) {
|
|
112
|
-
c = ref[i];
|
|
113
|
-
results.push(c.type.writeParameterData(this.rowsData, {
|
|
114
|
-
length: c.length,
|
|
115
|
-
scale: c.scale,
|
|
116
|
-
precision: c.precision,
|
|
117
|
-
value: row[arr ? i : c.objName]
|
|
118
|
-
}, this.options));
|
|
119
|
-
}
|
|
120
|
-
return results;
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
BulkLoad.prototype.getBulkInsertSql = function () {
|
|
124
|
-
var c, i, j, len, ref, sql;
|
|
125
|
-
sql = 'insert bulk ' + this.table + '(';
|
|
126
|
-
ref = this.columns;
|
|
127
|
-
for (i = j = 0, len = ref.length; j < len; i = ++j) {
|
|
128
|
-
c = ref[i];
|
|
129
|
-
if (i !== 0) {
|
|
130
|
-
sql += ', ';
|
|
65
|
+
|
|
66
|
+
if (this.firstRowWritten) {
|
|
67
|
+
throw new Error('Columns cannot be added to bulk insert after the first row has been written.');
|
|
131
68
|
}
|
|
132
|
-
|
|
69
|
+
|
|
70
|
+
var column = {
|
|
71
|
+
type: type,
|
|
72
|
+
name: name,
|
|
73
|
+
value: null,
|
|
74
|
+
output: options.output || (options.output = false),
|
|
75
|
+
length: options.length,
|
|
76
|
+
precision: options.precision,
|
|
77
|
+
scale: options.scale,
|
|
78
|
+
objName: options.objName || name,
|
|
79
|
+
nullable: options.nullable
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
if ((type.id & 0x30) === 0x20) {
|
|
83
|
+
if (column.length == undefined && type.resolveLength) {
|
|
84
|
+
column.length = type.resolveLength(column);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (type.hasPrecision) {
|
|
89
|
+
if (column.precision == undefined && type.resolvePrecision) {
|
|
90
|
+
column.precision = type.resolvePrecision(column);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (type.hasScale) {
|
|
95
|
+
if (column.scale == undefined && type.resolveScale) {
|
|
96
|
+
column.scale = type.resolveScale(column);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
this.columns.push(column);
|
|
101
|
+
|
|
102
|
+
return this.columnsByName[name] = column;
|
|
133
103
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
104
|
+
}, {
|
|
105
|
+
key: 'addRow',
|
|
106
|
+
value: function addRow(row) {
|
|
107
|
+
this.firstRowWritten = true;
|
|
108
|
+
|
|
109
|
+
if (arguments.length > 1 || !row || typeof row !== 'object') {
|
|
110
|
+
// convert arguments to array in a way the optimizer can handle
|
|
111
|
+
var arrTemp = new Array(arguments.length);
|
|
112
|
+
for (var i = 0, len = arguments.length; i < len; i++) {
|
|
113
|
+
var c = arguments[i];
|
|
114
|
+
arrTemp[i] = c;
|
|
115
|
+
}
|
|
116
|
+
row = arrTemp;
|
|
146
117
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
118
|
+
|
|
119
|
+
// write row token
|
|
120
|
+
this.rowsData.writeUInt8(TOKEN_TYPE.ROW);
|
|
121
|
+
|
|
122
|
+
// write each column
|
|
123
|
+
var arr = row instanceof Array;
|
|
124
|
+
for (var i = 0, len = this.columns.length; i < len; i++) {
|
|
125
|
+
var c = this.columns[i];
|
|
126
|
+
c.type.writeParameterData(this.rowsData, {
|
|
127
|
+
length: c.length,
|
|
128
|
+
scale: c.scale,
|
|
129
|
+
precision: c.precision,
|
|
130
|
+
value: row[arr ? i : c.objName]
|
|
131
|
+
}, this.options);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}, {
|
|
135
|
+
key: 'getBulkInsertSql',
|
|
136
|
+
value: function getBulkInsertSql() {
|
|
137
|
+
var sql = 'insert bulk ' + this.table + '(';
|
|
138
|
+
for (var i = 0, len = this.columns.length; i < len; i++) {
|
|
139
|
+
var c = this.columns[i];
|
|
140
|
+
if (i !== 0) {
|
|
141
|
+
sql += ', ';
|
|
142
|
+
}
|
|
143
|
+
sql += '[' + c.name + '] ' + c.type.declaration(c);
|
|
150
144
|
}
|
|
145
|
+
sql += ')';
|
|
146
|
+
return sql;
|
|
151
147
|
}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
if (this.options.tdsVersion >= "7_2") {
|
|
169
|
-
tBuf.writeUInt32LE(0);
|
|
148
|
+
}, {
|
|
149
|
+
key: 'getTableCreationSql',
|
|
150
|
+
value: function getTableCreationSql() {
|
|
151
|
+
var sql = 'CREATE TABLE ' + this.table + '(\n';
|
|
152
|
+
for (var i = 0, len = this.columns.length; i < len; i++) {
|
|
153
|
+
var c = this.columns[i];
|
|
154
|
+
if (i !== 0) {
|
|
155
|
+
sql += ',\n';
|
|
156
|
+
}
|
|
157
|
+
sql += '[' + c.name + '] ' + c.type.declaration(c);
|
|
158
|
+
if (c.nullable !== void 0) {
|
|
159
|
+
sql += ' ' + (c.nullable ? 'NULL' : 'NOT NULL');
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
sql += '\n)';
|
|
163
|
+
return sql;
|
|
170
164
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
tBuf.writeUInt32LE(0);
|
|
165
|
+
}, {
|
|
166
|
+
key: 'getPayload',
|
|
167
|
+
value: function getPayload() {
|
|
168
|
+
// Create COLMETADATA token
|
|
169
|
+
var metaData = this.getColMetaData();
|
|
170
|
+
var length = metaData.length;
|
|
171
|
+
|
|
172
|
+
// row data
|
|
173
|
+
var rows = this.rowsData.data;
|
|
174
|
+
length += rows.length;
|
|
175
|
+
|
|
176
|
+
// Create DONE token
|
|
177
|
+
// It might be nice to make DoneToken a class if anything needs to create them, but for now, just do it here
|
|
178
|
+
var tBuf = new WritableTrackingBuffer(this.options.tdsVersion < '7_2' ? 9 : 13);
|
|
179
|
+
tBuf.writeUInt8(TOKEN_TYPE.DONE);
|
|
180
|
+
var status = DONE_STATUS.FINAL;
|
|
181
|
+
tBuf.writeUInt16LE(status);
|
|
182
|
+
tBuf.writeUInt16LE(0); // CurCmd (TDS ignores this)
|
|
183
|
+
tBuf.writeUInt32LE(0); // row count - doesn't really matter
|
|
184
|
+
if (this.options.tdsVersion >= '7_2') {
|
|
185
|
+
tBuf.writeUInt32LE(0); // row count is 64 bits in >= TDS 7.2
|
|
192
186
|
}
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
187
|
+
|
|
188
|
+
var done = tBuf.data;
|
|
189
|
+
length += done.length;
|
|
190
|
+
|
|
191
|
+
// composite payload
|
|
192
|
+
var payload = new WritableTrackingBuffer(length);
|
|
193
|
+
payload.copyFrom(metaData);
|
|
194
|
+
payload.copyFrom(rows);
|
|
195
|
+
payload.copyFrom(done);
|
|
196
|
+
return payload;
|
|
197
|
+
}
|
|
198
|
+
}, {
|
|
199
|
+
key: 'getColMetaData',
|
|
200
|
+
value: function getColMetaData() {
|
|
201
|
+
var tBuf = new WritableTrackingBuffer(100, null, true);
|
|
202
|
+
// TokenType
|
|
203
|
+
tBuf.writeUInt8(TOKEN_TYPE.COLMETADATA);
|
|
204
|
+
// Count
|
|
205
|
+
tBuf.writeUInt16LE(this.columns.length);
|
|
206
|
+
|
|
207
|
+
for (var j = 0, len = this.columns.length; j < len; j++) {
|
|
208
|
+
var c = this.columns[j];
|
|
209
|
+
// UserType
|
|
210
|
+
if (this.options.tdsVersion < '7_2') {
|
|
211
|
+
tBuf.writeUInt16LE(0);
|
|
212
|
+
} else {
|
|
213
|
+
tBuf.writeUInt32LE(0);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// Flags
|
|
217
|
+
var flags = FLAGS.updateableReadWrite;
|
|
218
|
+
if (c.nullable) {
|
|
219
|
+
flags |= FLAGS.nullable;
|
|
220
|
+
} else if (c.nullable === void 0 && this.options.tdsVersion >= '7_2') {
|
|
221
|
+
flags |= FLAGS.nullableUnknown;
|
|
222
|
+
}
|
|
223
|
+
tBuf.writeUInt16LE(flags);
|
|
224
|
+
|
|
225
|
+
// TYPE_INFO
|
|
226
|
+
c.type.writeTypeInfo(tBuf, c, this.options);
|
|
227
|
+
|
|
228
|
+
// ColName
|
|
229
|
+
tBuf.writeBVarchar(c.name, 'ucs2');
|
|
198
230
|
}
|
|
199
|
-
tBuf.
|
|
200
|
-
c.type.writeTypeInfo(tBuf, c, this.options);
|
|
201
|
-
tBuf.writeBVarchar(c.name, 'ucs2');
|
|
231
|
+
return tBuf.data;
|
|
202
232
|
}
|
|
203
|
-
|
|
204
|
-
};
|
|
233
|
+
}]);
|
|
205
234
|
|
|
206
235
|
return BulkLoad;
|
|
207
|
-
})(EventEmitter);
|
|
208
|
-
|
|
209
|
-
module.exports = BulkLoad;
|
|
236
|
+
})(EventEmitter);
|
package/lib/collation.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// http://technet.microsoft.com/en-us/library/aa176553(v=sql.80).aspx
|
|
4
|
+
module.exports.codepageByLcid = {
|
|
3
5
|
0x436: 'CP1252',
|
|
4
6
|
0x401: 'CP1256',
|
|
5
7
|
0x801: 'CP1256',
|
|
@@ -105,4 +107,80 @@ exports.codepageByLcid = {
|
|
|
105
107
|
0x422: 'CP1251',
|
|
106
108
|
0x420: 'CP1256',
|
|
107
109
|
0x42A: 'CP1258'
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
module.exports.codepageBySortId = {
|
|
113
|
+
30: 'CP437', // SQL_Latin1_General_CP437_BIN
|
|
114
|
+
31: 'CP437', // SQL_Latin1_General_CP437_CS_AS
|
|
115
|
+
32: 'CP437', // SQL_Latin1_General_CP437_CI_AS
|
|
116
|
+
33: 'CP437', // SQL_Latin1_General_Pref_CP437_CI_AS
|
|
117
|
+
34: 'CP437', // SQL_Latin1_General_CP437_CI_AI
|
|
118
|
+
40: 'CP850', // SQL_Latin1_General_CP850_BIN
|
|
119
|
+
41: 'CP850', // SQL_Latin1_General_CP850_CS_AS
|
|
120
|
+
42: 'CP850', // SQL_Latin1_General_CP850_CI_AS
|
|
121
|
+
43: 'CP850', // SQL_Latin1_General_Pref_CP850_CI_AS
|
|
122
|
+
44: 'CP850', // SQL_Latin1_General_CP850_CI_AI
|
|
123
|
+
49: 'CP850', // SQL_1xCompat_CP850_CI_AS
|
|
124
|
+
51: 'CP1252', // SQL_Latin1_General_Cp1_CS_AS_KI_WI
|
|
125
|
+
52: 'CP1252', // SQL_Latin1_General_Cp1_CI_AS_KI_WI
|
|
126
|
+
53: 'CP1252', // SQL_Latin1_General_Pref_Cp1_CI_AS_KI_WI
|
|
127
|
+
54: 'CP1252', // SQL_Latin1_General_Cp1_CI_AI_KI_WI
|
|
128
|
+
55: 'CP850', // SQL_AltDiction_CP850_CS_AS
|
|
129
|
+
56: 'CP850', // SQL_AltDiction_Pref_CP850_CI_AS
|
|
130
|
+
57: 'CP850', // SQL_AltDiction_CP850_CI_AI
|
|
131
|
+
58: 'CP850', // SQL_Scandinavian_Pref_CP850_CI_AS
|
|
132
|
+
59: 'CP850', // SQL_Scandinavian_CP850_CS_AS
|
|
133
|
+
60: 'CP850', // SQL_Scandinavian_CP850_CI_AS
|
|
134
|
+
61: 'CP850', // SQL_AltDiction_CP850_CI_AS
|
|
135
|
+
80: 'CP1250', // SQL_Latin1_General_1250_BIN
|
|
136
|
+
81: 'CP1250', // SQL_Latin1_General_CP1250_CS_AS
|
|
137
|
+
82: 'CP1250', // SQL_Latin1_General_Cp1250_CI_AS_KI_WI
|
|
138
|
+
83: 'CP1250', // SQL_Czech_Cp1250_CS_AS_KI_WI
|
|
139
|
+
84: 'CP1250', // SQL_Czech_Cp1250_CI_AS_KI_WI
|
|
140
|
+
85: 'CP1250', // SQL_Hungarian_Cp1250_CS_AS_KI_WI
|
|
141
|
+
86: 'CP1250', // SQL_Hungarian_Cp1250_CI_AS_KI_WI
|
|
142
|
+
87: 'CP1250', // SQL_Polish_Cp1250_CS_AS_KI_WI
|
|
143
|
+
88: 'CP1250', // SQL_Polish_Cp1250_CI_AS_KI_WI
|
|
144
|
+
89: 'CP1250', // SQL_Romanian_Cp1250_CS_AS_KI_WI
|
|
145
|
+
90: 'CP1250', // SQL_Romanian_Cp1250_CI_AS_KI_WI
|
|
146
|
+
91: 'CP1250', // SQL_Croatian_Cp1250_CS_AS_KI_WI
|
|
147
|
+
92: 'CP1250', // SQL_Croatian_Cp1250_CI_AS_KI_WI
|
|
148
|
+
93: 'CP1250', // SQL_Slovak_Cp1250_CS_AS_KI_WI
|
|
149
|
+
94: 'CP1250', // SQL_Slovak_Cp1250_CI_AS_KI_WI
|
|
150
|
+
95: 'CP1250', // SQL_Slovenian_Cp1250_CS_AS_KI_WI
|
|
151
|
+
96: 'CP1250', // SQL_Slovenian_Cp1250_CI_AS_KI_WI
|
|
152
|
+
104: 'CP1251', // SQL_Latin1_General_1251_BIN
|
|
153
|
+
105: 'CP1251', // SQL_Latin1_General_CP1251_CS_AS
|
|
154
|
+
106: 'CP1251', // SQL_Latin1_General_CP1251_CI_AS
|
|
155
|
+
107: 'CP1251', // SQL_Ukrainian_Cp1251_CS_AS_KI_WI
|
|
156
|
+
108: 'CP1251', // SQL_Ukrainian_Cp1251_CI_AS_KI_WI
|
|
157
|
+
112: 'CP1253', // SQL_Latin1_General_1253_BIN
|
|
158
|
+
113: 'CP1253', // SQL_Latin1_General_CP1253_CS_AS
|
|
159
|
+
114: 'CP1253', // SQL_Latin1_General_CP1253_CI_AS
|
|
160
|
+
120: 'CP1253', // SQL_MixDiction_CP1253_CS_AS
|
|
161
|
+
121: 'CP1253', // SQL_AltDiction_CP1253_CS_AS
|
|
162
|
+
122: 'CP1253', // SQL_AltDiction2_CP1253_CS_AS
|
|
163
|
+
124: 'CP1253', // SQL_Latin1_General_CP1253_CI_AI
|
|
164
|
+
128: 'CP1254', // SQL_Latin1_General_1254_BIN
|
|
165
|
+
129: 'CP1254', // SQL_Latin1_General_Cp1254_CS_AS_KI_WI
|
|
166
|
+
130: 'CP1254', // SQL_Latin1_General_Cp1254_CI_AS_KI_WI
|
|
167
|
+
136: 'CP1255', // SQL_Latin1_General_1255_BIN
|
|
168
|
+
137: 'CP1255', // SQL_Latin1_General_CP1255_CS_AS
|
|
169
|
+
138: 'CP1255', // SQL_Latin1_General_CP1255_CI_AS
|
|
170
|
+
144: 'CP1256', // SQL_Latin1_General_1256_BIN
|
|
171
|
+
145: 'CP1256', // SQL_Latin1_General_CP1256_CS_AS
|
|
172
|
+
146: 'CP1256', // SQL_Latin1_General_CP1256_CI_AS
|
|
173
|
+
152: 'CP1257', // SQL_Latin1_General_1257_BIN
|
|
174
|
+
153: 'CP1257', // SQL_Latin1_General_CP1257_CS_AS
|
|
175
|
+
154: 'CP1257', // SQL_Latin1_General_CP1257_CI_AS
|
|
176
|
+
155: 'CP1257', // SQL_Estonian_Cp1257_CS_AS_KI_WI
|
|
177
|
+
156: 'CP1257', // SQL_Estonian_Cp1257_CI_AS_KI_WI
|
|
178
|
+
157: 'CP1257', // SQL_Latvian_Cp1257_CS_AS_KI_WI
|
|
179
|
+
158: 'CP1257', // SQL_Latvian_Cp1257_CI_AS_KI_WI
|
|
180
|
+
159: 'CP1257', // SQL_Lithuanian_Cp1257_CS_AS_KI_WI
|
|
181
|
+
160: 'CP1257', // SQL_Lithuanian_Cp1257_CI_AS_KI_WI
|
|
182
|
+
183: 'CP1252', // SQL_Danish_Pref_Cp1_CI_AS_KI_WI
|
|
183
|
+
184: 'CP1252', // SQL_SwedishPhone_Pref_Cp1_CI_AS_KI_WI
|
|
184
|
+
185: 'CP1252', // SQL_SwedishStd_Pref_Cp1_CI_AS_KI_WI
|
|
185
|
+
186: 'CP1252' // SQL_Icelandic_Pref_Cp1_CI_AS_KI_WI
|
|
108
186
|
};
|