Wenn ich versuche, einen Index für eine Tabelle neu zu erstellen:
%Vor%das funktioniert gut.
Aber wenn ich anrufe
%Vor%Ich erreiche dieselbe Tabelle und schieße mit:
Mitteilung 1934, Ebene 16, Staat 1, Linie 2
ALTER INDEX ist fehlgeschlagen, da die folgenden SET-Optionen falsche Einstellungen aufweisen: 'QUOTED_IDENTIFIER'. Überprüfen Sie, ob die SET-Optionen für die Verwendung mit indizierten Sichten und / oder Indizes für berechnete Spalten und / oder gefilterte Indizes und / oder Abfragebenachrichtigungen und / oder XML-Datentypmethoden und / oder räumliche Indexoperationen geeignet sind.
Und um zu bestätigen, dass es die gleiche Tabelle ist:
%Vor%was zu den Ergebnissen führt:
%Vor%Was mache ich nicht falsch?
Hinweis :
%Vor%funktioniert gut!
Angegebene Bezeichnereinstellungen werden für jede gespeicherte Prozedur gespeichert, und sp_MSforeachtable
hat sie als OFF
definiert. Sie können dies jedoch umgehen, indem Sie es auf ON
setzen, bevor es den Neuindex ausführt:
Wenn eine gespeicherte Prozedur erstellt wird, werden die Einstellungen
SET QUOTED_IDENTIFIER
undSET ANSI_NULLS
erfasst und für nachfolgende Aufrufe dieser gespeicherten Prozedur verwendet.
Und natürlich fügen Sie die üblichen Vorbehalte für sp_MSforeachtable
ein, die undokumentiert sind, und Sie können sich daher nicht darauf verlassen, dass irgendein Verhalten stabil ist.
Für DBCC DBREINDEX
- alle Wetten sind deaktiviert. DBCC
lebt in seiner eigenen kleinen, sehr angepassten Codewelt. Aber auch für die zukünftige Arbeit sollte man sich nicht darauf verlassen:
Diese Funktion wird in einer zukünftigen Version von Microsoft SQL Server entfernt. Verwenden Sie diese Funktion nicht in neuen Entwicklungsarbeiten und ändern Sie Anwendungen, die diese Funktion derzeit verwenden, so schnell wie möglich. Verwenden Sie stattdessen
ALTER INDEX
.
Sie benötigen SET QUOTED_IDENTIFIER ON
auch in sp_msForEachTable
, weil sp_msForEachTable
nicht die richtige Einstellung hat.
Tags und Links sql-server sql-server-2008-r2 reindex sp-msforeachtable