Hello,
I got error message "Prefetch objects failed for Database ‘MyDB’" when I try
to run the snapshot agent to create a snapshot. It is a SQL 2005 merger
replication. Further more I find it can generate the snapshot if there is
only one table in articles. If I add one more table the error occurred. It
doesn’t matter which table or how simple the table is. However I can create
a snapshot by adding more than one stored procedure in the articles at the
same time without error. (E.g. one table, 3 procedures but not 2 tables).
Any help would be greatly appreciated.
John
Message:
Error messages:
• Source: Microsoft.SqlServer.Smo
Target Site: Void PrefetchObjectsImpl(System.Type,
Microsoft.SqlServer.Management.Smo.ScriptingOptions)
Message: Prefetch objects failed for Database 'MyDB'.
Stack: at
Microsoft.SqlServer.Management.Smo.Database.PrefetchObjectsImpl(Type
objectType, ScriptingOptions scriptingOptions)
at
Microsoft.SqlServer.Replication.Snapshot.SmoScriptingManager.PrefetchObjects()
at
Microsoft.SqlServer.Replication.Snapshot.SmoScriptingManager.DoPrefetchWithRetry()
at
Microsoft.SqlServer.Replication.Snapshot.SmoScriptingManager.DoScripting()
at
Microsoft.SqlServer.Replication.Snapshot.SqlServerSnapshotProvider.DoScripting()
at
Microsoft.SqlServer.Replication.Snapshot.MergeSnapshotProvider.DoScripting()
at
Microsoft.SqlServer.Replication.Snapshot.SqlServerSnapshotProvider.GenerateSnapshot()
at Microsoft.SqlServer.Replication.SnapshotGenerationAgent.InternalRun()
at Microsoft.SqlServer.Replication.AgentCore.Run() (Source:
Microsoft.SqlServer.Smo, Error number: 0)
Get help: http://help/0
• Source: Microsoft.SqlServer.SqlEnum
Target Site: System.String GetString(Int32)
Message: Unable to cast object of type 'System.DBNull' to type
'System.String'.
Stack: at Microsoft.SqlServer.Management.Smo.DataProvider.GetString(Int32
i)
at Microsoft.SqlServer.Management.Smo.ObjectKeyBase.CreateKeyOffset(Type
t, IDataReader reader, Int32 columnOffset)
at
Microsoft.SqlServer.Management.Smo.SqlSmoObject.CreateNewObjectFromRow(AbstractCollectionBase
childColl, Type childType, Int32 namePropOffset, IDataReader reader, Int32
columnIdx, Boolean hasSchema, Boolean isOrderedByID)
at
Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitObjectsFromEnumResultsRec(SqlSmoObject
currentSmoObject, XPathExpression levelFilter, Int32 filterIdx, IDataReader
reader, Int32 columnIdx, Object[] parentRow, Boolean forScripting)
at
Microsoft.SqlServer.Management.Smo.SqlSmoObject.AdvanceInitRec(SqlSmoObject
currentSmoObject, XPathExpression levelFilter, Int32 filterIdx, IDataReader
reader, Int32 columnIdx, Int32 columnOffset, Object[] parentRow, Boolean
forScripting)
at
Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitObjectsFromEnumResultsRec(SqlSmoObject
currentSmoObject, XPathExpression levelFilter, Int32 filterIdx, IDataReader
reader, Int32 columnIdx, Object[] parentRow, Boolean forScripting)
at
Microsoft.SqlServer.Management.Smo.SqlSmoObject.AdvanceInitRec(SqlSmoObject
currentSmoObject, XPathExpression levelFilter, Int32 filterIdx, IDataReader
reader, Int32 columnIdx, Int32 columnOffset, Object[] parentRow, Boolean
forScripting)
at
Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitObjectsFromEnumResultsRec(SqlSmoObject
currentSmoObject, XPathExpression levelFilter, Int32 filterIdx, IDataReader
reader, Int32 columnIdx, Object[] parentRow, Boolean forScripting)
at
Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitObjectsFromEnumResults(Urn levelFilter, IDataReader reader, Boolean forScripting)
at Microsoft.SqlServer.Management.Smo.SqlSmoObject.InitChildLevel(Urn
levelFilter, ScriptingOptions so, Boolean forScripting)
at
Microsoft.SqlServer.Management.Smo.Database.PrefetchTables(ScriptingOptions
options, String tableFilter)
at Microsoft.SqlServer.Management.Smo.Database.PrefetchObjectsImpl(Type
objectType, ScriptingOptions scriptingOptions) (Source:
Microsoft.SqlServer.SqlEnum, Error number: 0)
Get help: http://help/0
Message: