Udostępnij za pośrednictwem


sp_scriptdynamicupdproc (Transact-SQL)

Generuje instrukcja CREATE PROCEDURE, która tworzy procedura przechowywana aktualizacji dynamicznych.Instrukcja UPDATE w ramach niestandardowe procedura przechowywana jest zbudowana dynamicznie oparte na składni MCALL, która wskazuje, które kolumny, aby zmienić.Jeśli rośnie liczba indeksów w tabela subskrypcji i jest mała liczba kolumn przed zmianami za pomocą tej procedura przechowywana.Ta procedura przechowywana jest uruchamiane w Wydawca do bazy danych w publikacja.

Topic link iconKonwencje składni języka Transact-SQL

sp_scriptdynamicupdproc [ @artid =] artid

Argumenty

  • [ @artid=] artid
    Is the article ID.artid is int, with no default.

Zestawy wyników

Zwraca zestaw wyników, która składa się z pojedynczego nvarchar(4000) kolumna.Zestaw wyników formularzy zakończenie instrukcja CREATE PROCEDURE, używane do tworzenia niestandardowych procedura przechowywana.

Remarks

sp_scriptdynamicupdproc jest używany w replikacja transakcyjnej.Logika wykonywanie wykonywanie skryptów MCALL domyślne obejmuje wszystkie kolumny w instrukcja UPDATE i za pomocą mapy bitowej określa kolumny, które uległy zmianie.Jeżeli kolumny nie został zmieniony, kolumna jest zestaw do siebie, co powoduje zazwyczaj żadnych problemów.Jeżeli kolumna jest indeksowana, dodatkowe przetwarzanie odbywa się.Dynamiczne podejście zawiera tylko te kolumny, które uległy zmianie, który zapewnia optymalną ciąg UPDATE.Jednak dodatkowe przetwarzanie powstaje w czasie wykonywania podczas konstruowania dynamicznych instrukcja UPDATE.Firma Microsoft zaleca, aby przetestować metod dynamicznych i statycznych, a następnie wybierz polecenie optymalnym rozwiązaniem.

Uprawnienia

Tylko członkowie sysadmin Rola serwera lub db_owner stała rola bazy danych może być wykonywany sp_scriptdynamicupdproc.

Przykłady

W tym przykładzie tworzony artykuł (z artid zestaw do 1) na Autorzy tabelaPubs bazy danych i określa, że instrukcja UPDATE niestandardowe procedura do wykonać:

'MCALL sp_mupd_authors'

Generowanie niestandardowych procedur przechowywanych, które mają być wykonane przez agenta dystrybucji przez subskrybent, uruchamiając następującą procedura przechowywana przez wydawcę:

EXEC sp_scriptdynamicupdproc @artid = '1'

The statement returns:

CREATE PROCEDURE [sp_mupd_authors] 
  @c1 varchar(11),@c2 varchar(40),@c3 varchar(20),@c4 char(12),@c5 varchar(40),@c6 varchar(20),
  @c7 char(2),@c8 char(5),@c9 bit,@pkc1 varchar(11),@bitmap binary(2)
as

declare @stmt nvarchar(4000), @spacer nvarchar(1)
SELECT @spacer =N''
SELECT @stmt = N'UPDATE [authors] SET '

if substring(@bitmap,1,1) & 2 = 2
begin
  select @stmt = @stmt + @spacer + N'[au_lname]' + N'=@2'
  select @spacer = N','
end
if substring(@bitmap,1,1) & 4 = 4
begin
  select @stmt = @stmt + @spacer + N'[au_fname]' + N'=@3'
  select @spacer = N','
end
if substring(@bitmap,1,1) & 8 = 8
begin
  select @stmt = @stmt + @spacer + N'[phone]' + N'=@4'
  select @spacer = N','
end
if substring(@bitmap,1,1) & 16 = 16
begin
  select @stmt = @stmt + @spacer + N'[address]' + N'=@5'
  select @spacer = N','
end
if substring(@bitmap,1,1) & 32 = 32
begin
  select @stmt = @stmt + @spacer + N'[city]' + N'=@6'
  select @spacer = N','
end
if substring(@bitmap,1,1) & 64 = 64
begin
  select @stmt = @stmt + @spacer + N'[state]' + N'=@7'
  select @spacer = N','
end
if substring(@bitmap,1,1) & 128 = 128
begin
  select @stmt = @stmt + @spacer + N'[zip]' + N'=@8'
  select @spacer = N','
end
if substring(@bitmap,2,1) & 1 = 1
begin
  select @stmt = @stmt + @spacer + N'[contract]' + N'=@9'
  select @spacer = N','
end
select @stmt = @stmt + N' where [au_id] = @1'
exec sp_executesql @stmt, N' @1 varchar(11),@2 varchar(40),@3 varchar(20),@4 char(12),@5 varchar(40),
                             @6 varchar(20),@7 char(2),@8 char(5),@9 bit',@pkc1,@c2,@c3,@c4,@c5,@c6,@c7,@c8,@c9

if @@rowcount = 0
   if @@microsoftversion>0x07320000
      exec sp_MSreplraiserror 20598

Po zakończeniu tej procedura przechowywana, wynikowy skryptu umożliwia ręcznie utworzyć procedura przechowywana w subskrybentów.

See Also

Other Resources