diff --git a/src/Microsoft.SqlTools.ManagedBatchParser/BatchParser/ExecutionEngineCode/ExecutionEngine.cs b/src/Microsoft.SqlTools.ManagedBatchParser/BatchParser/ExecutionEngineCode/ExecutionEngine.cs index 99d5c8cc..03241572 100644 --- a/src/Microsoft.SqlTools.ManagedBatchParser/BatchParser/ExecutionEngineCode/ExecutionEngine.cs +++ b/src/Microsoft.SqlTools.ManagedBatchParser/BatchParser/ExecutionEngineCode/ExecutionEngine.cs @@ -485,7 +485,12 @@ namespace Microsoft.SqlTools.ServiceLayer.BatchParser.ExecutionEngineCode } catch (BatchParserException ex) { - if (ex.ErrorCode != ErrorCode.Aborted) + if (ex.ErrorCode == ErrorCode.UnsupportedCommand) + { + result = ScriptExecutionResult.Failure; + RaiseScriptError(string.Format(CultureInfo.CurrentCulture, ex.Message), ScriptMessageType.FatalError); + } + else if (ex.ErrorCode != ErrorCode.Aborted) { result = ScriptExecutionResult.Failure; string info = ex.Text; diff --git a/src/Microsoft.SqlTools.ManagedBatchParser/BatchParser/Parser.cs b/src/Microsoft.SqlTools.ManagedBatchParser/BatchParser/Parser.cs index e1a87ed4..35489968 100644 --- a/src/Microsoft.SqlTools.ManagedBatchParser/BatchParser/Parser.cs +++ b/src/Microsoft.SqlTools.ManagedBatchParser/BatchParser/Parser.cs @@ -370,12 +370,6 @@ namespace Microsoft.SqlTools.ServiceLayer.BatchParser LexerTokenType tokenType = LookaheadTokenType; switch (tokenType) { - case LexerTokenType.OnError: - RemoveLastWhitespaceToken(); - Token onErrorToken = LookaheadToken; - Accept(); - ParseOnErrorCommand(onErrorToken); - break; case LexerTokenType.Eof: if (tokenBuffer.Count > 0) { @@ -387,11 +381,6 @@ namespace Microsoft.SqlTools.ServiceLayer.BatchParser Accept(); ParseGo(); break; - case LexerTokenType.Include: - RemoveLastWhitespaceToken(); - Accept(); - ParseInclude(); - break; case LexerTokenType.Comment: case LexerTokenType.NewLine: case LexerTokenType.Text: @@ -405,17 +394,21 @@ namespace Microsoft.SqlTools.ServiceLayer.BatchParser Accept(); ParseSetvar(setvarToken); break; + // Supported by SSMS but not by ADS + case LexerTokenType.Include: + case LexerTokenType.OnError: case LexerTokenType.Connect: - case LexerTokenType.Ed: case LexerTokenType.ErrorCommand: case LexerTokenType.Execute: case LexerTokenType.Exit: + case LexerTokenType.Out: + case LexerTokenType.Quit: + // not supported on SSMS or ADS + case LexerTokenType.Ed: case LexerTokenType.Help: case LexerTokenType.List: case LexerTokenType.ListVar: - case LexerTokenType.Out: case LexerTokenType.Perftrace: - case LexerTokenType.Quit: case LexerTokenType.Reset: case LexerTokenType.Serverlist: case LexerTokenType.Xml: