从sql azure中的另一个数据库调用存储过程

时间:2016-04-04 05:57:12

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

我在azure中有2个数据库db1和db2。并且db1具有存储过程stored_p1,db2具有存储过程stored_p2。 我需要从stored_p2调用stored_p1。 为了从另一个数据库调用表,我使用了外部表。 对于storedprocedure,我是否需要使用外部表

之类的东西

3 个答案:

答案 0 :(得分:2)

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

  

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

The documntation is here

This may also help

没有分片的选项显然仍然是#34;在作品中#34;最后我听到了。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

  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