Credo che ci siano alcune eccezioni, ma da Gravità errori motore di database (MSDN) :
I messaggi di errore con un livello di gravità di 19 o superiore interrompono l'esecuzione del batch corrente.
Gli errori che interrompono la connessione al database, in genere con gravità compresa tra 20 e 25, non vengono gestiti dal blocco CATCH poiché l'esecuzione viene interrotta al termine della connessione.
Quindi sembra che potresti ottenere un elenco definitivo dalla seguente query (ovviamente questo non ti permetterà di filtrare quali possono essere causati dall'utente T-SQL):
SELECT message_id, severity, [text]
FROM sys.messages
WHERE language_id = 1033
AND severity >= 19
ORDER BY severity, message_id;
In SQL Server 2012, questo produce 210 righe.
In SQL Server 2016, questo produce 256 righe.
A proposito, non credo che i due scenari che descrivi nella tua domanda funzionino come pensi, almeno non nelle versioni moderne di SQL Server. L'ho provato sia nel 2012 che nel 2016 (credo che l'articolo di Erland descriva il comportamento di SQL Server 2000, che non ricordo se fosse diverso, ma non molto rilevante oggi, anche se così).
USE tempdb;
GO
CREATE PROCEDURE dbo.pA -- no parameters
AS PRINT 1
GO
CREATE PROCEDURE dbo.pB -- two parameters
@x INT, @y INT
AS PRINT 1
GO
SET XACT_ABORT OFF;
GO
EXEC dbo.pA @foo = 1;
PRINT '### Calling procedure that doesn''t take parameters with a parameter';
GO
EXEC dbo.pB;
PRINT '### Calling procedure that takes 2 parameters with no parameters';
GO
EXEC dbo.pB @x = 1;
PRINT '### Calling procedure that takes 2 parameters with not enough parameters';
GO
EXEC dbo.pB @x = 1, @y = 2, @z = 3;
PRINT '### Calling procedure that takes 2 parameters with too many parameters';
GO
Tutti questi producono errori di livello di gravità 16 e tutti procedono con il batch, come evidenziato dall'output di stampa:
Messaggio 8146, livello 16, stato 2, procedura pA, riga 11 La
procedura pA non ha parametri e sono stati forniti argomenti.
### La procedura di chiamata che non accetta parametri con un parametro
Msg 201, Livello 16, Stato 4, Procedura pB, Riga 14 La
procedura o la funzione 'pB' prevede il parametro '@x', che non è stato fornito.
### La procedura di chiamata che accetta 2 parametri senza parametri
Msg 201, Livello 16, Stato 4, Procedura pB, Riga 18 La
procedura o la funzione 'pB' prevede il parametro '@y', che non è stato fornito.
### La procedura di chiamata che accetta 2 parametri con parametri non sufficienti
Messaggio 8144, Livello 16, Stato 2, Procedura pB, Riga 22
Procedura o funzione pB ha troppi argomenti specificati.
### Procedura di chiamata che accetta 2 parametri con troppi parametri
Come sospettavo, ci sono eccezioni, ovviamente, come osservato nei commenti. L'errore di conversione è di gravità 16 ma interrompe il batch:
SET XACT_ABORT OFF;
SELECT CONVERT (INT, 'foo');
PRINT 'Made it.'; -- no print happens
I risultati non includono l'output di stampa questa volta:
Messaggio 245, livello 16,
conversione stato 1 non riuscita durante la conversione del valore varchar 'pippo' nel tipo di dati int.