Statistik verweisen auf eine Spalte zu verhindern, dass die Spalte gelöscht wird?
Ich versuche ein sehr einfaches drop column
Aussage:
alter table MyTable drop column MyColumn
und empfangen mehrere Fehler entlang der Linien von
Msg 5074, Ebene 16, Status 1, Zeile 1
Die Statistik '_dta_stat_1268251623_3_2' ist abhängig von der Spalte 'MyColumn'.
gefolgt, die letztendlich durch
Msg 4922, Ebene 16, Status 9, Zeile 1
ALTER TABLE DROP COLUMN MyColumn fehlgeschlagen, weil ein oder mehrere Objekte in dieser Spalte zugreifen.
Ich glaube nicht, dass Statistiken, die verhindern, dass eine Spalte gelöscht wird. Tun Sie das? Wenn dem so ist, da diese offenbar automatisch erstellten Statistiken kann ich nicht angewiesen auf die Namen sind die gleichen, die über mehrere Kopien der gleichen Datenbank, wie konnte ich fallen alle solche Statistiken, die in einem upgrade-Skript ausgeführt werden, auf eine andere Datenbank?
InformationsquelleAutor Daniel | 2011-10-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Automatisch generierten Statistiken, die ich gesehen habe, alle haben entweder den Namen des index, den Sie repräsentieren, ODER starten Sie mit so etwas wie
WA_Sys_
.Sind Sie 100% sicher, dass dies nicht eine Reihe von custom-stats jemand einrichten?
Prüfen:
...und sehen, was die
user_created
Feld gibt.Pro Kommentar:
Dies ist ungetestet, aber Sie könnten versuchen, so etwas wie:
Ändern Sie die
PRINT
zu einemEXEC
wenn es gut aussieht.sp_msforeachdb
ist ein cursor im hintergrund, aber der rest der Logik, die Sie tun können, als ein Satz.Sie können mit den anderen system-Ansichten
sys.stats_columns
undsys.columns
zu bekommen/MACHEN, dass info.Aye, ich muss resort auf ye olde cursor zu fallen. Danke.
keine Notwendigkeit für einen cursor, aber für die geringe Zahl von Hinrichtungen führen Sie es wahrscheinlich nicht egal.
Wie könnte man vermeiden, einen cursor? Gibt es einen anderen Weg zum löschen aller vom Benutzer erstellte Statistiken verweisen auf eine Spalte in einer einzelnen Anweisung?
InformationsquelleAutor JNK
Den code vorgeschlagen, in JNK-Antwort funktioniert nicht, aber die Idee ist gut. Wenn Sie möchten, löschen Sie alle vom Benutzer erstellten Statistiken dieses meiner getesteten Lösung :
Gewusst wie: beschränken Sie dies durch eine Datenbank, die nicht alle Datenbanken
Die Abfrage gilt nur für die aktuelle Datenbank
InformationsquelleAutor psadac