3

我正在开发一个 web 应用程序(现在使用经典的 asp),它需要查询同一服务器上两个单独数据库上的两个表。

IT 团队为每个数据库提供了单独的应用程序级登录名/密码,这些登录名/密码将在我的代码中用于连接。

我想创建一个将两个表(每个数据库中的一个)链接在一起的查询,但不太确定如何,谷歌也没有给我太多帮助。

我假设我必须创建两个连接来执行此操作,因为我有两个单独的登录名,但是我将如何创建一个使用每个表的查询。

请注意 - 我们的 IT 团队在此阶段不会将这两个数据库链接在一起。我几乎坚持我所拥有的。

希望你能帮忙。垫

4

2 回答 2

2

如果 IT 团队希望数据库分开,您显然不能使用数据库为您进行联接。

您必须执行加入客户端。Linq 是一种简单的方法,但包含两个数据集的循环也可以。

于 2012-09-13T09:34:46.260 回答
1

跨数据库查询的典型语法类似于:

SELECT <columns>
  FROM [schema].[table] t1 INNER JOIN
       [databaseName].[schema].[table] t2 ON <condition>

但是,如果您使用的是 2005 或更高版本,那么值得在第一个数据库中创建一个同义词,这样对第二个数据库的引用就不会出现在您的代码中(如果数据库名称稍后更改怎么办)?

CREATE SYNONYM [schema].[synonymName] FOR [databaseName].[schema].[table]

然后您的查询变为:

SELECT <columns>
  FROM [schema].[table] t1 INNER JOIN
       [schema].[synonymName] t2 ON <condition>

您可能需要适当地设置权限,以便用于连接第一个数据库的用户可以访问第二个数据库。如果 IT 团队简单地从同一服务器主体授予对两个数据库的相关访问权限,那么这是实现它的最佳方式。如果您坚持使用两个完全独立的登录名,那就太糟糕了。但是没有任何必要“将数据库链接在一起”来运行跨数据库查询。

于 2012-09-13T09:34:59.427 回答