sql-server - 编写脚本以在不同的 SQL 引擎上运行
问题描述
我正在编写一个需要能够在多个 SQL 引擎(即 SQL Server 和 Azure SQL)上运行的 SQL 脚本。一条IF
语句检查数据库版本以执行正确的代码。但是如果在错误的引擎上使用代码将无法编译。
这在 Azure SQL 中运行良好,但 SQL Server 拒绝它。
IF (@@VERSION LIKE 'Microsoft SQL Azure %')
BEGIN
ADD SENSITIVITY CLASSIFICATION TO [dbo].[User].[UserName] WITH (LABEL = 'Confidential', INFORMATION_TYPE = 'Credentials')
...
END
GO
我有什么选择来确保这被两个引擎接受?
解决方案
动态 SQL 可用于规避语法检查:
IF (@@VERSION LIKE 'Microsoft SQL Azure %')
BEGIN
EXEC('ADD SENSITIVITY CLASSIFICATION TO [dbo].[User].[UserName] WITH (LABEL = ''Confidential'', INFORMATION_TYPE = ''Credentials'')');
...
END
GO
请注意,所有内容'
都必须引用,即''
。添加对此处字符串 i T-SQL 的支持
从 SQL Server 2019 开始将支持添加敏感度分类。
推荐阅读
- tensorflow - 如何用 3D 模型而不是一百万张图像来训练 GAN
- redis - 使用 Sentinel 升级 Redis 的最佳实践?
- php - 如何在 apache 服务器上安装我的 php(mvc 架构)。最好的办法?
- pandas - 删除列中包含双下划线的行
- excel - 处理各种条件的函数(参数)
- android - 在导航图中多次使用相同的片段
- flutter - 为什么 showDatePicker 需要按下 OK?
- oracle - 是否有一种自动方法可以将 Oracle 的连接语法 (+) 转换为标准连接语法?
- r - 在 ggplot 代码中使用 ifelse() 条件时出错
- excel - 条件格式 - 根据另一个单元格文本更改单元格颜色