sp_scriptdynamicupdproc (Transact-SQL)
Bir dinamik güncelleştirme'yi oluşturan CREATE PROCEDURE deyim oluşturur saklı yordam.UPDATE deyim özel saklı yordam içinde dinamik olarak tabanlı değiştirmek için hangi sütunların gösteren MCALL sözdizimi, yerleşik olarak bulunur.Bu saklı yordam sayı kullanın, abone dizinlerinin tablo büyüdüğünü ve değiştirilmesini sütun sayısı küçüktür.Bu saklı yordam, Yayımcı tarafında yayın veritabanında çalıştırılır.
sp_scriptdynamicupdproc [ @artid =] artid
Bağımsız değişkenler
- [ @artid=] artid
Is the article ID.artid is int, with no default.
Sonuç Kümeleri
Bir sonuç döndüreceği küme, tek bir oluşur nvarchar(4000) sütun.Sonuç küme özel bir saklı yordam oluşturmak için kullanılan tam CREATE PROCEDURE deyim oluşturur.
Remarks
sp_scriptdynamicupdproc işlem çoğaltmasında kullanılır.Varsayılan MCALL komut dosyası kullanan kullanan dosyası kullanan mantığına tüm sütun içinde bir UPDATE deyim içerir ve bir bit eşlem değişen sütunları belirlemek için kullanır.Bir sütunda değişiklik yaparsanız, sütundur küme geri kendisine, genellikle yok sorunlarına neden oluyor.Sütun dizini fazladan işlem oluşur.Dinamik bir yaklaşım, en iyi bir UPDATE dize sağlayan yalnızca değişmiş olan sütunlar içerir.Dinamik GÜNCELLEŞTIR deyim oluşturulduğunda ancak fazladan işlem çalışma zamanında oluşan.Dinamik ve statik yaklaşımlar sınamak ve sonra da en iyi çözüm seçin öneririz.
İzinler
Yalnızca üyeleri sysadmin sabit sunucu rolü veya db_owner sabit veritabanı rolü çalıştırabilirsinizsp_scriptdynamicupdproc.
Örnekler
Bu örnek, bir makaleyle (oluşturur. artid küme için 1) hakkındaYazarlar tablosundaPubs veritabanı ve UPDATE deyimini yürütmek için özel bir yordam olduğunu belirtir:
'MCALL sp_mupd_authors'
Abone adresindeki dağıtım aracı tarafından Yayımcı tarafında saklı yordamını çalıştırarak yürütülecek özel saklı yordamlarda oluşturur:
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
Bu saklı yordam çalıştırdıktan sonra elde edilen komut dosyası saklı yordamın, abonelerin sırasında el ile oluşturmak için kullanabilirsiniz.