Som OP upptäckte kan inkonsekvent eller ofullständig bearbetning av lagrade procedurer från applikationslager som Python bero på att man avvikit från bästa praxis för TSQL-skript.
Som @AaronBetrand höjdpunkter i denna Checklist för bästa praxis för lagrade procedurer blogg, överväg bland annat följande:
- Använd
BEGIN ... END
uttryckligen och frikostigt block; - Använd
SET NOCOUNT ON
för att undvika meddelanden som skickas till klienten för varje rad som påverkas, vilket eventuellt avbryter arbetsflödet; - Använd semikolon för satsavslutningar.
Exempel
CREATE PROCEDURE dbo.myStoredProc
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM foo;
SELECT * FROM bar;
END
GO