【问题标题】:Error during SELECT sql query between Azure SQL DBsAzure SQL DB 之间的 SELECT sql 查询期间出错
【发布时间】:2020-05-21 06:35:24
【问题描述】:

我有带有 EF Core 的 .NET Core 应用程序。

我使用 Azure SQL DB。

我有一个主数据库“目录”和多个其他数据库。

我正在尝试在多个数据库中填充一个表,但我需要从主数据库“目录”中获取值。

我做了以下迁移:

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

但结果我看到了:

引用“Catalog.dbo.Table1”中的数据库和/或服务器名称 此版本的 SQL Server 不支持。

所以我无法在 Azure DB 之间执行 SELECT 查询?还是我的sql错了?我该如何解决这个问题?

【问题讨论】:

标签: sql sql-server azure-sql-database entity-framework-migrations ef-core-3.1


【解决方案1】:

如果要查询远程数据库,可以使用Azure SQL Database elastic query

例如

  1. 为远程数据库创建证书
 CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<master_key_password>';
 CREATE DATABASE SCOPED CREDENTIAL RemoteDBCred
 WITH IDENTITY = '<username>',
 SECRET = '<password>';  
  1. 为远程数据库创建外部数据源
CREATE EXTERNAL DATA SOURCE MyRemoteDBSource WITH
    (TYPE = RDBMS,
    LOCATION = '<server_name>.database.windows.net',
    DATABASE_NAME = '<>',
    CREDENTIAL = RemoteDBCred,
) ;
  1. 使用数据源创建外部表
CREATE EXTERNAL TABLE [dbo].[<>]
( 


)
WITH
( DATA_SOURCE = MyRemoteDBSource)
  1. 查询表

更多详情请参考documentblog

【讨论】:

    猜你喜欢
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 2019-02-26
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多