Oprava: Nesprávný parametr číslování dochází k vlastní uložené procedury, jsou generovány s Sp_scriptpublicationcustomprocs uložená procedura

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

Projděte si také anglickou verzi článku:827175
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Příznaky
Když se pokusíte spustit vlastní uložené procedury, které byly generovány s sp_scriptpublicationcustomprocs uložené procedury, obdržíte následující zprávu 137 chyba
Musí deklarovat proměnnou ' %. * ls'
Pokud jsou splněny všechny následující podmínky:
  • Odběry okamžité aktualizace jsou povoleny v publikaci (@ allow_sync_tran = 'True').
  • Front změny na odběratelům je povoleno (@ allow_queued_tran = 'True').
  • Tabulky, která má nesprávné vlastní uložené procedury, které byly vytvořeny s sp_scriptpublicationcustomprocs uložená procedura obsahuje vypočítaného sloupce.
  • Tabulka, která má nesprávné vlastní uložené procedury, které byly vytvořeny s sp_scriptpublicationcustomprocs uložená procedura má jedinečné indexy.
Řešení

Informace o aktualizaci Service Pack

Tento problém vyřešíte získat nejnovější aktualizaci service pack pro 2000 Microsoft SQL Server. Další informace získáte v následujícím článku znalostní báze Microsoft Knowledge Base:
290211Jak získat nejnovější aktualizaci Service Pack pro SQL Server 2000

Informace o opravě hotfix

Postupujte podle kroků v části "Další informace" nainstalovat a aktivovat tuto opravu.

Anglická verze této opravy má následující atributy souborů (nebo novější). Data a časy jednotlivých souborů jsou uvedeny ve formátu UTC (Coordinated Universal Time). Pokud zobrazíte informace o souboru, bude převedena na místní čas. Rozdíl mezi místním ČASEM a najít, použijte kartu časové pásmo v ovládacím panelu Datum a čas.
   Date         Time   Version            Size    File name   ----------------------------------------------------------------------   31-May-2003  09:45  2000.80.818.0      78,400  Console.exe         24-Jun-2003  16:01  2000.80.818.0      33,340  Dbmslpcn.dll   24-Apr-2003  17:12                    786,432  Distmdl.ldf   24-Apr-2003  17:12                  2,359,296  Distmdl.mdf   29-Jan-2003  16:55                        180  Drop_repl_hotfix.sql   23-Jun-2003  13:40  2000.80.837.0   1,557,052  Dtsui.dll   23-Jun-2003  13:40  2000.80.837.0     639,552  Dtswiz.dll   23-Apr-2003  17:51                    747,927  Instdist.sql   02-May-2003  16:56                      1,581  Inst_repl_hotfix.sql   07-Feb-2003  21:40  2000.80.765.0      90,692  Msgprox.dll   31-Mar-2003  17:07                      1,873  Odsole.sql   04-Apr-2003  16:46  2000.80.800.0      62,024  Odsole70.dll   07-May-2003  11:41  2000.80.819.0      25,144  Opends60.dll   02-Apr-2003  12:48  2000.80.796.0      57,904  Osql.exe   02-Apr-2003  14:15  2000.80.797.0     279,104  Pfutil80.dll   04-Aug-2003  09:17                    550,780  Procsyst.sql   22-May-2003  13:57                     19,195  Qfe469571.sql   11-Jul-2003  08:04                  1,084,147  Replmerg.sql   04-Apr-2003  12:53  2000.80.798.0     221,768  Replprov.dll        07-Feb-2003  21:40  2000.80.765.0     307,784  Replrec.dll   13-Aug-2003  07:28                  1,086,797  Replsys.sql   13-Aug-2003  07:28                    986,603  Repltran.sql   29-Jul-2003  11:13  2000.80.819.0     492,096  Semobj.dll   31-May-2003  09:27  2000.80.818.0     172,032  Semobj.rll   05-Aug-2003  12:06                    127,884  Sp3_serv_uni.sql   31-May-2003  16:01  2000.80.818.0   4,215,360  Sqldmo.dll   07-Apr-2003  08:44                     25,172  Sqldumper.exe       19-Mar-2003  09:20  2000.80.789.0      28,672  Sqlevn70.rll   01-Jul-2003  15:18  2000.80.834.0     180,736  Sqlmap70.dll   07-Feb-2003  21:40  2000.80.765.0      57,920  Sqlrepss.dll   13-Aug-2003  11:04  2000.80.851.0   7,598,161  Sqlservr.exe   25-Jul-2003  12:44  2000.80.845.0     590,396  Sqlsort.dll   07-Feb-2003  21:40  2000.80.765.0      45,644  Sqlvdi.dll   24-Jun-2003  16:01  2000.80.818.0      33,340  Ssmslpcn.dll   31-May-2003  16:01  2000.80.818.0      82,492  Ssnetlib.dll   31-May-2003  16:01  2000.80.818.0      25,148  Ssnmpn70.dll   31-May-2003  16:01  2000.80.818.0     158,240  Svrnetcn.dll   31-May-2003  09:59  2000.80.818.0      76,416  Svrnetcn.exe   30-Apr-2003  14:52  2000.80.816.0      45,132  Ums.dll   01-Jul-2003  15:19  2000.80.834.0      98,816  Xpweb70.dll				
Poznámka z důvodu závislosti souborů, nejnovější opravy hotfix nebo funkce, která obsahuje soubory může také obsahovat další soubory.
Prohlášení
Společnost Microsoft potvrzuje, že se jedná o problém v produktech společnosti, které jsou uvedeny v části "Platí pro" v tomto článku.Tento problém byl poprvé opraven v Microsoft SQL Server 2000 Service Pack 4.
Další informace
Nainstalovat a aktivovat opravu, postupujte takto:
  1. Získat oprava popsaná v "Řešení" části tohoto článku.
  2. Použití opravy ohrožený publikování instance SQL Server 2000.
  3. Označit ohrožený odběru reinitialization:
    • Pro odběry push:

      V nástroji Enterprise Manager otevřete strom Publisher serveru a vyhledejte uzel Odběry replikace. Ovlivněné odběru klepněte pravým tlačítkem myši a klepněte na tlačítko znovu inicializovat.
    • Pro odběry Pull:

      V nástroji Enterprise Manager otevřete strom Subscriber serveru a vyhledejte uzel Odběry replikace. Ovlivněné odběru klepněte pravým tlačítkem myši a klepněte na tlačítko znovu inicializovat.
  4. Spustit agenta Snapshot ohrožený publikace.
To reproduce the problem, run the following script in a server that already has replication configured:
USE mastergoCREATE DATABASE TestDatabasegoUSE TestDatabasegoCREATE TABLE [dbo].[TestTable] ([col1] [int] NOT NULL ,[col2] [int] NOT NULL ,[col3] AS ([col1] + [col2]) ,[msrepl_tran_version] [uniqueidentifier] NOT NULL) ON [PRIMARY]goALTER TABLE [dbo].[TestTable] WITH NOCHECK ADDCONSTRAINT [PK_TestTable] PRIMARY KEY CLUSTERED([col1]) ON [PRIMARY]goALTER TABLE [dbo].[TestTable] ADDCONSTRAINT [DF_TestTable_msrepl_tran_vers] DEFAULT (newid()) FOR[msrepl_tran_version]goCREATE UNIQUE INDEX [IX_T1UNIQUE] ON[dbo].[TestTable]([msrepl_tran_version]) ON [PRIMARY]gouse [TestDatabase]goexec sp_replicationdboption @dbname = N'TestDatabase', @optname = N'publish', @value = N'true'goexec sp_addpublication @publication = N'TestDatabase', @restricted = N'false', 			@sync_method = N'native', @repl_freq = N'continuous', 			@description = N'Transactional publication of TestDatabase database from Publisher NAURU-SRV-01.', 			@status = N'inactive', @allow_push = N'true', @allow_pull = N'true', @allow_anonymous = N'false', 			@enabled_for_internet = N'false', @independent_agent = N'false', @immediate_sync = N'false', 			@allow_sync_tran = N'true', @autogen_sync_procs = N'true', @retention = 336, 			@allow_queued_tran = N'true', @snapshot_in_defaultfolder = N'true', 			@compress_snapshot = N'false', @ftp_port = 21, @allow_dts = N'false', 			@allow_subscription_copy = N'false', @conflict_policy = N'pub wins', 			@centralized_conflicts = N'true', @conflict_retention = 14, 			@queue_type = N'sql', @add_to_active_directory = N'false'exec sp_addpublication_snapshot @publication = N'TestDatabase',@frequency_type = 4, @frequency_interval = 1, 				@frequency_relative_interval = 0, @frequency_recurrence_factor = 1, 				@frequency_subday = 1, @frequency_subday_interval = 0, @active_start_date = 0, 				@active_end_date = 20030814, @active_start_time_of_day = 224200, @active_end_time_of_day = 0exec sp_addarticle @publication = N'TestDatabase', @article = N'TestTable', @source_owner = N'dbo', 				@source_object = N'TestTable', 				@destination_table = N'TestTable', @type = N'logbased', @creation_script = null, 				@description = null, @pre_creation_cmd = N'drop', @schema_option = 0x000000000000CEF3, 				@status = 16, @force_invalidate_snapshot = 1, @vertical_partition = N'false', 				@ins_cmd = null, @del_cmd = null, @upd_cmd = null, @filter = null, @sync_object = null, 				@auto_identity_range = N'false'exec sp_changepublication @publication = N'TestDatabase', @force_invalidate_snapshot = 1, @force_reinit_subscription = 1, 				@property = N'status', @value = N'active'
After the publication is created, if you run the following statement:
exec sp_scriptpublicationcustomprocs 'TestDatabase'

obdržíte následující skript (chybné):
---- Transactional replication custom procedures for publication 'TestDatabase' from database 'TestDatabase':---------- Replication custom procedures for article 'TestTable':----if exists (select * from sysobjects where type = 'P' and name = 'sp_MSins_TestTable')  drop proc [sp_MSins_TestTable]gocreate procedure [sp_MSins_TestTable] @c1 int,@c2 int,@c3 uniqueidentifier,@c4 intASBEGINif not exists (select * from [TestTable]  where  ( [col1] = @c1 )  or  ( [col4] = @c5 ) )BEGINinsert into [TestTable]( [col1], [col2], [msrepl_tran_version], [col4] )values ( @c1, @c2, @c3, @c4 )ENDENDgoif exists (select * from sysobjects where type = 'P'  and name = 'sp_MSupd_TestTable')  drop proc [sp_MSupd_TestTable]gocreate procedure [sp_MSupd_TestTable]  @c1 int,@c2 int,@c3 uniqueidentifier,@c4 int,@c5 int,@c6 int,@c7 uniqueidentifier,@c8 intasif not exists (select * from [TestTable]  where  ( [col4] = @c9 and @c9 != @c5 ) )beginif @c5 = @c1beginupdate [TestTable] set [col2] = @c6,[msrepl_tran_version] = @c7,[col4] = @c8where [col1] = @c1 and msrepl_tran_version = @c3endelsebeginif not exists (select * from [TestTable]  where  ( [col1] = @c5 ) )beginupdate [TestTable] set [col1] = @c5,[col2] = @c6,[msrepl_tran_version] = @c7,[col4] = @c8where [col1] = @c1 and msrepl_tran_version = @c3endendendgoif exists (select * from sysobjects where type = 'P' and name = 'sp_MSdel_TestTable')  drop proc [sp_MSdel_TestTable]gocreate procedure [sp_MSdel_TestTable] @c1 int,@c2 int,@c3 uniqueidentifier,@c4 intasdelete [TestTable]where [col1] = @c1 and msrepl_tran_version = @c3go
Upozornění vlastní vložit uloženou proceduru sp_MSins_TestTable odkazuje parametr s názvem @ c5. @ c5 není deklarován jako parametr pro danou proceduru a vlastní aktualizaci uložené procedury sp_MSupd_TestTable odkazy jiného nedefinovaný parametr s názvem @ c9.

Upozornění: Tento článek je přeložený automaticky

Vlastnosti

ID článku: 827175 - Poslední kontrola: 02/28/2014 12:12:58 - Revize: 3.4

Microsoft SQL Server 2000 Service Pack 3, Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 2000 Workgroup Edition, Microsoft SQL Server 2000 Desktop Engine (Windows), Microsoft SQL Server 2000 Enterprise Edition 64-bit

  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbqfe kbsqlserv2000presp4fix kbfix kbbug KB827175 KbMtcs
Váš názor