diff --git a/extensions/mssql/package.json b/extensions/mssql/package.json index 40dc1ef8a0..1dc8e40e26 100644 --- a/extensions/mssql/package.json +++ b/extensions/mssql/package.json @@ -1805,6 +1805,12 @@ "default": false, "scope": "resource" }, + "mssql.showBatchMessages": { + "type": "boolean", + "description": "%mssql.showBatchMessages%", + "default": true, + "scope": "resource" + }, "mssql.splitPaneSelection": { "type": "string", "description": "%mssql.splitPaneSelection%", diff --git a/extensions/mssql/package.nls.json b/extensions/mssql/package.nls.json index e7ee9ef1ad..31effac904 100644 --- a/extensions/mssql/package.nls.json +++ b/extensions/mssql/package.nls.json @@ -121,6 +121,7 @@ "mssql.copyIncludeHeaders": "[Optional] Configuration options for copying results from the Results View", "mssql.copyRemoveNewLine": "[Optional] Configuration options for copying multi-line results from the Results View", "mssql.showBatchTime": "[Optional] Should execution time be shown for individual batches", + "mssql.showBatchMessages": "[Optional] Show batch start and completion messages including 'Started executing query at...' and 'Commands completed successfully' messages.", "mssql.splitPaneSelection": "[Optional] Configuration options for which column new result panes should open in", "mssql.preventAutoExecuteScript": "Prevent automatic execution of scripts (e.g., 'Select Top 1000'). When enabled, scripts will not be automatically executed upon generation.", "mssql.format.alignColumnDefinitionsInColumns": "Should column definitions be aligned?", diff --git a/extensions/mssql/src/constants/constants.ts b/extensions/mssql/src/constants/constants.ts index 441163cb2c..1cc4443be2 100644 --- a/extensions/mssql/src/constants/constants.ts +++ b/extensions/mssql/src/constants/constants.ts @@ -223,6 +223,7 @@ export const configMaxRecentConnections = "maxRecentConnections"; export const configCopyRemoveNewLine = "copyRemoveNewLine"; export const configSplitPaneSelection = "splitPaneSelection"; export const configShowBatchTime = "showBatchTime"; +export const configShowBatchMessages = "showBatchMessages"; export const configPreventAutoExecuteScript = "mssql.query.preventAutoExecuteScript"; export enum extConfigResultKeys { Shortcuts = "shortcuts", diff --git a/extensions/mssql/src/controllers/queryRunner.ts b/extensions/mssql/src/controllers/queryRunner.ts index 9048972302..8aeddbb833 100644 --- a/extensions/mssql/src/controllers/queryRunner.ts +++ b/extensions/mssql/src/controllers/queryRunner.ts @@ -559,13 +559,25 @@ export default class QueryRunner { let message = obj.message; message.time = new Date(message.time).toLocaleTimeString(); - // save the message into the batch summary so it can be restored on view refresh - if (message.batchId >= 0 && this._batchSetMessages[message.batchId] !== undefined) { - this._batchSetMessages[message.batchId].push(message); - } + // Check configuration to see if batch messages should be shown + let extConfig = this._vscodeWrapper.getConfiguration( + Constants.extensionConfigSectionName, + this.uri, + ); + let showBatchMessages: boolean = extConfig.get(Constants.configShowBatchMessages); + + // Only show success messages if the configuration allows it + let shouldShowMessage = message.isError || showBatchMessages; - // Send the message to the results pane - this._messageEmitter.fire(message); + if (shouldShowMessage) { + // save the message into the batch summary so it can be restored on view refresh + if (message.batchId >= 0 && this._batchSetMessages[message.batchId] !== undefined) { + this._batchSetMessages[message.batchId].push(message); + } + + // Send the message to the results pane + this._messageEmitter.fire(message); + } // Set row count on status bar if there are no errors if (!obj.message.isError) { diff --git a/extensions/mssql/src/models/sqlOutputContentProvider.ts b/extensions/mssql/src/models/sqlOutputContentProvider.ts index f69cf3bcb4..89ad468e1a 100644 --- a/extensions/mssql/src/models/sqlOutputContentProvider.ts +++ b/extensions/mssql/src/models/sqlOutputContentProvider.ts @@ -481,6 +481,18 @@ export class SqlOutputContentProvider { ); const batchStartListener = queryRunner.onBatchStart(async (batch) => { + // Check configuration to see if batch messages should be shown + let queryUri = queryRunner.uri; + let extConfig = this._vscodeWrapper.getConfiguration( + Constants.extensionConfigSectionName, + queryUri, + ); + let showBatchMessages: boolean = extConfig.get(Constants.configShowBatchMessages); + + if (showBatchMessages === false) { + return; + } + let time = new Date().toLocaleTimeString(); if (batch.executionElapsed && batch.executionEnd) { time = new Date(batch.executionStart).toLocaleTimeString();