Come OP ha scoperto, l'elaborazione incoerente o incompleta delle procedure archiviate dal livello dell'applicazione come Python potrebbe essere dovuta all'allontanamento dalle migliori pratiche di scripting TSQL.
Come @AaronBetrand punti salienti in questa Elenco di controllo delle migliori pratiche per le procedure archiviate blog, considera, tra le altre cose, quanto segue:
- Utilizza in modo esplicito e libero
BEGIN ... END
blocchi; - Usa
SET NOCOUNT ON
per evitare messaggi inviati al client per ogni riga interessata dall'azione, eventualmente interrompendo il flusso di lavoro; - Usa il punto e virgola per i terminatori di istruzioni.
Esempio
CREATE PROCEDURE dbo.myStoredProc
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM foo;
SELECT * FROM bar;
END
GO