發行集還沒有初始快照集

Microsoft.SQLServer.2008.InitialSnapshotForPublicationIsNotYetAvailableRule (Rule)

Knowledge Base article:

摘要

在等候發行項快取存取事件時 SQL Server 記錄了錯誤。

原因

下列情況下將會出現上述錯誤。

合併式複寫:

當您建立或重新初始化合併式訂閱時,並已在快照集代理程式啟動或完成之前啟動的合併代理程式,即會看到此錯誤。

異動複寫:

您已建立或重新初始化使用 [是,初始化結構描述與資料] 選項建立的交易式訂閱,且已在啟動快照集代理程式或快照集代理程式完成之前啟動散發代理程式。只有當訂閱是與散發代理程式相關聯的唯一訂閱,或與散發代理程式相關聯的所有訂閱均處於上述狀態時,才會出現此錯誤。一旦與散發代理程式相關聯的任何一個訂閱有可用快照集,代理程式歷程訊息將會顯示「沒有可用的複寫交易」,或者將會報告為此代理程式其他關聯訂閱所傳送的交易與命令數量。如果交易式發行集中只有一個發行項,並且該發行項滿足上述條件,錯誤將會變為 21076「發行項的初始快照集仍然無法使用」。

解決方式

如果自從建立訂閱或自從上次選擇重新初始化訂閱後未啟動關聯的快照集代理程式,您將需要啟動快照集代理程式,並讓它在啟動合併代理程式或散發代理程式之前完成。

若快照集代理程式未完成,請檢查快照集代理程式記錄,以便找出錯誤並加以解決。必要的話,您可以將記錄檔新增到快照集代理程式,以查看是否可傳回看到的任何錯誤的詳細資料。

外部資源

如何啟用複寫代理程式以記錄至 SQL Server 的輸出檔案

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>