Ich muss ein Problem beheben, das ich habe, und ich brauche Hilfe, um zu verstehen, wie sp_msforeachdb funktioniert, um mein Problem zu beheben.
Jedes Mal, wenn ich sp_msforeachdb ausführe, wird eine Fehlermeldung angezeigt Msg 102, Level 15, State 1, Incorrect syntax near '61'
Ein Beispiel für meinen Code lautet wie folgt:
EXEC SP_msforeachdb 'SELECT ''?'' AS Database
FROM ?.sys.objects
WHERE name like ''%aetna%''
Es spielt jedoch keine Rolle, welche Abfrage ich als Parameter für sp_msforeachdb habe. Jedes Mal bekomme ich den gleichen Fehler. Ich habe eine Datenbank, die mit '61s1d' beginnt, sodass ich denke, dass es ein Problem mit dem DB-Namen gibt, aber ich weiß ehrlich gesagt nicht, was sich hinter den Kulissen von sp_msforeachdb abspielt.
Dinge zu beachten.
- Es ist die einzige Datenbank, die mit einer Nummer beginnt
- Ich kann versuchen, Code wie "Wenn die Datenbank '% 61%' ist, nicht tun ......" zu verwenden, aber immer noch den gleichen Fehler.
- Ich kann das Ändern des Datenbanknamens nicht testen - zu viele damit verbundene Dinge.
- Wenn ich eine Testdatenbank erstelle, die mit '51' beginnt, wird auch der Fehler für diese Datenbank angezeigt
Wie kann ich das überwinden?
quelle
Da ich mit nichts, was @Kenneth gesagt hat, nicht einverstanden bin, sollte ich darauf hinweisen, dass der Fehler, auf den Sie stoßen, nichts damit zu tun hat
sp_MSForEachDB
. Es liegt daran, wie die Datenbank benannt wurde: Sie beginnt mit einer Nummer. Die Regeln zum Benennen von Objekten (nicht nur von Datenbanken) finden Sie auf der MSDN-Seite für Datenbankkennungen . Wenn Sie die "Regeln für reguläre Bezeichner" befolgen, müssen Sie diese Namen nicht in eckige Klammern oder doppelte Anführungszeichen setzen. Namen, die außerhalb dieser Regeln liegen , müssen jedoch (immer) beigefügt werden.quelle