无法在SQL Azure中进行跨数据库查询

Yas*_*ash 7 azure-sql-database

我在同一台SQL Azure服务器上有2个数据库,并且两个数据库上都有相同的表(TB1),现在我想从DB2的TB1中读取数据并将数据插入DB1的TB1中。我正在使用以下查询,但出现错误。

insert into TB1 select 1,* from [DB2].dbo.TB1
Run Code Online (Sandbox Code Playgroud)

错误信息

讯息40515,第15级,州1,第16行

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

Jay*_*ran 5

是的,您可以在SQL Azure上使用弹性查询功能,这是执行跨数据库查询的唯一方法。

以下是要遵循的详细查询:

在您的DB1中运行以下查询(因为您说过要像从DB2中读取TB1,然后将这些数据插入DB1中的TB2中)

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'STro*ngPaSSe0rD';

CREATE DATABASE SCOPED CREDENTIAL Login
WITH IDENTITY = 'Login',
SECRET = 'STro*ngPaSSe0rD';

CREATE EXTERNAL DATA SOURCE RemoteReferenceData
WITH
(
    TYPE=RDBMS,
    LOCATION='myserver.database.windows.net',
    DATABASE_NAME='DB2',
    CREDENTIAL= Login
);




CREATE EXTERNAL TABLE [dbo].[TB1]
(
    [Columns] [DataTypes] 
)
WITH (DATA_SOURCE = [RemoteReferenceData])
Run Code Online (Sandbox Code Playgroud)

这些步骤之后,您可以查询外部表,如普通表。尽管在使用外部表时有一些限制,例如您无法将数据插入EXTERNAL TABLE(参考表)中


Alb*_*llo -1

您可以使用 SQL Azure 上的弹性查询功能执行跨数据库查询。

您必须创建外部数据源和外部表才能查询其他 SQL Azure 数据库上的表。本文展示了如何做到这一点。

希望这可以帮助。