Last week's Microsoft Ignite 2025 brought exciting news, most notably the official availability of SQL Server 2025. While the core database engine continues to evolve, several noteworthy shifts and additions have been introduced, particularly concerning reporting and development capabilities.
One of the most significant changes affects the traditional
SQL Server Reporting Services (SSRS):
- The SSRS
server will no longer be available as an integrated add-on for
SQL Server 2025 installations.
- Instead,
Microsoft is steering users toward the Power BI Report Server (PBIRS).
PBIRS is the designated platform for hosting both paginated reports
(the modern equivalent of SSRS reports) and Power BI reports.
This transition reinforces Microsoft's unified reporting
strategy. However, to truly serve enterprise needs, I hope future updates to
PBIRS will incorporate features already available in the Power BI Service, such
as:
- Row-Level
Security (RLS) for enhanced data governance.
- The
ability to use a single, unified semantic model as the data source
for multiple reports, streamlining data management and consistency.
Enhanced Development Capabilities in SQL Server 2025
The development environment in SQL Server 2025 sees a
substantial upgrade, introducing numerous features designed to handle modern
data types and complex queries:
- Greater
Support for JSON
- Vector
Search capabilities
- Native
support for Regular Expressions
Among these additions, one feature, in particular, caught my
attention: the new PRODUCT function.
The Power of the New PRODUCT Function
The PRODUCT function is a powerful addition that calculates
the product (multiplication) of the values in a set. This function is a
significant tool, especially for the financial sector, where
calculations involving cumulative growth rates or compound factors are common.
It can be used both as an aggregate function or as an
analytical (window) function.
Here is a simple example of using PRODUCT
1> use testnf2025
2> go
Changed database context to 'testnf2025'.
1> create table t
2> ( id int primary key ,
3> code
varchar(10) not null ,
4> name
varchar(50) not null ,
5> pos_date date
not null ,
6> price
numeric(9,2) not null
7> )
8> ;
9> go
1> insert into t
values ( 1 , '001' , 'PHONE' , '2005-12-01' , 100 ) ;
2> insert into t
values ( 2 , '001' , 'PHONE' , '2025-12-01' , 799 ) ;
3> insert into t
values ( 3 , '002' , 'SMART CAMERA' , '2025-12-01' , 57 ) ;
4> go
(1 rows affected)
(1 rows affected)
(1 rows affected)
PRODUCT as an aggregate function
2> from t
3> group by code,
name;
4> go
code name prd_price
----------
----------------
---------------------------
001 PHONE 79900.000000
002 SMART CAMERA 57.000000
(2 rows affected)
PRODUCT as an window function
1> Select code ,
name ,
2> PRODUCT(
price) over ( partition by code order by
pos_date ) as prd_price_running
3> from t;
4> go
code name prd_price_running
----------
---------- ---------------------------------
001 PHONE 100.000000
001 PHONE 79900.000000
002 SMART CAMERA 57.000000
(3 rows affected)
More to explore with the other features soon .
Stay Tuned .
No comments:
Post a Comment