我的问题是,如何开发使用外部表的数据库项目并将其部署到Azure SQL DB?
我正在使用Visual Studio 2017数据库项目来管理Azure SQL数据库。我一直遵循在VS中建立数据库的路径,然后单击“发布”按钮,效果很好。
现在,我正在尝试添加外部表来执行弹性查询。在SSMS中,我为其创建了外部数据源和凭据以及一个远程表:
CREATE EXTERNAL DATA SOURCE [RemoteServer]
WITH (TYPE = RDBMS, LOCATION = N'myserver.database.windows.net',
CREDENTIAL = [RemoteUser], DATABASE_NAME = N'MyRemoteDb')
GO
CREATE EXTERNAL TABLE dbo.MyTable (
ID int not null,
MyColumn varchar(10) not null
) WITH (
DATA_SOURCE = [RemoteServer]
);
GO
(还存在RemoteUser的凭据。)
SELECT * FROM MyTable
产生预期的结果,世界上一切都很好。
现在,我要将其添加到我的数据库项目中,以便可以通过发布(在VS中)进行部署以用于将来的任何更改(并保存在源代码管理中)。
我遇到了错误:
SQL71501: External Data Source: [RemoteServer] has an unresolved reference to Database Scoped Credential [RemoteUser].
我可以通过将所有外部片段的属性设置为不构建来消除该错误,但这违背了可以从Visual Studio发布的目的。 我尝试过从数据源中删除凭据,因此该凭据不存在。它删除了该错误,但是由于缺少凭据而导致发布失败:
CREATE EXTERNAL DATA SOURCE [RemoteServer]
WITH (TYPE = RDBMS, LOCATION = N'myserver.database.windows.net',
DATABASE_NAME = N'MyRemoteDb')
GO
SQL72014: .Net SqlClient Data Provider: Msg 46505, Level 16, State 15, Line 1 Missing required external DDL option 'CREDENTIAL'.)
有什么建议吗?
答案 0 :(得分:0)
在撰写本文时,Azure 中的弹性查询仍处于预览阶段,Microsoft 在概述页面中列出了许多限制。不幸的是,其中之一是关于通过 SSDT 编写外部表和外部数据源的脚本。注意到 here(有关 SSDT,请参阅列表中的第二项)。