发布的初始快照尚不可用

Microsoft.SQLServer.2008.InitialSnapshotForPublicationIsNotYetAvailableRule (Rule)

Knowledge Base article:

摘要

等待项目缓存访问事件时 SQL Server 记录了错误。

原因

在下列情况下,将出现上面的错误。

对于合并复制:

当您创建或重新初始化合并订阅,且在启动快照代理程序之前或快照代理程序完成之前启动了合并代理,将出现此错误。

对于事务复制:

你已创建或重新初始化了使用“是,初始化架构和数据”选项创建的事务订阅,并且在启动快照代理之前或快照代理完成之前启动了分发代理。仅当该订阅是与分发代理关联的唯一订阅,或与分发代理关联的所有订阅均处于上述状态时,才会出现此错误。一旦与分发代理关联的任何一个订阅有可用快照,代理历史记录消息将变为“没有复制的事务”,或者它将报告为与此代理关联的其他订阅传送的事务和命令数。如果事务发布中仅有一个项目,且该项目满足上述标准,则错误将变为 21076“项目的初始快照尚不可用”。

解决方法

如果自创建订阅后关联的快照代理未启动过,或者自上一次选择重新初始化订阅后它未启动过,您将需要启动快照代理,并让它完成之后再启动合并代理或分发代理。

如果快照代理没有完成,请检查快照代理历史记录以查找错误并将其消除。如有必要,您可以给快照代理添加一个日志,以查看是否能为您看到的任何错误返回更多详细信息。

外部

How to enable replication agents for logging to output files in SQL Server(如何启用复制代理以便记录到 SQL Server 中的输出文件)

可替代参数

名称

说明

默认值

已启用

启用或禁用工作流。

优先级

定义警报优先级。

1

严重性

定义警报严重性。

1

Element properties:

TargetMicrosoft.SQLServer.2008.DBEngine
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityWarning
Alert PriorityNormal
RemotableTrue
Alert Message
发布的初始快照尚不可用
{0}

Member Modules:

ID Module Type TypeId RunAs 
DS DataSource Microsoft.SQLServer.2008.EventProvider Default
GenerateAlert WriteAction System.Health.GenerateAlert Default

Source Code:

<Rule ID="Microsoft.SQLServer.2008.InitialSnapshotForPublicationIsNotYetAvailableRule" Target="SQL2008Core!Microsoft.SQLServer.2008.DBEngine" Enabled="true" ConfirmDelivery="true">
<Category>EventCollection</Category>
<DataSources>
<DataSource ID="DS" TypeID="Microsoft.SQLServer.2008.EventProvider">
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<PublisherName>$Target/Property[Type="SQL!Microsoft.SQLServer.DBEngine"]/ServiceName$</PublisherName>
<EventNumber>21075</EventNumber>
</DataSource>
</DataSources>
<WriteActions>
<WriteAction ID="GenerateAlert" TypeID="SystemHealth!System.Health.GenerateAlert">
<Priority>1</Priority>
<Severity>1</Severity>
<AlertMessageId>$MPElement[Name="Microsoft.SQLServer.2008.InitialSnapshotForPublicationIsNotYetAvailableRule.AlertMessage"]$</AlertMessageId>
<AlertParameters>
<AlertParameter1>$Data/EventDescription$</AlertParameter1>
</AlertParameters>
<Suppression>
<SuppressionValue>$Data/LoggingComputer$</SuppressionValue>
<SuppressionValue>$Data/PublisherName$</SuppressionValue>
<SuppressionValue>$Data/EventDisplayNumber$</SuppressionValue>
</Suppression>
</WriteAction>
</WriteActions>
</Rule>