Preciso solucionar um problema que estou tendo e preciso de ajuda para entender como o sp_msforeachdb funciona para solucionar meu problema.
O que acontece é que sempre que executo sp_msforeachdb, recebo um erro Msg 102, Level 15, State 1, Incorrect syntax near '61'
Um exemplo do meu código é o seguinte:
EXEC SP_msforeachdb 'SELECT ''?'' AS Database
FROM ?.sys.objects
WHERE name like ''%aetna%''
No entanto, não importa qual consulta eu tenho como parâmetro para sp_msforeachdb. Toda vez que eu recebo o mesmo erro. Eu tenho um banco de dados que começa com '61s1d', o que me faz pensar que há um problema com o nome do banco de dados, mas sinceramente não sei o que está acontecendo nos bastidores no sp_msforeachdb.
Coisas a serem observadas.
- É o único banco de dados que começa com um número
- Eu posso tentar usar código como "Se o banco de dados é como '% 61%', não faça ......", mas ainda assim o mesmo erro.
- Não consigo testar a alteração do nome do banco de dados - muitas coisas estão conectadas a ele.
- Se eu criar um banco de dados de teste que comece com '51', também recebo o erro desse banco de dados
Como posso superar isso?
fonte
Não discordando de nada do que o @Kenneth disse, devo salientar que o erro que você está encontrando não tem nada a ver
sp_MSForEachDB
. Isso se deve ao modo como o banco de dados foi nomeado: começa com um número. As regras para nomear objetos (não apenas bancos de dados) são detalhadas na página MSDN para identificadores de banco de dados . Se você seguir as "Regras para identificadores regulares", não precisará colocar esses nomes entre colchetes ou aspas duplas. Mas os nomes que estão fora dessas regras não precisam ser fechado (sempre).fonte