sqlschool.gr logo

articles

Articles of SQLschool.gr Team

How can I find discontinued/deprecated features?

Antonios Chatzipavlis
Tuesday 03 April 2018

Πρόσφατα έλαβα μια ερώτηση για το πως μπορούμε να βρούμε τα discontinued/deprecated features στο τρέχων SQL Server instance μας το οποίο θέλουμε να κάνουμε migrate σε επόμενη έκδοση.

Αρχικά θα πρέπει να επισημάνω ότι ο SQL Server είναι ίσως το μοναδικό προϊόν που έχει η Microsoft που με συνέπεια χρόνια τώρα αναφέρει σε κάθε έκδοση που βγαίνει τι δεν θα υποστηρίζεται στην επόμενη έκδοση και τι πρόκειται να μην υποστηρίζεται σε επόμενες εκδόσεις. Αυτό σημαίνει ότι μου δίνεται η δυνατότητα να προγραμματίσω με άνεση τις αλλαγές που χρειάζεται να γίνουν ώστε να έχω ομαλή μετάβαση σε επόμενη έκδοση.

Στην τρέχουσα έκδοση του SQL Server 2017 το link που περιέχει όλα αυτά είναι αυτό και μπορείτε να βρείτε και για τις προηγούμενες εκδόσεις.

Πέρα από το query που αναφέρεται στο παραπάνω άρθρο έχω και άλλες δυνατότητες που μου δίνουν περισσότερες λεπτομέρειες.

Using XE Events

Ο ποιο σύγχρονος τρόπος για κάνει κάποια κάτι τέτοιο είναι να χρησιμοποιήσει τα extended events στα οποίο θα πρέπει να κάνει χρήση των events sqlserver.deprecation_announcement , sqlserver.deprecation_final_support.

Αυτό μπορεί κάποιος να το κάνει είτε μέσα από το SSMS είτε με το παρακάτω script.

CREATE EVENT SESSION [Deprecated] ON SERVER 
ADD EVENT sqlserver.deprecation_announcement(
    ACTION(sqlserver.database_name,sqlserver.sql_text,sqlserver.tsql_stack)),
ADD EVENT sqlserver.deprecation_final_support(
    ACTION(sqlserver.database_name,sqlserver.sql_text,sqlserver.tsql_stack))
ADD TARGET package0.event_file(SET filename=N'Deprecated',max_file_size=(100))
WITH (STARTUP_STATE=ON)
GO

Using Profiler

Για όσους ακόμα δεν έχουν την δυνατότητα να χρησιμοποιήσουν τα XE Events υπάρχει ακόμα ο SQL Server Profiler που και αυτός περιέχει τα deprecation events όπως φαίνονται στην παρακάτω εικόνα.

image

Using SQL Trace

Για όσους δεν θέλουν να έχουν το όποιο overhead που έχει ο profiler μπουν να χρησιμοποιήσουν το SQL Trace για να κάνουν την καταγραφή αυτή. Το παρακάτω script κάνει αυτή την δουλειά απλά δείτε τα σχόλια για να κάνετε τις αλλαγές που απαιτούνται πριν την εκτέλεση του.

/****************************************************/
/* Created by: SQL Server 2017 Profiler          */
/* Date: 03/04/2018  11:42:36         */
/****************************************************/


-- Create a Queue
declare @rc int
declare @TraceID int
declare @maxfilesize bigint
set @maxfilesize = 5 

-- Please replace the text InsertFileNameHere, with an appropriate
-- filename prefixed by a path, e.g., c:\MyFolder\MyTrace. The .trc extension
-- will be appended to the filename automatically. If you are writing from
-- remote server to local drive, please use UNC path and make sure server has
-- write access to your network share

exec @rc = sp_trace_create @TraceID output, 0, N'InsertFileNameHere', @maxfilesize, NULL 
if (@rc != 0) goto error

-- Client side File and Table cannot be scripted

-- Set the events
declare @on bit
set @on = 1
exec sp_trace_setevent @TraceID, 125, 1, @on
exec sp_trace_setevent @TraceID, 125, 9, @on
exec sp_trace_setevent @TraceID, 125, 3, @on
exec sp_trace_setevent @TraceID, 125, 11, @on
exec sp_trace_setevent @TraceID, 125, 4, @on
exec sp_trace_setevent @TraceID, 125, 6, @on
exec sp_trace_setevent @TraceID, 125, 7, @on
exec sp_trace_setevent @TraceID, 125, 8, @on
exec sp_trace_setevent @TraceID, 125, 10, @on
exec sp_trace_setevent @TraceID, 125, 12, @on
exec sp_trace_setevent @TraceID, 125, 14, @on
exec sp_trace_setevent @TraceID, 125, 22, @on
exec sp_trace_setevent @TraceID, 125, 26, @on
exec sp_trace_setevent @TraceID, 125, 34, @on
exec sp_trace_setevent @TraceID, 125, 35, @on
exec sp_trace_setevent @TraceID, 125, 41, @on
exec sp_trace_setevent @TraceID, 125, 49, @on
exec sp_trace_setevent @TraceID, 125, 50, @on
exec sp_trace_setevent @TraceID, 125, 51, @on
exec sp_trace_setevent @TraceID, 125, 55, @on
exec sp_trace_setevent @TraceID, 125, 60, @on
exec sp_trace_setevent @TraceID, 125, 61, @on
exec sp_trace_setevent @TraceID, 125, 63, @on
exec sp_trace_setevent @TraceID, 125, 64, @on
exec sp_trace_setevent @TraceID, 126, 1, @on
exec sp_trace_setevent @TraceID, 126, 9, @on
exec sp_trace_setevent @TraceID, 126, 3, @on
exec sp_trace_setevent @TraceID, 126, 11, @on
exec sp_trace_setevent @TraceID, 126, 4, @on
exec sp_trace_setevent @TraceID, 126, 6, @on
exec sp_trace_setevent @TraceID, 126, 7, @on
exec sp_trace_setevent @TraceID, 126, 8, @on
exec sp_trace_setevent @TraceID, 126, 10, @on
exec sp_trace_setevent @TraceID, 126, 12, @on
exec sp_trace_setevent @TraceID, 126, 14, @on
exec sp_trace_setevent @TraceID, 126, 22, @on
exec sp_trace_setevent @TraceID, 126, 26, @on
exec sp_trace_setevent @TraceID, 126, 34, @on
exec sp_trace_setevent @TraceID, 126, 35, @on
exec sp_trace_setevent @TraceID, 126, 41, @on
exec sp_trace_setevent @TraceID, 126, 49, @on
exec sp_trace_setevent @TraceID, 126, 50, @on
exec sp_trace_setevent @TraceID, 126, 51, @on
exec sp_trace_setevent @TraceID, 126, 55, @on
exec sp_trace_setevent @TraceID, 126, 60, @on
exec sp_trace_setevent @TraceID, 126, 61, @on
exec sp_trace_setevent @TraceID, 126, 63, @on
exec sp_trace_setevent @TraceID, 126, 64, @on


-- Set the Filters
declare @intfilter int
declare @bigintfilter bigint

exec sp_trace_setfilter @TraceID, 10, 0, 7, N'SQL Server Profiler - d5e63f66-1920-401f-a9a5-a0c00ea0a9a5'
-- Set the trace status to start
exec sp_trace_setstatus @TraceID, 1

-- display trace id for future references
select TraceID=@TraceID
goto finish

error: 
select ErrorCode=@rc

finish: 
go

/* antonch */


Comments

10 Apr 2018 @ 9:32 AM

user-gravatar

Αλέξανδρος Παππάς

Το πρόβλημα είναι, ότι όταν δύο εκδόσεις απέχουν αρκετά, π.χ. SQL 2008 και SQL 2016, δεν περιέχονται όλα τα discontinued features του SQL 2016 στα deprecated features του SQL 2008. Πιστεύω, πως λείπει η εξής λειτουργικότητα:Παραγωγή trace από συνθήκες παραγωγής του SQL 2008 και διερεύνηση του trace κατά πόσο περιέχει discontinued features του SQL 2016.

10 Apr 2018 @ 12:32 PM

user-gravatar

Antonios Chatzipavlis

Εφόσον υπάρχει αυτή η διαφορά μπορείτε να χρησιμοποιήσετε τον Microsoft Data Migration Assistant v3.4 ο οποίος θα σας βρει αυτά που αναζητάτε.

Antonios Chatzipavlis

Antonios Chatzipavlis

Antonios is a Data Solutions Consultant and Trainer. He has been working in IT since 1988. In his career, he has worked as senior developer, IT Manager, Solutions Architect and IT Consultant. Since 1995 he has been devoted on new technologies and software development tools, mainly by Microsoft, either by training company staff and colleagues or assisting them in design, development and implementation as a consultant or chief developer. He has focused in Databases and Data Science since 1995. He specialized in Microsoft SQL Server since version 6.0 in areas like SQL Server Internals, Database Design and Development, Business Intelligence and in 2010 he has started working with Azure Data Platform, NoSQL databases, Big Data Technologies and Machine Learning. He is an active member of many IT communities in Greece, answering colleagues' questions and writing articles in his web site. He is the owner of SQLschool.gr which is a community portal with a lot of information about Microsoft SQL Server. He has been a Microsoft Certified Trainer (MCT) since 2000. Microsoft honored him as MVP on Data Platform due to his activities in SQL Server since 2010. He holds a large number of Microsoft Certifications and Microsoft SQL Server Certifications since version 6.5.

Tip

What's New in SQL Server 2022 - Episodes

More Tips...

Become a member

If you want to receive updates from us become a member to our community.

Connect

Explore

Learn


sqlschool.gr © 2010-2024 All rights reserved

This site uses cookies for operational and analytics purposes only. By continuing to browse this site, you agree to their use.