mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-18 11:26:00 +00:00
support separate schemas for mssql
This commit is contained in:
@@ -2,6 +2,7 @@ const _ = require('lodash');
|
||||
const stream = require('stream');
|
||||
const makeUniqueColumnNames = require('./makeUniqueColumnNames');
|
||||
let requireMsnodesqlv8;
|
||||
const { extractDbNameFromComposite } = global.DBGATE_PACKAGES['dbgate-tools'];
|
||||
|
||||
// async function nativeQueryCore(pool, sql, options) {
|
||||
// if (sql == null) {
|
||||
@@ -57,7 +58,7 @@ async function connectWithDriver({ server, port, user, password, database, authT
|
||||
connectionString += `;Driver={${driver}}`;
|
||||
if (authType == 'sspi') connectionString += ';Trusted_Connection=Yes';
|
||||
else connectionString += `;UID=${user};PWD=${password}`;
|
||||
if (database) connectionString += `;Database=${database}`;
|
||||
if (database) connectionString += `;Database=${extractDbNameFromComposite(database)}`;
|
||||
return new Promise((resolve, reject) => {
|
||||
getMsnodesqlv8().open(connectionString, (err, conn) => {
|
||||
if (err) {
|
||||
|
||||
@@ -15,6 +15,6 @@ INNER JOIN sys.schemas u ON u.schema_id=o.schema_id
|
||||
INNER JOIN INFORMATION_SCHEMA.COLUMNS col ON col.TABLE_NAME = o.name AND col.TABLE_SCHEMA = u.name and col.COLUMN_NAME = c.name
|
||||
left join sys.default_constraints d on c.default_object_id = d.object_id
|
||||
left join sys.computed_columns m on m.object_id = c.object_id and m.column_id = c.column_id
|
||||
where o.type = 'U' and o.object_id =OBJECT_ID_CONDITION
|
||||
where o.type = 'U' and o.object_id =OBJECT_ID_CONDITION and u.name =SCHEMA_NAME_CONDITION
|
||||
order by c.column_id
|
||||
`;
|
||||
|
||||
@@ -36,5 +36,5 @@ LEFT JOIN sys.schemas IXS ON IXT.schema_id = IXS.schema_id
|
||||
inner join sys.objects o on FK.TABLE_NAME = o.name
|
||||
inner join sys.schemas s on o.schema_id = s.schema_id and FK.TABLE_SCHEMA = s.name
|
||||
|
||||
where o.object_id =OBJECT_ID_CONDITION
|
||||
where o.object_id =OBJECT_ID_CONDITION and s.name =SCHEMA_NAME_CONDITION
|
||||
`;
|
||||
|
||||
@@ -5,6 +5,8 @@ select
|
||||
c.is_descending_key as isDescending, c.is_included_column as isIncludedColumn
|
||||
from sys.index_columns c
|
||||
inner join sys.columns col on c.object_id = col.object_id and c.column_id = col.column_id
|
||||
where c.object_id =OBJECT_ID_CONDITION
|
||||
inner join sys.objects o on c.object_id = o.object_id
|
||||
INNER JOIN sys.schemas u ON u.schema_id=o.schema_id
|
||||
where c.object_id =OBJECT_ID_CONDITION and u.name =SCHEMA_NAME_CONDITION
|
||||
order by c.key_ordinal
|
||||
`;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
module.exports = `
|
||||
select i.object_id, i.name as constraintName, i.type_desc as indexType, i.is_unique as isUnique,i.index_id, i.is_unique_constraint from sys.indexes i
|
||||
inner join sys.objects o on i.object_id = o.object_id
|
||||
INNER JOIN sys.schemas u ON u.schema_id=o.schema_id
|
||||
where i.is_primary_key=0
|
||||
and i.is_hypothetical=0 and indexproperty(i.object_id, i.name, 'IsStatistics') = 0
|
||||
and objectproperty(i.object_id, 'IsUserTable') = 1
|
||||
@@ -10,5 +12,5 @@ and i.index_id between 1 and 254
|
||||
-- where o.parent_obj = i.object_id
|
||||
-- and objectproperty(o.id, N'isConstraint') = 1.0)
|
||||
|
||||
and i.object_id =OBJECT_ID_CONDITION
|
||||
and i.object_id =OBJECT_ID_CONDITION and u.name =SCHEMA_NAME_CONDITION
|
||||
`;
|
||||
|
||||
@@ -3,6 +3,6 @@ select s.name as pureName, u.name as schemaName, c.text AS codeText
|
||||
from sys.objects s
|
||||
inner join sys.syscomments c on s.object_id = c.id
|
||||
inner join sys.schemas u on u.schema_id = s.schema_id
|
||||
where (s.object_id =OBJECT_ID_CONDITION)
|
||||
where (s.object_id =OBJECT_ID_CONDITION) and u.name =SCHEMA_NAME_CONDITION
|
||||
order by u.name, s.name, c.colid
|
||||
`;
|
||||
|
||||
@@ -3,4 +3,5 @@ select o.object_id as objectId, o.modify_date as modifyDate, o.type, o.name as p
|
||||
from sys.objects o
|
||||
inner join sys.schemas s on o.schema_id = s.schema_id
|
||||
where o.type in ('U', 'V', 'P', 'IF', 'FN', 'TF') -- , 'TR' - triggers disabled
|
||||
and s.name =SCHEMA_NAME_CONDITION
|
||||
`;
|
||||
|
||||
@@ -11,4 +11,5 @@ where
|
||||
and c.Table_Name = t.Table_Name
|
||||
and Constraint_Type = 'PRIMARY KEY'
|
||||
and o.object_id =OBJECT_ID_CONDITION
|
||||
and s.name =SCHEMA_NAME_CONDITION
|
||||
`;
|
||||
|
||||
@@ -2,5 +2,5 @@ module.exports = `
|
||||
select o.name as pureName, s.name as schemaName, o.object_id as objectId, o.create_date as createDate, o.modify_date as modifyDate, o.type as sqlObjectType
|
||||
from sys.objects o
|
||||
inner join sys.schemas s on o.schema_id = s.schema_id
|
||||
where o.type in ('P', 'IF', 'FN', 'TF') and o.object_id =OBJECT_ID_CONDITION
|
||||
where o.type in ('P', 'IF', 'FN', 'TF') and o.object_id =OBJECT_ID_CONDITION and s.name =SCHEMA_NAME_CONDITION
|
||||
`;
|
||||
|
||||
@@ -8,8 +8,11 @@ INNER JOIN
|
||||
sys.indexes i ON t.OBJECT_ID = i.object_id
|
||||
INNER JOIN
|
||||
sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
|
||||
INNER JOIN
|
||||
sys.schemas s ON t.schema_id = s.schema_id
|
||||
WHERE
|
||||
t.NAME NOT LIKE 'dt%'
|
||||
AND t.is_ms_shipped = 0
|
||||
AND i.OBJECT_ID > 255
|
||||
AND s.name =SCHEMA_NAME_CONDITION
|
||||
`;
|
||||
|
||||
@@ -4,5 +4,5 @@ select
|
||||
o.create_date as createDate, o.modify_date as modifyDate
|
||||
from sys.tables o
|
||||
inner join sys.schemas s on o.schema_id = s.schema_id
|
||||
where o.object_id =OBJECT_ID_CONDITION
|
||||
where o.object_id =OBJECT_ID_CONDITION and s.name =SCHEMA_NAME_CONDITION
|
||||
`;
|
||||
|
||||
@@ -13,6 +13,6 @@ select
|
||||
FROM sys.objects o
|
||||
INNER JOIN sys.schemas u ON u.schema_id=o.schema_id
|
||||
INNER JOIN INFORMATION_SCHEMA.COLUMNS col ON col.TABLE_NAME = o.name AND col.TABLE_SCHEMA = u.name
|
||||
WHERE o.type in ('V') and o.object_id =OBJECT_ID_CONDITION
|
||||
WHERE o.type in ('V') and o.object_id =OBJECT_ID_CONDITION and u.name =SCHEMA_NAME_CONDITION
|
||||
order by col.ORDINAL_POSITION
|
||||
`;
|
||||
|
||||
@@ -6,5 +6,5 @@ SELECT
|
||||
o.create_date as createDate,
|
||||
o.modify_date as modifyDate
|
||||
FROM sys.objects o INNER JOIN sys.schemas u ON u.schema_id=o.schema_id
|
||||
WHERE type in ('V') and o.object_id =OBJECT_ID_CONDITION
|
||||
WHERE type in ('V') and o.object_id =OBJECT_ID_CONDITION and u.name =SCHEMA_NAME_CONDITION
|
||||
`;
|
||||
|
||||
@@ -2,6 +2,7 @@ const _ = require('lodash');
|
||||
const stream = require('stream');
|
||||
const tedious = require('tedious');
|
||||
const makeUniqueColumnNames = require('./makeUniqueColumnNames');
|
||||
const { extractDbNameFromComposite } = global.DBGATE_PACKAGES['dbgate-tools'];
|
||||
|
||||
function extractTediousColumns(columns, addDriverNativeColumn = false) {
|
||||
const res = columns.map(col => {
|
||||
@@ -39,7 +40,7 @@ async function tediousConnect(storedConnection) {
|
||||
};
|
||||
|
||||
if (database) {
|
||||
connectionOptions.database = database;
|
||||
connectionOptions.database = extractDbNameFromComposite(database);
|
||||
}
|
||||
|
||||
const authentication =
|
||||
|
||||
Reference in New Issue
Block a user