SQL Server 2025 em Public Preview: Destaques

O Public Preview do SQL Server 2025 foi liberado e já fizemos vários testes nele. Eu (Rodrigo Gomes) tive a oportunidade de participar do Private Preview e dei vários feedbacks, e estava muito ansioso para que o Public Preview fosse liberado para poder contar as várias novidades e mostrar um pouco do que vem por aí!
Esta versão está marcada por muitas novidades, principalmente para desenvolvedores, além, de vir com suporte a operações relacionadas a IA (Inteligência Artificial). Esta última, sem dúvidas, é a grande novidade da versão. Segue o link para baixar o SQL Server 2025: https://aka.ms/getsqlserver2025
Antes de falarmos das novidades técnicas, deixe-me apresentar a nova logo, que achei simplesmente genial:
Eu acho que foi a mais criativa de todas as versões e que melhor aproveitou o famoso ícone de banco de dados representado pelos discos empilhados.
Além disso, já fizemos duas lives para falar sobre algumas novidades que serão citadas nesse post. Confere lá e se inscreva no Canal da Power Tuning para ficar por dentro das próximas lives também!
Power Live 07 – Novidades do SQL Server 2025 na prática – Parte 1
https://www.youtube.com/watch?v=XbcENZysqhQ&list=PLZZcZLEIKFuIPXlB20Nbp5tL5g7nx2Br0
Power Live 08 – Novidades do SQL Server 2025 na prática – Parte 2
https://www.youtube.com/watch?v=kdLFVzr8gKA&list=PLZZcZLEIKFuIPXlB20Nbp5tL5g7nx2Br0
Segue também o link com os scripts que foram utilizados nas lives:
https://github.com/rrg92/sqlserver-lib/tree/main/apresentacoes/250604-PowerLive-Sql2025
Também já testamos o Power Alerts e está funcionando normalmente no SQL Server 2025! WOW!
Finalmente, vamos falar sobre as novidades do SQL Server 2025. Bora!
Instalação: Novas Edições
Vamos começar por algumas mudanças que você vai notar no instalador interativo.
A começar pela instalação, você vai perceber duas novas edições: Enterprise Developer e Standard Developer. Ambas são edições gratuitas do SQL Server, que até as versões anteriores você conhecia apenas como “developer”. Mas, a partir do 2025, agora você pode instalar uma edição developer com as mesmas limitações da edição Standard.
Isso é bem útil quando você precisa testar se sua aplicação vai funcionar bem com a edição Standard. Até o SQL Server 2022, se você quisesse garantir isso, teria que instalar um SQL Server Standard licenciado, ou seja, teria que já ter a licença e testar. Mas agora, antes que você possa decidir comprar o standard, você pode testá-lo gratuitamente.
Então, para resumir, as novas opções são:
-
Standard Developer: SQL gratuito para testes, com as mesmas limitações da edição Standard.
-
Enterprise Developer: SQL gratuito para testes, mas sem limitações, igual a edição Enterprise.
Integração com API Rest:
Uma nova procedure está disponível: sp_invoke_external_rest_endpoint.
Essa procedure permite que você chame API através de URL usando o protocolo HTTPS. Para ter uma ideia do potencial, veja como facilmente eu carrego os posts de um blog wordpress em uma tabela do SQL:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
declare @PostsJson nvarchar(max) exec sp_invoke_external_rest_endpoint 'https://thesqltimes.com/blog/wp-json/wp/v2/posts?_fields=id,title,excerpt,tags,link&per_page=10' ,@response = @PostsJson output ,@method = 'GET' drop table if exists posts; select * into posts from openjson(@PostsJson,'$.result') with ( id int ,titulo nvarchar(500) '$.title.rendered' ,resumo nvarchar(1000) '$.excerpt.rendered' ,link varchar(500) ) select * from posts |
Para habilitar essa procedure, você deve usar a sp_configure:
1 2 |
EXEC sp_configure 'external rest endpoint enabled',1 RECONFIGURE; |
Além disso, você também pode configurar autenticação usando o comando CREATE DATABASE SCOPED CREDENTIAL e especificando no parâmetro @credential da procedure.
Para mais informações: sp_invoke_external_rest_endpoint (Transact-SQL) – SQL Server | Microsoft Learn
AI: Novo data type e funções
Esta versão vai trazer o suporte a embeddings, que permite fazer buscas eficientes de texto usando IA. Um novo tipo de dados chamado “vector” foi criado e com ele você vai poder armazenar os embeddings, que é uma estrutura de dados gerada por modelos de AI. E então, usando funções como VECTOR_DISTANCE ou VECTOR_SEARCH, você pode fazer as buscas e comparações. Eu já tinha escrito um post bem detalhado sobre isso e agora você pode testar os scripts no seu Public Preview: IA no SQL Server: O que são embeddings – IA Talking 🤖
Aqui está um pequeno exemplo de como você pode gerar embeddings usando a OpenAI:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
-- crie uma database master key create master key encryption by password = 'EscolhaUmaSenhaForteESecreta'; -- Substitua APIKEY pela api key que gera no portal! -- Gere api keys em https://platform.openai.com/api-keys create database scoped credential [https://api.openai.com] with Identity = 'HTTPEndpointHeaders', SECRET = '{"Authorization":"Bearer APIKEY"}' -- Esses 2 comandos acimas voce precisa fazer apenas 1x -- crie a definição do modelo de IA if exists(select * From sys.external_models where name = 'Openai') drop external model Openai; create external model Openai -- de um nome de sua escolha! with ( LOCATION = 'https://api.openai.com/v1/embeddings' ,API_FORMAT = 'OpenAI' ,MODEL_TYPE = EMBEDDINGS ,MODEL = 'text-embedding-3-small' ,CREDENTIAL = [https://api.openai.com] ) -- cria uma coluna para receber os embeddings! alter table posts add embeddings vector(1536) -- atualiza update posts set embeddings = AI_GENERATE_EMBEDDINGS(resumo use model Openai ) -- faz uma busca! declare @Busca vector(1536) = AI_GENERATE_EMBEDDINGS('performance' use model Openai ) select top 3 * ,CosineDistance = vector_distance('cosine',@Busca,embeddings) from posts order by CosineDistance |
Note que no script acima, usamos diversos novos elementos relacionados ao suporte de IA no SQL Server:
-
Novo tipo de dados vector.
-
Função VECTOR_DISTANCE, para comparar os vectors.
-
Comando CREATE EXTERNAL MODEL.
-
Função AI_GENERATE_EMBEDDINGS.
Há outras novas funções além dessas, e você pode explorar no link do final do post.
JSON: Novas funções e tipos de dados
As novidades não ficaram só na parte de IA. Também temos muitas novidades relacionadas a JSON, por exemplo: nova função JSON_ARRAYAGG.
Além disso, temos um novo tipo de dados chamado “json”. Até o SQL Server 2022, o json era armazenado como string, e com esse novo tipo, passou a ganhar uma estrutura binária própria, semelhante ao que já faz o postgreSQL.
E, não para por aí, junto com o tipo de dados, ganhamos também um novo tipo de índice: CREATE JSON INDEX. Agora, você pode indexar os campos json e fazer buscas usando novas funções, que podem se beneficiar dos índices.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
declare @PostsJson nvarchar(max) exec sp_invoke_external_rest_endpoint 'https://thesqltimes.com/blog/wp-json/wp/v2/posts?_fields&per_page=100' ,@response = @PostsJson output ,@method = 'GET' drop table if exists posts; create table posts(id int primary key, js json); insert into posts select * from openjson(@PostsJson,'$.result') with ( id int, js nvarchar(max) '$' as json ) create json index ixJson on posts(js) select * from posts where JSON_CONTAINS(js,'100-scripts-de-dba','$.slug') = 1 |

REGEX: Finalmente o poder das expressões regulares
Finalmente temos a oportunidade de usar expressões regulares dentro do SQL Server sem precisar de CLR. Usar expressões regulares é uma forma bem poderosa de buscar padrões de texto, bem parecido com o comando LIKE. Por exemplo, essas duas queries fazem a mesma coisa (buscar textos que terminam com um dígito e qualquer coisa que não seja um dígito), mas uma usa LIKE a outra REGEX:
1 2 |
select titulo from posts where titulo like N'%[0-9][^0-9]' select titulo from posts where REGEXP_COUNT(titulo,'\d[^\d]$') > 0 |

Mas, com regex, conseguimos criar expressões bem mais complexas. Por exemplo, se eu quiser encontrar todos os artigos cujo título termina com dígitos, mas sem espaços antes do primeiro dígito:
Fazer isso com LIKE é quase impossível ou você vai ter que quebrar em muitas expressões.
E não para por aí… Se eu quiser trazer exatamente esses casamentos, basta usar REGEXP_MATCHES:
1 2 3 4 5 6 7 |
select titulo ,m.* from posts p cross apply REGEXP_MATCHES(p.titulo,'[^\s\d]\d+$') m |

Legal né? Demorou, mas chegou!
Eu sou suspeito demais para falar de Regex, porque eu simplesmente AMO esse recurso, que está presente na grande maioria das linguagens e editores de texto, etc.
Para mais informações: https://learn.microsoft.com/en-us/sql/relational-databases/regular-expressions/overview?view=sql-server-ver17
Se quiser aprender tudo sobre regex, com um conteúdo de altíssima qualidade, gratuito e em português: https://aurelio.net/regex/
Melhorias no AlwaysON:
Na parte de alta disponibilidade, temos uma lista grande de coisas novas no AlwaysON. Destaco um log melhorado no health check timeout, que agora inclui alguns contadores do perfmon, o que pode ser útil para você entender como estava o ambiente próximo de uma falha. Isso vai te ajudar a determinar, por exemplo, se o timeout foi causado por problemas nos recursos, com base nos valores da utilização que foram logados.
Outra novidade é que agora você vai poder fazer backup full e diferencial em réplicas secundárias! Você precisa habilitar algumas trace flags nas réplicas onde quer fazer o backup e então, é só fazer! Até o SQL Server 2022, só era possível fazer backup copy-only ou backup de log nas réplicas secundárias. Você receberia um erro semelhante a este se tentasse executar um backup full:
1 2 3 4 |
Msg 3059, Level 16, State 1, Line 3 This BACKUP or RESTORE command is not supported on a database mirror or secondary replica. Msg 3013, Level 16, State 1, Line 3 BACKUP DATABASE is terminating abnormally. |

Agora, habilitando a trace flag 3262 (ou 3261 para backup diferencial), você pode fazer um backup FULL na secondary:
O Query Store for Secondaries, que apareceu no SQL Server 2022, agora deixa de ser uma feature preview e passar a ser habilitada por padrão. Em outras palavras, você não precisa mais adicionar a trace flag 12606 para habilitá-la. Pelo contrário, essa TF agora, desliga a feature. Então, você deve remover a TF se quiser continuar usando.
E ainda temos persisted statistics for readable secondaries, onde você pode se beneficiar de estatísticas que são criadas para as queries que rodam nas réplicas secundárias. Até o SQL Server 2022, essas estatísticas eram temporárias, isto é, ficavam na tempdb do secundário. Após um restart, perdia tudo! Como nem sempre pode ser as mesmas queries do primário, isso traz um benefício muito legal para os relatórios! Essa feature usa o Query Store for secondaries para enviar a estatísticas para o banco principal e persisti-las. (Persisted Statistics for Readable Secondary Replicas – SQL Server | Microsoft Learn
Olha só o que muda na sys.stats quando essa feature é usada:
Perceba que agora temos 3 novas colunas: replica_role_id, replica_role_desc e replica_name. Essas colunas vão te ajudar a saber de onde a estatística veio. No caso da imagem acima, a estatística foi gerada em uma réplica secundária, especificamente uma chamada sql2.
Isso traz muitos ganhos para clientes que possuem relatórios nas instâncias secundárias. Agora, após eventuais restarts, as estatísticas que atendem esses relatórios serão mantidas, e isso ajudará a evitar problemas de performance!
Backups
Agora temos disponível um novo algoritmo de compressão de backups chamado “ZSTD”.
1 2 3 4 5 6 |
backup database Traces to disk = 'S:\mssql\A25\Traces-ZSTD.bak' with COMPRESSION (ALGORITHM = ZSTD) ,init ,format |
Controlando o Consumo do Tempdb
Uma outra novidade interessante é poder configurar como o espaço do tempdb vai ser utilizado, via Resource Governor. Isso com certeza pode ajudar cenários críticos onde, por exemplo, uma aplicação legada tem problemas frequentes com consumo do tempdb, causando indisponibilidade da instância. Agora você pode limitar o quanto um usuário, ou grupos de usuários, podem consumir do tempdb.
1 2 3 4 |
CREATE WORKLOAD GROUP TempdbLimitada with ( group_max_tempdb_data_mb = 100 ) GO |
1 2 |
Msg 1138, Level 17, State 1, Line 8 Could not allocate a new page for database 'tempdb' because that would exceed the limit set for workload group 'TempdbLimitada'. |

Nova Query Hint: ABORT_QUERY_EXECUTION
Uma nova query hint permite que você aborte a execução de uma query.
A princípio, isso parece completamente sem utilidade, afinal, quem colocaria isso na sua própria query, não é mesmo? Mas, aqui é o pulo do gato: você pode usar essa query hint com uma feature do Query Store que já existe desde as versões passadas: Query Store hints. Com isso, se você identificar uma query que não deveria rodar e consome muito recurso do ambiente, você pode adicionar esta hint e a query vai começar a dar erro, evitando o consumo. Isso é bem útil em cenários onde existem aplicações legadas que podem impactar e o DBA não tem o poder imediato de parar, ou não se pode parar todas as queries, mas apenas algumas.
1 2 3 |
EXEC sys.sp_query_store_set_hints @query_id = 4, @query_hints = N'OPTION (USE HINT (''ABORT_QUERY_EXECUTION''))' |
Segurança
Há também muitas melhorias na parte de segurança, que vão desde melhorias em caches até o suporte a nova versão do TDS (Tabular Data Stream). Um destaque aqui é quem já usa logins integrados do Azure AD, que apareceu no SQL Server 2022. Agora no SQL Server 2025 você consegue criar usuários com o mesmo displayName bastando diferenciá-los pelo novo parâmetro OBJECT_ID do comando create login./user
1 2 |
CREATE LOGIN [login_name] FROM EXTERNAL PROVIDER WITH OBJECT_ID = 'objectid' |
Melhorias na Engine
Há diversas melhorias na engine, como o Optimized Locking, que você pode habilitar por banco e tem por objetivo ajudar a reduzir bloqueios e lock escalation.
Agora o ADR (Accelerated Database Recovery) pode ser habilitado também no tempdb.
Outra novidade, finalmente você poderá remover filegroups com In-Memory. Esse é um problema que muita gente, especialmente quando faz testes, deve ter raiva: você não pode remover o filegroup que é marcado com In Memory data. Pelo menos, não podia até o SQL Server 2022. No SQL Server 2025, você vai poder remover, desde que esteja vazio. Uma nova DMV está disponível para acompanhar o processo de remoção e desligamento da engine do In Memory:
1 |
select * from sys.dm_db_xtp_undeploy_status; |

Otimizações na procedure “sp_executesql”.
Melhorias na linguagem e funções.
Além das novas funções de IA, JSON e Regex, o SQL Server 2025 traz algumas novidades no T-SQL, destacando:
-
Agora você pode concatenar strings usandos ||, que é ANSI.
-
Nova função de agregação: PRODUCT ( multiplica todos os dados do grupo ).
-
DATEADD suporta bigint (você adicionar, por exemplo, bilhões de nano segundos para uma data).
-
BASE64_ENCODE e BASE64_DECODE. Antes do SQL Server 2025, era possível fazer isso usando um hack com XML.
-
Há também funções relacionadas a comparação Fuzzy, como por exemplo usando o algoritmo Jaro Winkler com JARO_Winkgler_simILARITY.
A lista é grande… Ainda tem coisas como Mirror pro Fabric, … Não dá pra falar tudo agora, mas com certeza iremos abordando ao longo dos próximos meses. Fica ligado nas redes da Power Tuning, pois podemos postar novos artigos ou anunciar lives para mostrar mais novidades.
Por fim, se você quiser ver todos os detalhes, confira nesse link: What’s New in SQL Server 2025 – SQL Server | Microsoft Learn
Obrigado e espero que tenha gostado desse post!
Abraço,
Rodrigo Gomes
Artigo desenvolvido por: Rodrigo Gomes (Head de Inovação).