go backsqlschool blogs list

How can I find discontinued/deprecated features?

by Antonios Chatzipavlis

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


Ημερομηνία: 03 April 2018 11:59
Αξιολόγηση:
Κατηγορίες:
Share it:

Σχετικά Blog Post

Σχόλια - Comments

user-gravatar

Στις 10 Apr 2018 @ 9:32 AM o/η Αλέξανδρος Παππάς έγραψε:

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

user-gravatar

Στις 10 Apr 2018 @ 12:32 PM o/η Antonios Chatzipavlis έγραψε:

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

Αφήστε το σχόλιο σας - Leave your comment

Τα σχόλια έχουν κλείσει.
Επιτρέπονται μόνο τα σχόλια από τα μέλη του SqlSchool.gr.


newsletter subscription

Εάν επιθυμείτε να λαμβάνετε ενημέρωση από εμάς, δώστε μας το e-mail σας.
PASS chapter logo
Official Professional Association for SQL Server (PASS) chapter for Greece
Join to PASS