Necesito solucionar un problema que tengo y necesito ayuda para entender cómo funciona sp_msforeachdb para solucionar mi problema.
Lo que sucede es que cada vez que ejecuto sp_msforeachdb, recibo un error Msg 102, Level 15, State 1, Incorrect syntax near '61'
Un ejemplo de mi código es el siguiente:
EXEC SP_msforeachdb 'SELECT ''?'' AS Database
FROM ?.sys.objects
WHERE name like ''%aetna%''
Sin embargo, no importa qué consulta tenga como parámetro para sp_msforeachdb. Cada vez me sale el mismo error. Tengo una base de datos que comienza con '61s1d', así que eso me hace pensar que tiene un problema con el nombre de la base de datos, pero honestamente no sé qué sucede detrás de escena en sp_msforeachdb.
Cosas a tener en cuenta.
- Es la única base de datos que comienza con un número.
- Puedo intentar usar código como "Si la base de datos es como '% 61%' no lo hagas ......", pero sigue siendo el mismo error.
- No puedo probar cambiar el nombre de la base de datos, hay demasiadas cosas conectadas a ella.
- Si creo una base de datos de prueba que comienza con '51', también aparece el error para esa base de datos
¿Cómo puedo superar esto?
fuente
Sin estar en desacuerdo con nada de lo que @Kenneth dijo, debo señalar que el error con el que te encuentras no tiene nada que ver
sp_MSForEachDB
. Se debe a cómo se nombró la base de datos: comienza con un número. Las reglas para nombrar objetos (no solo bases de datos) se detallan en la página de MSDN para identificadores de bases de datos . Si sigue las "Reglas para identificadores regulares", entonces no necesita encerrar esos nombres entre corchetes o comillas dobles. Pero los nombres que quedan fuera de esas reglas no necesitan ser cerrado (siempre).fuente