【问题标题】:Querying across databases with Azure SQL使用 Azure SQL 跨数据库查询
【发布时间】:2016-09-09 19:12:10
【问题描述】:

我正在尝试将数据从一个数据库表插入 Azure SQL 中的另一个数据库表(在同一台服务器上)。我看到以下内容:

https://azure.microsoft.com/en-us/blog/querying-remote-databases-in-azure-sql-db/

这说明我应该能够做到以下几点:

CREATE EXTERNAL DATA SOURCE RemoteReferenceData
WITH
(
    TYPE=RDBMS,
    LOCATION='myserver.database.windows.net',
    DATABASE_NAME='_2016-09-07-17412',
    CREDENTIAL= SqlUser
);

CREATE EXTERNAL TABLE [dbo].[RemotePhotos](
    [PhotoId] int NOT NULL,
    [Url] nvarchar(max) NULL,
)
WITH
(
    DATA_SOURCE = RemoteReferenceData
);

但是,当我运行它时,我得到以下信息:

找不到指定的凭据。

我该如何为此目的创建凭据?有没有更好的方法来解决这个问题?

【问题讨论】:

标签: sql sql-server azure azure-sql-database


【解决方案1】:

这就是我最终的结果:

-- Cleanup
DROP EXTERNAL TABLE OldPhoto
DROP EXTERNAL DATA SOURCE RemoteReferenceData
DROP DATABASE SCOPED CREDENTIAL credentialName
DROP MASTER KEY
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';

CREATE DATABASE SCOPED CREDENTIAL credentialName
WITH IDENTITY = 'credentialName',
SECRET = 'password';

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

CREATE EXTERNAL TABLE dbo.OldPhoto(
    [PhotoId] [int] NOT NULL,
    [Url] [nvarchar](300) NULL
)
WITH
(
    DATA_SOURCE = RemoteReferenceData
);

Select top 20 * from dbo.OldPhoto

具有挑战性的位是:

  • 我正在从具有相同名称的表的备份中提取数据。我不得不重命名源表。
  • 表创建必须与外部源中当前表的架构相匹配。

【讨论】:

  • 这里可能值得一提的是,我使用的凭据具有有效 SQL 服务器帐户的用户名和密码,该帐户有权从源数据库中选择记录。
猜你喜欢
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-10
  • 1970-01-01
  • 2022-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多