Poprawka: Program SQL Server może spowodować awarię wniosek o wykonanie zdalna procedura składowana zawiera niekompletne definicji argumenty

WAŻNE: Ten artykuł został przetłumaczony przy użyciu oprogramowania firmy Microsoft do tłumaczenia maszynowego i może być poprawiony przy użyciu technologii Community Translation Framework (CTF). Firma Microsoft udostępnia artykuły tłumaczone maszynowo, poprawione przez społeczność, a także tłumaczone przez tłumaczy profesjonalnych, aby zapewnić dostęp do wszystkich artykułów w bazie wiedzy w wielu językach. Artykuły tłumaczone maszynowo i poprawione mogą zawierać błędy pisowni, składniowe i gramatyczne. Firma Microsoft nie ponosi odpowiedzialności za żadne nieścisłości, błędy ani szkody spowodowane przez niepoprawne tłumaczenia zawartości ani przez korzystanie z niej przez klientów. Więcej o strukturze CTF: http://support.microsoft.com/gp/machine-translation-corrections/pl.

Anglojęzyczna wersja tego artykułu to: 3135750
Symptomy
Na serwerze zdalnym z systemem Microsoft SQL Server 2012 lub SQL Server 2014 masz procedurę przechowywaną, która wymaga argumentu dane wyjściowe podobne do następujących:

create procedure procExample @retVal varchar(10) outputas set @retVal = 'Goodbye';
Zazwyczaj składni do wywołania procedury zdalnej podobny do następującego:

-- Declare a variable to hold a result, and have it initialized with a non-NULL valuedeclare @outputResult varchar(10) = 'Hello';execute ('MyDb.dbo.procExample ? OUTPUT', @outputResult OUTPUT) at [MyRemoteServer];print @outputResult;
Jeżeli pominięto "? Wyjście"część Składnia wywołania serwera lokalnego, na którym jest uruchomiony program SQL Server może ulec awarii. Serwer zdalny nadal działać, ponieważ wykonanie nigdy nie osiąga ona ze względu na pominięcie tej składni. Na przykład składnia podobny do następującego:

-- Declare a variable to hold a result, and have it initialized with a non-NULL valuedeclare @outputResult varchar(10) = 'Hello';execute ('MyDb.dbo.procExample', @outputResult OUTPUT) at [MyRemoteServer];
Zmienna, która nie została zainicjowana nie powoduje awarię serwera lokalnego. Jednakże generuje komunikat o błędzie z informacją, że nie wszystkie argumenty są określone dla wywołania (tak jak powinny). Na przykład możesz mieć następującą składnię:

-- Declare a variable to hold a result, and initialize it with NULL, or leave uninitializeddeclare @outputResult varchar(10) = NULL;execute ('MyDb.dbo.procExample', @outputResult OUTPUT) at [MyRemoteServer];
W takim przypadku pojawi się komunikat o błędzie podobny do następującego:

Msg 201, poziom: 16, stan 4, procExample procedurę, wiersz 10

Procedura lub funkcja 'procExample' oczekuje, że parametr '@retVal', który nie został dostarczony.
Rozwiązanie

Informacje o aktualizacji

Ten problem został po raz pierwszy rozwiązany w następującą aktualizację zbiorczą dla programu SQL Server:
Zalecenie: Zainstalować najnowszą aktualizację zbiorczą dla programu SQL Server

Każda nowa aktualizacja zbiorcza dla programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały uwzględnione w poprzedniej zbiorczej aktualizacji. Sprawdź najnowsze aktualizacje zbiorcze dla programu SQL Server:

Uwaga: Można znaleźć informacje o najnowszych SQL Server tworzy na podstawie Gdzie można znaleźć informacje o najnowszych SQL Server tworzy.
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.
Materiały referencyjne
Dowiedz się więcej o terminologia używaną przez firmę Microsoft do opisywania aktualizacji oprogramowania.

Właściwości

Identyfikator artykułu: 3135750 — ostatni przegląd: 05/31/2016 12:16:00 — zmiana: 3.0

Microsoft SQL Server 2012 Service Pack 2, Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbexpertiseinter kbsurveynew kbmt KB3135750 KbMtpl
Opinia