2016-04-08 15 views
-1

Ich habe Dutzende von Posts zu diesem Fehler durchgesehen, und alle haben die gleiche Lösung, alle vom Schema referenzierten Objekte löschen - aber das Objekt gibt den Fehler nicht existieren.Schema kann nicht gelöscht werden, da es sich um eine Referenz nach Objekt handelt.

Also versuche ich, die folgende Syntax

DROP SCHEMA [Application] 

und der Fehler laufen es gibt, ist

Cannot drop schema 'Application' because it is being referenced by object 'ApplicationRequestTable'. 

So denke ich, „ok kein Problem, ich werde entfernen Sie das Objekt, so wie die letzten paar Ansichten darauf hingewiesen ", so tippe ich

SELECT * FROM sys.objects WHERE name = N'ApplicationRequestTable' 

Und nichts ist von der oben genannten zurückgegeben - mache ich Somethi ng falsch, weil mein Schema auf ein Objekt verweist, das nicht beendet wird?!? Ich bestätige, weiter durch

SELECT o.name, s.name FROM sys.objects o JOIN sys.schemas s on o.schema_id = s.schema_id ORDER by s.name 

eingeben Und es ist nicht ein einzelnes Objekt unter dem Anwendungsschema ... Alle Hinweise wäre sehr dankbar, da ich gar nichts dieses Schema verweist jetzt sehen kann?

Version: SQL Server 2014 SP1 (Build 12.0.4100)

Antwort

1

nicht alle Objekte sind in sys.objects

Mindestens ...

  • Sequenzen (sys.sequences)
  • Benutzer definierte Tabellentypen (sys, table_types)
  • Service-Broker-Objekte (sys.service_queues)

Liste

SELECT OBJECT_NAME(ac.object_id) FROM sys.all_columns ac WHERE name = 'schema_id' 
+0

ich die Tabelle in den table_types gefunden (es eine benutzerdefinierte Tabelle ist, nachdem alle) SELECT * FROM sys.table_types WHERE name = N'ApplicationRequestTable'' Das ApplicationRequestTable Erscheint aber nicht in sys.all_columns, also haben Sie dieses Bit falsch ... 'SELECT OBJECT_NAME (ac.object_id) FROM sys.all_columns ac ORDER BY OBJECT_NAME (ac.object_id)' gibt 14786 Zeilen zurück und ApplicationRequestTable ist nicht Eine davon, die Tabelle Application.ApplicationRequestTable, existiert ebenfalls nicht im Objekt-Explorer. –

+0

Erklären Sie, warum ich falsch liege, obwohl Sie Ihr Objekt in dem Schema gefunden haben, das Sie entfernen möchten. Application.ApplicationRequestTable ist keine Tabelle. Es ist ein ** -Tabellentyp **, der unter dem Knoten Programmierbarkeit..Typen (nicht Knoten Tabellen) angezeigt wird und keine Einträge in sys.columns enthält. Ich habe sys.all_columns erwähnt, damit Sie schemabefindliche Objekte finden können: Suchen Sie keine Metadaten zu Ihrem Objekt. – gbn

+0

Ah ok ich sehe jetzt. Ihre Formulierung sagt "Vollständige Liste", also nahm ich an, dass meine ApplicationRequestTable in einer sogenannten "Full" -Liste sein sollte - Sie meinten die Liste der Objekttypen (wenn das der richtige Wortlaut ist, d. H. Table_types)? Wenn Sie also eine der 24 in meiner Liste auswählen, wird eine Antwort für meine ApplicationRequestTable zurückgegeben –

Verwandte Themen