Кросс-запросы к базе данных с нумерованным именем базы данных
Я немного новичок в том, что касается SQL Server 2005. У меня есть база данных, содержащая большинство хранимых процедур и таблиц (мы назовем ее "GrandDatabase"). У каждого пользователя есть своя отдельная база данных, названная по нумерованному идентификатору пользователя. Итак, у меня есть список базы данных следующим образом, например:
GrandDatabase
100
101
102
...
Мне нужно объединить таблицы в базе данных GrandDatabase и в базе данных пользователя. В другом месте я читал, что при запуске из GrandDatabase должно работать следующее:
SELECT
*
FROM
GrandDatabase.User INNER JOIN
100.dbo.UserInfo ON GrandDatabase.User.UserID = 100.dbo.UserInfo.UserID
Это дает мне синтаксическую ошибку с жалобой на '.' сразу после первой ссылки на базу 100. Я немного поработал и обнаружил, что этот код работает нормально, когда я использую ненумерованные базы данных (например, заменяя "100" выше на "User100"). Кто-нибудь знает, как заставить это работать с нумерованными именами баз данных?
Спасибо!
Крис
3 ответа
Попробуйте поместить числа в квадратные скобки и использовать псевдонимы, например:
SELECT *
FROM GrandDatabase.User
INNER JOIN [100].dbo.UserInfo u
ON GrandDatabase.User.UserID = u.UserID
Попробуйте заключить имя базы данных в квадратные скобки:
SELECT
*
FROM
GrandDatabase.User INNER JOIN
[100].dbo.UserInfo ON GrandDatabase.User.UserID = [100].dbo.UserInfo.UserID