【SqlServer】SqlServer2025安装与请求API接口、正则
摘要:SQL Server 2025新增重要功能:1)原生支持通过sp_invoke_external_rest_endpoint调用外部REST接口;2)内置正则表达式功能(REGEXP_LIKE等),填补了22年的功能空白。与其他主流数据库对比显示,Oracle和PostgreSQL在REST和正则功能上长期领先。安装注意事项包括需安装补丁包、重启服务器及配置REST端点权限。新版本虽增强了H
·
安装文件
1 SqlServer 安装文件:
2 补丁包,至 2026-03-12
3 SSMS下载:
按上面顺序安装完成,1 安装完成后要重启一次服务器。
请求API接口
执行下面的脚本,开启url访问权限:
-- 1. 启用高级选项(如果尚未启用)
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
GO
-- 2. 启用外部 REST 端点
EXEC sp_configure 'external rest endpoint enabled', 1;
RECONFIGURE;
GO
-- 设置请求URL
DECLARE @url NVARCHAR(4000) = N'https://webapi.xxx.com/getinfo';
DECLARE @response NVARCHAR(MAX);
-- 执行HTTP GET请求
EXEC sp_invoke_external_rest_endpoint
@method = N'GET',
@url = @url,
@payload = NULL,
@response = @response OUTPUT;
-- 显示返回结果
SELECT @response AS API_Response;
go
测试:

2025,对比以前的版本,还是进了一大步,以前是不可以访问接口的。
但访问普通网页似乎还不行。
主流数据库 REST 接口能力对比表
| 数据库 | 调用外部 REST (Outbound) (在 SQL 内部发 HTTP 请求) |
被外部访问 REST (Inbound) (外部直接 HTTP 查库) |
核心组件/方案 | 首次可用时间 |
|---|---|---|---|---|
| SQL Server 2025 | ✅ 原生支持 ( sp_invoke_external_rest_endpoint) |
❌ 不支持 (仍需 ASP.NET/Node.js 中间层) |
sp_invoke_external_rest_endpoint |
2025 |
| Oracle | ✅ 原生支持 ( UTL_HTTP, APEX_WEB_SERVICE) |
✅ 原生支持 (ORDS 直接暴露表/过程) |
UTL_HTTP / ORDS |
2013 (ORDS) |
| PostgreSQL | ⚠️ 需扩展 ( http extension, plpython) |
✅ 生态标准 (PostgREST 几乎等同原生) |
pg_http / PostgREST |
2012 (PostgREST) |
| MySQL | ⚠️ 有限支持 (UDF, MySQL Shell HTTP) |
❌ 不支持 (需中间件) |
libcurl UDF / ProxySQL |
- |
| MongoDB | ✅ 云原生支持 (Atlas Functions) |
✅ 云原生支持 (Atlas Data API) |
Atlas Data API | 2021 |
| DB2 | ✅ 原生支持 ( HTTP_GET, HTTP_POST) |
⚠️ 部分支持 (DB2 Connect / Gateway) |
DB2 HTTP functions |
2016+ |
正则 Demo
SELECT
EmailInput,
-- 如果匹配成功返回 1,否则返回 0
case when REGEXP_LIKE(EmailInput, '^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$') then 1 else 0 end AS IsValidEmail
FROM (VALUES
('user@example.com'), -- 有效
('test.name+tag@domain.cn'), -- 有效 (含特殊字符)
('invalid-email'), -- 无效 (无@)
('missing@domain'), -- 无效 (无后缀)
('space @email.com'), -- 无效 (含空格)
('@nodomain.com') -- 无效 (无前缀)
) AS TestData(EmailInput);
/*
EmailInput IsValidEmail
user@example.com 1
test.name+tag@domain.cn 1
invalid-email 0
missing@domain 0
space @email.com 0
@nodomain.com 0
*/
熬了这么多年,终于盼来了正则。
以前只能靠SqlClr来实现这个常用功能。
msdn 帮助文档:REGEXP_LIKE
主流数据库正则表达式支持时间对比表
| 数据库 | 首次引入版本 | 发布时间 | 关键特性/函数 | 领先 SQL Server 时长 |
|---|---|---|---|---|
| Oracle | 10g Release 1 | 2003 年 | REGEXP_LIKE, REGEXP_SUBSTR, REGEXP_REPLACE |
约 22 年 |
| PostgreSQL | 7.3 | 2003 年 | ~, ~*, !~, !~* 操作符 |
约 22 年 |
| MySQL | 3.23.4 (基础) 8.0 (ICU 引擎) |
2000 年 2018 年 |
REGEXP / RLIKE (早期)完整 ICU 支持 (8.0) |
约 25 年 (现代引擎领先 7 年) |
| DB2 | 9.7 | 2009 年 | REGEXP_LIKE, REGEXP_SUBSTR 等 |
约 16 年 |
| SQLite | 3.6.0 (需自定义) 3.9.0 (内置 REGEXP 但需回调) |
2008 年 | REGEXP 操作符 (通常需应用层实现) |
约 17 年 |
| SQL Server | 2025 (CTP 2.0+) | 2025 年 | REGEXP_MATCHES, REGEXP_SUBSTR, REGEXP_REPLACE |
0 |
更多推荐
所有评论(0)