Na wypadek, gdyby jakiś samotny koczownik sieciowy natrafił na ten problem, rozwiązanie Torxeda nie działało dla mnie. Ale dla mnie zadziałały następujące rzeczy.
Dzwoniłem do SP, który wstawia niektóre wartości do tabeli, a następnie zwraca niektóre dane. Wystarczy dodać następujące elementy do SP:
SET NOCOUNT ON
Będzie działać dobrze :)
Kod Pythona :
query = "exec dbo.get_process_id " + str(provider_id) + ", 0"
cursor.execute(query)
row = cursor.fetchone()
process_id = row[0]
SP :
USE [DBNAME]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[GET_PROCESS_ID](
@PROVIDER_ID INT,
@PROCESS_ID INT OUTPUT
)
AS
BEGIN
SET NOCOUNT ON
INSERT INTO processes(provider_id) values(@PROVIDER_ID)
SET @PROCESS_ID= SCOPE_IDENTITY()
SELECT @PROCESS_ID AS PROCESS_ID
END