Som OP fandt ud af, kan inkonsekvent eller ufuldstændig behandling af lagrede procedurer fra applikationslag som Python skyldes afvigelse fra bedste praksis for TSQL-scripting.
Som @AaronBetrand højdepunkter i denne Checklist for bedste praksis for lagrede procedurer blog, overvej blandt andet følgende:
- Brug eksplicit og generøst
BEGIN ... END
blokerer; - Brug
SET NOCOUNT ON
for at undgå meddelelser sendt til klienten for hver række berørt handling, muligvis afbrydelse af arbejdsgangen; - Brug semikolon til sætningsafslutninger.
Eksempel
CREATE PROCEDURE dbo.myStoredProc
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM foo;
SELECT * FROM bar;
END
GO