【问题标题】:Create query using two databases使用两个数据库创建查询
【发布时间】:2012-09-13 17:34:59
【问题描述】:

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

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

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

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

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

希望您能提供帮助。 垫子

【问题讨论】:

    标签: sql sql-server asp-classic


    【解决方案1】:

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

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

    【讨论】:

    【解决方案2】:

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

    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 团队简单地从同一服务器主体授予对两个数据库的相关访问权限,那么这是实现它的最佳方式。如果您坚持使用两个完全独立的登录名,那就太糟糕了。但是没有任何必要“将数据库链接在一起”来运行跨数据库查询。

    【讨论】:

    • '如果 IT 团队只是从同一服务器主体授予对两个数据库的相关访问权限,这是实现它的最佳方式。他说 IT 团队不想将数据库链接在一起 - 并不是说​​他们一定想要拥有单独的服务器主体。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 2021-10-09
    • 2011-04-29
    相关资源
    最近更新 更多