sql-server - 使用 Azure 特定功能时在本地运行 SQL Server 数据库?
问题描述
我正在考虑将使用本地 SQL Server 的项目迁移到 SQL Azure。数据库具有跨数据库依赖关系,其中一些视图引用同一服务器上的另一个数据库,SQL Azure 不支持这种情况。
我已成功修改这些以使用外部表,这些表使用使用以下内容创建的外部数据源:
CREATE EXTERNAL DATA SOURCE [MyExternalDataSource] WITH
(
TYPE = RDBMS,
LOCATION = 'SqlServerName',
DATABASE_NAME = 'SqlServerDatabaseName',
CREDENTIAL = cred
);
但是,此类数据源使用的 RDBMS 类型似乎仅受 SQL Azure 支持,本地 SQL Server 不支持。针对前者运行此脚本可以正常工作,而后者会导致引发以下错误:
'RDBMS' 附近的语法不正确
因此,这意味着解决方案中的数据库项目不能同时用于 Azure SQL 和本地 SQL Server 安装。
作为一种解决方法,我正在考虑以下选项,尽管每个选项都有其缺点:
解决方案中有多个数据库项目,一个针对 SQL Azure,另一个针对 SQL Server——尽管这意味着将任何数据库更新复制到两个项目。
从使用外部表转而使用 Azure 提供的数据同步功能,并在两个数据库中复制表和数据(无需使用导致问题的外部数据源)——尽管这至少有 5 分钟的延迟(可能在这种特定情况下是可以接受的,但肯定不是每个人都可以接受)
其他开发人员如何处理这种需要在您的项目中使用 SQL Azure 特定功能但您还需要能够运行数据库的本地副本以进行开发的场景?
解决方案
您可以尝试创建 3 个项目:
1. 项目仅包含定义为视图的 Azure 特定引用。
2. 项目仅包含定义为视图的 SQL Server 特定引用。视图的结构应该相同。
3. 你的主要项目。在这个项目中,您将引用以前的一个作为“复合项目”参考。
https://docs.microsoft.com/en-us/sql/ssdt/add-database-reference-dialog-box?view=sql-server-2017
推荐阅读
- xamarin.forms - Xamarin.Forms 在 Grid 子项中触发错误的点击事件
- kong - 在kong api网关中,如何使用生成的访问令牌确保第三方只能访问允许的资源(范围)
- pyspark - PySpark 列对象上的字符串切片语法表现得像子字符串?
- html - 详细信息/摘要中自定义展开/折叠按钮的 ARIA 属性
- python - 在 Python 中的类中线程化多个方法
- visual-studio - 自动完成删除先前的功能名称等
- sql - .verify.JDBC.result 中的错误(r,“无法检索 JDBC 结果集”,:无法检索 JDBC 结果集 JDBC 错误:数值“NA”不是
- flutter - Flutter - 有效地将视频文件处理成内存中的一系列帧?
- google-cloud-platform - JobStatistics 中“waitMsAvg”的确切含义是什么?
- dnsmasq - 动态重新加载转发规则而不弹跳 dnsmasq