首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在SQL中执行跨数据库查询

无法在SQL中执行跨数据库查询
EN

Stack Overflow用户
提问于 2017-08-16 14:00:55
回答 3查看 17.2K关注 0票数 11

我在同一个same服务器上有2DB,在两个DB上都有相同的表( TB1 ),现在我想从TB1 of DB2读取数据并将数据插入到TB1 of DB1中。我正在使用下面的查询,但得到错误。

代码语言:javascript
运行
复制
insert into TB1 select 1,* from [DB2].dbo.TB1

错误消息

Msg 40515,15级,状态1,16号线 此版本的Server不支持引用“DB2.dbo.TB1”中的数据库和/或服务器名称。

EN

回答 3

Stack Overflow用户

发布于 2017-08-18 06:08:56

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

以下是详细的查询:

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

代码语言:javascript
运行
复制
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])

在这些步骤之后,您可以像普通表一样查询外部表。尽管在使用外部表时存在一些限制,例如无法将数据插入外部表(引用表)

票数 7
EN

Stack Overflow用户

发布于 2018-04-30 16:03:31

Azure支持这种跨数据库查询功能自2015年以来,但需要一些额外设置来工作和弹性查询。

第一步是创建安全凭据:

代码语言:javascript
运行
复制
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>';
CREATE DATABASE SCOPED CREDENTIAL DB2Security 
WITH IDENTITY = '<username>',
SECRET = '<password>';

“用户名”和“密码”应该是登录到DB2数据库的用户名和密码。

现在您可以使用它来定义外部数据源,这样DB1就可以连接到DB2:

代码语言:javascript
运行
复制
CREATE EXTERNAL DATA SOURCE DB2Access
WITH (
    TYPE=RDBMS,
    LOCATION='myservernotyours.database.secure.windows.net',
    DATABASE_NAME='DB2',
    CREDENTIAL= DB2Security);

最后,使用前面的外部数据源,将TB1映射为来自DB2数据库的外部表:

代码语言:javascript
运行
复制
CREATE EXTERNAL TABLE dbo.TB1FromDB2(
    ID int,
    Val varchar(50))
WITH
(
    DATA_SOURCE = DB2Access);

您也可以使用Azure SQL数据同步完成这一任务,但是数据被复制到一个数据库中,而且这个特性仍然是预览版本(5/2018),并且总是看到最古老的数据(每次同步的最小可配置间隔为5分钟)。

票数 2
EN

Stack Overflow用户

发布于 2017-08-16 14:35:27

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

您必须创建一个外部数据源和一个外部表,以便能够在其他SQL数据库上查询表。的文章展示了如何做到这一点。

希望这能有所帮助。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45715668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档