使用Azure SQL跨数据库查询

3
我正在尝试将一个数据库表中的数据插入到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
);

然而,当我运行时,会得到以下结果:

找不到指定的凭据。

我该如何创建一个用于此目的的凭据?有更好的方法吗?


这可能会有所帮助 https://msdn.microsoft.com/library/mt270260.aspx - Aaron Dietz
我通过右键单击“Security > Add > New Item... > Credential”来解决这个错误。 - Tarzan
1个回答

9
这是我的成果:
-- 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

挑战性的部分包括:

  • 我正在从备份中提取数据,但该表与同名的源表重复。我必须重新命名源表。
  • 表的创建必须与外部源中当前表的模式匹配。

1
这里值得一提的是,我使用的凭据具有有效SQL服务器帐户的用户名和密码,并具有从源数据库选择记录的权限。 - Karl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接