1

在谈到 SQL Server 2005 时,我还是个新手。我有一个包含大部分存储过程和表的数据库(我们将其称为“GrandDatabase”)。每个用户都有自己的独立数据库,以用户的编号 ID 命名。所以我有一个如下的数据库列表,例如:

大数据库
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')。有人知道如何使用编号的数据库名称进行这项工作吗?

谢谢!
克里斯

4

3 回答 3

2

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

于 2009-10-12T16:17:01.893 回答
1

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

SELECT
    *
FROM
    GrandDatabase.User INNER JOIN
    [100].dbo.UserInfo ON GrandDatabase.User.UserID = [100].dbo.UserInfo.UserID
于 2009-10-12T16:17:40.457 回答
1

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

SELECT    *
FROM    GrandDatabase.User 
INNER JOIN    [100].dbo.UserInfo u
   ON GrandDatabase.User.UserID = u.UserID
于 2009-10-12T16:17:52.470 回答