Nie mówię o robieniu „SET NOCOUNT OFF". Ale mam procedurę składowaną, której używam do wstawiania niektórych danych do niektórych tabel. Ta procedura tworzy ciąg odpowiedzi xml, przykład:
CREATE PROCEDURE [dbo].[insertSomeData] (@myParam int) AS
DECLARE @reply varchar(2048)
...
SET @reply = '<xml><big /><outputs /></xml>'
SELECT @reply
GO
Więc stworzyłem skrypt, który używa tego SP kilka razy, a „wynik” xml staje się zbyt duży (już raz rozbił moje okno). Czy istnieje sposób na ukrycie lub przekierowanie danych wyjściowych wygenerowanych z tej procedury składowanej? Powyższy dodatek SP jest wywoływany przez skrypt aktualizacji T-SQL, który napisałem, do uruchomienia za pośrednictwem menedżera Enterprise Studio itp.
WHILE unprocessedRecordsLeft
BEGIN
SELECT top 1 record from updateTable where Processed = 0
EXEC insertSomeData @param = record_From_UpdateTable
END
Powiedzmy, że UpdateTable zawiera około 50 000 rekordów. Ten SP jest wywoływany 50k razy, zapisując 50k ciągów xml do okna wyjściowego. Nie zatrzymało to serwera SQL, tylko aplikację.
Za wszelką pomoc dziękuję!
1 odpowiedź
-- Załóżmy, że ta tabela pasuje do wyniku twojej procedury
DECLARE @tmpNewValue TABLE ([Id] int, [Name] varchar(50))
INSERT INTO @tmpNewValue
EXEC ProcedureB
SELECT * FROM @tmpNewValu