为什么SQL2005在新建复制找不到存储过程提示错误:2812 的解决方法

为什么SQL2005在新建复制找不到存储过程提示错误:2812 的解决方法

当在SQL Server 2005中新建复制时,会使用储存过程,但有时会发生找不到存储过程并提示 2812 错误的情况。这可能是因为在复制的发布服务器和订阅服务器之间出现了问题。

如何解决问题:

  1. 检查数据库引擎服务的运行状态

在SQL Server管理工具中检查数据库引擎服务的运行状态。如果服务没有运行,可以右键服务,选择“启动”来启动服务。

  1. 检查发布服务器和订阅服务器的连接

确保发布服务器和订阅服务器之间存在网络连接,并且可以进行互相访问。在这种情况下,可能需要修改服务器之间的防火墙规则。

  1. 重新创建储存过程

如果以上两个步骤都没有解决问题,可以尝试重新创建储存过程。

下面是两个示例:

第一个示例

假设您在Master数据库中新建了复制,但在NewDB数据库中找不到储存过程。您可以按照下列步骤操作:

USE [master]
GO
EXEC dbo.sp_addpublication 
    @publication = N'PublicationName', 
    @description = N'', 
    @sync_method = N'native', 
    @retention = 0, 
    @allow_push = N'true', 
    @allow_pull = N'true', 
    @allow_anonymous = N'false', 
    @enabled_for_internet = N'false', 
    @snapshot_in_defaultfolder = N'true', 
    @compress_snapshot = N'false', 
    @ftp_port = 21, 
    @ftp_login = N'anonymous', 
    @allow_subscription_copy = N'false', 
    @add_to_active_directory = N'false', 
    @repl_freq = N'continuous', 
    @status = N'active', 
    @independent_agent = N'true', 
    @immediate_sync = N'true', 
    @allow_sync_tran = N'false', 
    @autogen_sync_procs = N'false', 
    @validate = N'false', 
    @allow_queued_tran = N'false', 
    @allow_dts = N'false', 
    @replicate_ddl = 1, 
    @allow_initialize_from_backup = N'false', 
    @enabled_for_p2p = N'false', 
    @enabled_for_het_sub = N'false'
GO

在这个例子中,我们使用“dbo.sp_addpublication”储存过程创建了一个发布。我们可以用类似的方法重新创建其他可能出现问题的储存过程。

第二个示例

看下面的语句:

exec master.sys.sp_MSacquirePublisherLocalForSub

可以使用以下语句重新创建此储存过程:

USE [master]
GO
IF EXISTS ( SELECT  * FROM    sys.objects
            WHERE   [object_id] = OBJECT_ID(N'[sys].[sp_MSacquirePublisherLocalForSub]')
                    AND [type] IN (N'P', N'PC') ) 
    DROP PROCEDURE [sys].[sp_MSacquirePublisherLocalForSub]
GO
USE [distribution]
GO
IF EXISTS ( SELECT  * FROM    sys.objects
            WHERE   [object_id] = OBJECT_ID(N'[dbo].[MSacquirePublisherLocalForSub]')
                    AND [type] IN (N'P', N'PC') ) 
            DROP PROCEDURE [dbo].[MSacquirePublisherLocalForSub]
GO
USE [master]
GO

CREATE PROCEDURE [sys].[sp_MSacquirePublisherLocalForSub](@publisher
sysname, @publisher_db sysname, @publication sysname)

AS

SET NOCOUNT ON

DECLARE @retcode INT
DECLARE @distproc sysname

-- parameter check
IF (@publisher IS NULL) OR (@publisher_db IS NULL)
     OR (@publication IS NULL)
BEGIN
    RAISERROR (20054, 16, -1)
    RETURN (1)
END

-- Make sure there is no overlap between the publication database and the
-- distribution database
IF UPPER(@publisher_db) = UPPER(DB_NAME())
BEGIN
    RAISERROR (21262, 16, -1, '@publisher_db')
    RETURN (1)
END
IF UPPER(@publisher_db) = UPPER(masteR.sys.sp_get_qdistrib_info())
BEGIN
    RAISERROR (21262, 16, -1, '@publisher_db')
    RETURN (1)
END

-- EXEC @retcode = sp_get_mysubscription @publisher, @publisher_db, @publication
-- IF (@@error != 0) OR (@retcode != 0)
--     RETURN (@retcode)

EXEC @retcode = master..sp_MSget_version @@servername, @distproc OUT, 1
IF @@error != 0
    RETURN (1)

在这个示例中,我们使用相同的名称和相似的语法重新创建“sys.sp_MSacquirePublisherLocalForSub”储存过程。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:为什么SQL2005在新建复制找不到存储过程提示错误:2812 的解决方法 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • Windows下使用Gogs搭建Git服务器

    下面是详细讲解“Windows下使用Gogs搭建Git服务器”的完整攻略。 准备环境 系统要求 Windows 系统 Git for Windows 安装Gogs 下载Gogs:在Gogs官网下载最新的Windows安装包(zip格式)。 解压Gogs:将下载好的zip包解压到想要安装的目录。 启动Gogs:双击解压目录下的gogs.exe即可启动Gogs。…

    database 2023年5月22日
    00
  • 详解MySQL多表关联更新

    MySQL多表关联更新,是指在多个表之间建立关联关系,并在其中一个表中更新与另一个表相关的数据。例如,我们有两个表:用户表(users)和订单表(orders)。用户表中存储了用户的基本信息,订单表中存储了用户的订单信息(比如订单编号、用户ID、订单金额等)。如果我们要更新用户表中的数据(比如用户的名字),同时更新相关订单表中的数据(比如订单中的用户姓名需要…

    MySQL 2023年3月10日
    00
  • Docker开启远程连接并实现安全通信详解

    一、什么是Docker Docker是一种用于开发、发布和运行应用程序的开源容器化工具。相较于虚拟机来说,它更加轻量级和灵活,并且可以运行在各种不同的环境中,提高了应用程序迁移和部署的效率。 二、Docker开启远程连接 默认情况下,Docker并不开启TCP Socket的连接,需要手动开启。 修改Docker配置文件 使用root用户登录到服务器上,编辑…

    database 2023年5月22日
    00
  • CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法

    下面是“CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法”的完整攻略。 1. 安装编译工具 在编译PHP7之前,我们需要先安装一些编译工具。在CentOS下,可以使用以下命令进行安装: yum update yum install gcc libgcc libstdc++ gcc-c++ zlib-devel autoconf au…

    database 2023年5月22日
    00
  • Java实现格式化打印慢SQL日志的方法详解

    Java实现格式化打印慢SQL日志的方法详解 什么是慢SQL 慢SQL是指运行时间较长的SQL语句,通常是因为查询条件或者表结构不合理引起的。慢SQL会导致数据库负载过高,造成系统性能的下降,需要及时处理。 为什么要格式化打印慢SQL日志 在开发和调试过程中,我们需要定位并优化慢SQL语句。而格式化打印慢SQL日志可以直观地展示出SQL语句的执行过程,方便我…

    database 2023年5月21日
    00
  • Windows Server2012 R2 无法安装.NET Framework 3.5的解决方法

    针对“Windows Server 2012 R2 无法安装.NET Framework 3.5”的问题,我们可以采取以下两种方法解决: 方法一:通过Windows Server 2012 R2安装媒体进行安装 确认已插入Windows Server 2012 R2 ISO文件或安装光盘。 通过PowerShell以管理员身份运行以下命令: dism /on…

    database 2023年5月21日
    00
  • Windows下Redis x64的安装与使用教程详解

    Windows下Redis x64的安装与使用教程详解 1. 下载Redis 在Redis官网(https://redis.io/download)下载Redis的Windows版本,选择 .zip 格式的文件,根据自己电脑的架构选择32位或者64位的,下载完成后解压缩到本地磁盘。 2. Redis的安装 进入Redis解压后的文件夹中,找到 redis-s…

    database 2023年5月22日
    00
  • redis简介_动力节点Java学院整理

    Redis简介 什么是Redis Redis(Remote Dictionary Server)是一个由Salvatore Sanfilippo写的开源的、基于内存的数据结构存储系统,可以用作数据库(key-value存储)、缓存和消息中间件等。Redis支持多种数据结构,如字符串(String)、列表(List)、集合(Set)、哈希(Hash)和有序集合…

    database 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部