Кросс-запросы к базе данных с нумерованным именем базы данных - PullRequest
1 голос
/ 12 октября 2009

Я немного новичок в том, что касается 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»). Кто-нибудь знает, как заставить это работать с нумерованными именами баз данных?

Спасибо!
Chris

Ответы [ 3 ]

2 голосов
/ 12 октября 2009

Попробуйте использовать [100] .dbo.UserInfo вместо только 100.

1 голос
/ 12 октября 2009

Попробуйте ввести числа в квадратные скобки и использовать псевдонимы, например ::10000

SELECT    *
FROM    GrandDatabase.User 
INNER JOIN    [100].dbo.UserInfo u
   ON GrandDatabase.User.UserID = u.UserID
1 голос
/ 12 октября 2009

Попробуйте заключить имя базы данных в квадратные скобки:

SELECT
    *
FROM
    GrandDatabase.User INNER JOIN
    [100].dbo.UserInfo ON GrandDatabase.User.UserID = [100].dbo.UserInfo.UserID
...