diff --git a/packages/tools/src/diffTools.ts b/packages/tools/src/diffTools.ts index 8ca02b8aa..2141623b5 100644 --- a/packages/tools/src/diffTools.ts +++ b/packages/tools/src/diffTools.ts @@ -468,7 +468,7 @@ export function getAlterTableScript( } const plan = createAlterTablePlan(oldTable, newTable, opts, wholeOldDb, wholeNewDb, driver); - const dmp = driver.createDumper(); + const dmp = driver.createDumper({ useHardSeparator: true }); if (!driver.dialect.disableExplicitTransaction) dmp.beginTransaction(); plan.run(dmp); if (!driver.dialect.disableExplicitTransaction) dmp.commitTransaction(); @@ -487,7 +487,7 @@ export function getAlterDatabaseScript( driver: EngineDriver ) { const plan = createAlterDatabasePlan(oldDb, newDb, opts, wholeOldDb, wholeNewDb, driver); - const dmp = driver.createDumper(); + const dmp = driver.createDumper({ useHardSeparator: true }); if (!driver.dialect.disableExplicitTransaction) dmp.beginTransaction(); plan.run(dmp); if (!driver.dialect.disableExplicitTransaction) dmp.commitTransaction(); diff --git a/packages/tools/src/driverBase.ts b/packages/tools/src/driverBase.ts index 671f2fc33..4f675028d 100644 --- a/packages/tools/src/driverBase.ts +++ b/packages/tools/src/driverBase.ts @@ -32,8 +32,8 @@ export const driverBase = { const analyser = new this.analyserClass(pool, this, version); return analyser.incrementalAnalysis(structure); }, - createDumper() { - return new this.dumperClass(this); + createDumper(options = null) { + return new this.dumperClass(this, options); }, async script(pool, sql) { for (const sqlItem of splitQuery(sql, this.getQuerySplitterOptions('script'))) { diff --git a/packages/types/engines.d.ts b/packages/types/engines.d.ts index 910bfe3be..a1ea74766 100644 --- a/packages/types/engines.d.ts +++ b/packages/types/engines.d.ts @@ -72,7 +72,7 @@ export interface EngineDriver { analyseIncremental(pool: any, structure: DatabaseInfo, serverVersion): Promise; dialect: SqlDialect; dialectByVersion(version): SqlDialect; - createDumper(): SqlDumper; + createDumper(options = null): SqlDumper; getAuthTypes(): EngineAuthType[]; readCollection(pool: any, options: ReadCollectionOptions): Promise; updateCollection(pool: any, changeSet: any): Promise; diff --git a/packages/web/src/tabs/CompareModelTab.svelte b/packages/web/src/tabs/CompareModelTab.svelte index 055716427..30073d91a 100644 --- a/packages/web/src/tabs/CompareModelTab.svelte +++ b/packages/web/src/tabs/CompareModelTab.svelte @@ -186,6 +186,7 @@ $: console.log('sourceDb', sourceDb); $: console.log('targetDb', targetDb); + $: console.log('connection', connection); $: console.log('driver', driver); $: targetDbPaired = matchPairedObjects(sourceDb, targetDb, dbDiffOptions); diff --git a/plugins/dbgate-plugin-mssql/src/frontend/MsSqlDumper.js b/plugins/dbgate-plugin-mssql/src/frontend/MsSqlDumper.js index ff94ef67e..4dc385b08 100644 --- a/plugins/dbgate-plugin-mssql/src/frontend/MsSqlDumper.js +++ b/plugins/dbgate-plugin-mssql/src/frontend/MsSqlDumper.js @@ -1,6 +1,21 @@ const { SqlDumper, testEqualColumns } = global.DBGATE_TOOLS; class MsSqlDumper extends SqlDumper { + constructor(driver, options) { + super(driver); + if (options && options.useHardSeparator) { + this.useHardSeparator = true; + } + } + + endCommand() { + if (this.useHardSeparator) { + this.putRaw('\nGO\n'); + } else { + super.endCommand(); + } + } + autoIncrement() { this.put(' ^identity'); }