在azure sql数据库之间选择sql查询时出错

8cdiaqws  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(356)

我有一个带ef core的.net core应用程序。
我使用azuresqldbs。
我有一个主数据库“目录”和多个其他。
我试图在多个数据库中填充一个表,但我需要从主数据库“catalog”获取值。
我进行了以下迁移:

migrationBuilder.Sql("INSERT INTO [dbo].[Table2] "
                     + "(Name, Description)"
                     + " VALUES "
                     + "((SELECT param1 FROM [Catalog].[dbo].[Table1] WHERE DB_NAME() = CONCAT(param1, '-', param2)), 'some description')");

但结果我看到:
此版本的sql server不支持对“catalog.dbo.table1”中的数据库和/或服务器名称的引用。
所以我不能执行 SELECT azure数据库之间的查询?或者我的sql错了?如何解决此问题?

x759pob2

x759pob21#

如果要查询远程数据库,可以使用azuresql数据库弹性查询。
例如
为远程数据库创建证书

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master_key_password>';
 CREATE DATABASE SCOPED CREDENTIAL RemoteDBCred
 WITH IDENTITY = '<username>',
 SECRET = '<password>';

为远程数据库创建外部数据源

CREATE EXTERNAL DATA SOURCE MyRemoteDBSource WITH
    (TYPE = RDBMS,
    LOCATION = '<server_name>.database.windows.net',
    DATABASE_NAME = '<>',
    CREDENTIAL = RemoteDBCred,
) ;

使用数据源创建外部表

CREATE EXTERNAL TABLE [dbo].[<>]
( 

)
WITH
( DATA_SOURCE = MyRemoteDBSource)

查询表
更多详情请参考文档和博客

相关问题