sql - 如何通过 Visual Studio/SSDT 将外部表添加到 Azure SQL DB

标签 sql visual-studio azure sql-server-data-tools

我的问题是,如何开发数据库项目并将其部署到使用外部表的 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/

相关文章:

php - 通过 MySQL 获取最少随机记录集

visual-studio - Visual Studio : JSON visualizer when debugging

asp.net - 如何将 Visual Studio "compile"制作为 .aspx 文件?

azure - Bicep 在新应用服务中设置 appSettings 时引用存储帐户,出现 StorageAccountIsNotProvisioned 错误

SQL如何连接两个表

c# - SQL 标识增量和种子

sql - 如何处理 MySQL 函数 md5 的输入?

windows - 如何在 Visual Studio 中为 xamarin.forms 应用程序生成 .ipa 文件

c# - Azure Function 上带参数的两个计时器触发器

azure - 如何在运行时检索 WebJob 的名称