我的问题是,如何开发数据库项目并将其部署到使用外部表的 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'.)
有什么建议吗?
最佳答案
在撰写本文时,Azure 中的弹性查询仍处于预览状态,Microsoft 在概述页面中列出了许多限制。不幸的是,其中之一是关于通过 SSDT 编写外部表和外部数据源的脚本。值得注意的是here (请参阅列表中有关 SSDT 的第二项)。
关于sql - 如何通过 Visual Studio/SSDT 将外部表添加到 Azure SQL DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56779898/