J'ai besoin de résoudre un problème que j'ai et j'ai besoin d'aide pour comprendre comment fonctionne sp_msforeachdb afin de surmonter mon problème.
Ce qui se passe est chaque fois que j'exécute sp_msforeachdb, j'obtiens une erreur Msg 102, Level 15, State 1, Incorrect syntax near '61'
Un exemple de mon code est le suivant:
EXEC SP_msforeachdb 'SELECT ''?'' AS Database
FROM ?.sys.objects
WHERE name like ''%aetna%''
Cependant, peu importe la requête que j'ai comme paramètre pour sp_msforeachdb. Chaque fois que je reçois la même erreur. J'ai une base de données qui commence par '61s1d', ce qui me fait penser qu'il y a un problème avec le nom de la base de données, mais honnêtement, je ne sais pas ce qui se passe dans les coulisses sur sp_msforeachdb.
À noter.
- C'est la seule base de données qui commence par un nombre
- Je peux essayer d'utiliser du code comme "Si la base de données est comme '% 61%' ne faites pas ......", mais toujours la même erreur.
- Je ne peux pas tester la modification du nom de la base de données - trop de choses y sont connectées.
- Si je crée une base de données de test qui commence par «51», j'obtiens également l'erreur pour cette base de données
Comment puis-je surmonter cela?
la source
Je ne suis pas en désaccord avec tout ce que @Kenneth a dit, je dois souligner que l'erreur que vous rencontrez n'a rien à voir avec
sp_MSForEachDB
. Cela est dû au nom de la base de données: elle commence par un nombre. Les règles pour nommer les objets (pas seulement les bases de données) sont détaillées dans la page MSDN pour les identificateurs de base de données . Si vous suivez les "Règles pour les identifiants réguliers", vous n'avez pas besoin de mettre ces noms entre crochets ou entre guillemets. Mais les noms qui ne relèvent pas de ces règles ne doivent être inclus (toujours).la source