Мне нужно решить проблему, с которой я столкнулся, и мне нужна помощь, чтобы понять, как sp_msforeachdb работает, чтобы преодолеть мою проблему.
Что происходит, каждый раз, когда я запускаю sp_msforeachdb, я получаю сообщение об ошибке Msg 102, Level 15, State 1, Incorrect syntax near '61'
Пример моего кода выглядит следующим образом:
EXEC SP_msforeachdb 'SELECT ''?'' AS Database
FROM ?.sys.objects
WHERE name like ''%aetna%''
Однако не имеет значения, какой запрос у меня есть в качестве параметра к sp_msforeachdb. Каждый раз, когда я получаю ту же ошибку. У меня есть база данных, которая начинается с «61s1d», поэтому я думаю, что у нее есть проблема с именем базы данных, но я, честно говоря, не знаю, что происходит за кулисами на sp_msforeachdb.
Вещи, чтобы отметить.
- Это единственная база данных, которая начинается с числа
- Я могу попробовать использовать код вроде «Если база данных похожа на«% 61% », не делайте ......», но все равно та же ошибка.
- Я не могу проверить изменение имени базы данных - слишком много вещей связано с ней.
- Если я создаю тестовую базу данных, которая начинается с '51', то я также получаю ошибку для этой базы данных
Как я могу преодолеть это?
источник
Не соглашаясь ни с чем из сказанного @Kenneth, я должен отметить, что ошибка, с которой вы столкнулись, не имеет ничего общего
sp_MSForEachDB
. Это связано с тем, как база данных была названа: она начинается с числа. Правила именования объектов (не только баз данных) подробно описаны на странице MSDN для идентификаторов базы данных . Если вы следуете «Правилам для регулярных идентификаторов», вам не нужно заключать эти имена в квадратные скобки или двойные кавычки. Но имена, которые выходят за рамки этих правил , должны быть приложены (всегда).источник