
Ich habe ein Problem mit einer bestimmten Tabelle. Ich habe Kimberly Tripps Skript verwendet, um Indizes basierend auf dem Fragmentierungsgrad neu zu erstellen. Der Job ist mit diesem Fehler fehlgeschlagen:
Meldung 2501, Sev 16: Eine Tabelle oder ein Objekt mit dem Namen „CMS_InfoObjects6“ konnte nicht gefunden werden. Überprüfen Sie die SysObjects. [SQLSTATE 42S02]
Ich habe Sysobjects geprüft und sehe den aufgelisteten Tabellennamen. select object_name(2137058649) gibt CMS_InfoObjects6 zurück. select object_id('CMS_InfoObjects6') gibt null zurück. select object_id(object_name(2137058649)) gibt ebenfalls null zurück.
Ich kann die Tabelle in EM sehen und in QA * daraus auswählen, wenn ich einen vollqualifizierten Namen verwende (der Besitzer ist nicht dbo).
dbcc checkdb gibt keine Fehler zurück.
Deklariere @name varchar(500) Setze @name = Objektname(2137058649) dbcc checktable (@name)
gibt zurück: „Eine Tabelle oder ein Objekt mit dem Namen ‚CMS_InfoObjects6‘ konnte nicht gefunden werden. Überprüfen Sie die SysObjects.“
Ich bin verwirrt.
Antwort1
In Ihrer Variable schließen Sie das Schema nicht ein. Wenn das Objekt nicht im Standardschema ist (wie in diesem Fall, wo Sie sagten, es sei nicht dbo), müssen Sie den vollqualifizierten Namen an DBCC CHECKTABLE übergeben. Sehen Sie sich die Beispielskripts unten auf der Seite „Online-Bücher“ für diesen Befehl an:
http://msdn.microsoft.com/en-us/library/ms174338.aspx
Sie müssen Kimberlys Skript ändern, um das Schema einzuschließen. (Es ist lustig, sie hält gerade vor mir eine Unterrichtsstunde, hahaha.)