【问题标题】:call stored procedure from another database in sql azure从 sql azure 中的另一个数据库调用存储过程
【发布时间】:2016-07-23 13:38:26
【问题描述】:

我在 azure 中有 2 个数据库 db1 和 db2。而 db1 有存储过程stored_p1,db2 有存储过程stored_p2。 我需要从stored_p2 调用stored_p1。 为了从另一个数据库调用表,我使用了外部表。 对于存储过程,我是否需要使用外部表之类的东西

【问题讨论】:

    标签: azure stored-procedures azure-sql-database


    【解决方案1】:

    老问题,但它仍然与我有关。这是我的解决方案(在我的情况下,我在两个不同的数据库服务器之间进行连接):

    1. 在 DB2 中,创建用于连接 DB1 的凭据:
        CREATE DATABASE SCOPED CREDENTIAL DB1Credential
        WITH IDENTITY = 'DB1_User',
        SECRET = 'DB1_Password';   
    
    1. 在 DB2 中,使用您的新凭证创建外部数据源:
        CREATE EXTERNAL DATA SOURCE DB1Server WITH
        (TYPE = RDBMS,
        LOCATION = 'your-db1-server-reference',
        DATABASE_NAME = 'db1',
        CREDENTIAL = DB1Credential,
        ) ;
    
    1. 通过命名远程数据源来执行远程过程:
        EXEC sp_execute_remote
        N'DB1Server',  
        N'stored_p1' 
    

    也可以包含此处定义的参数:https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-execute-remote-azure-sql-database?view=azuresqldb-current

    【讨论】:

      【解决方案2】:

      这需要弹性数据库查询。考虑使用此处记录的跨数据库功能:https://azure.microsoft.com/en-us/documentation/articles/sql-database-elastic-query-vertical-partitioning/

      它还提供了一个名为 sp_execute_remote 的函数,该函数将一个 shardmap 名称和一个 T-SQL 查询作为其输入。

      【讨论】:

        【解决方案3】:

        这似乎需要elastic 数据库查询,可能使用SP_ EXECUTE_FANOUT 命令。

        远程存储过程调用或远程函数调用使用 sp_execute_fanout 现在可以使用类似于 sp_executesql 的参数。

        The documntation is here

        This may also help

        没有分片的选项显然仍然在我上次听说的“工作中”。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-02-10
          • 2017-12-25
          • 1970-01-01
          • 2017-06-13
          • 2014-09-17
          • 1970-01-01
          • 2012-05-29
          相关资源
          最近更新 更多