具有编号数据库名称的跨数据库查询

时间:2009-10-12 16:14:32

标签: sql database cross-database numbered

对于SQL Server 2005,我有点新手。我有一个包含大多数存储过程和表的数据库(我们称之为'GrandDatabase')。每个用户都有自己独立的数据库,以用户的编号ID命名。所以我有一个如下数据库列表,例如:

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 个答案:

答案 0 :(得分:2)

尝试使用[100] .dbo.UserInfo而不仅仅是100。

答案 1 :(得分:1)

尝试用括号括起数据库名称:

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

答案 2 :(得分:1)

尝试将数字放入方括号并使用别名,例如:

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