Πρόσφατα έλαβα μια ερώτηση για το πως μπορούμε να βρούμε τα 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 όπως φαίνονται στην παρακάτω εικόνα.
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 */