Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

2 Cara untuk Melihat apakah Fitur Usang Masih Digunakan di Instance SQL Server

Sungguh menakjubkan betapa cepatnya beberapa fitur dapat ditinggalkan di dunia perangkat lunak.

Artikel ini menyajikan dua metode untuk melihat apakah fitur yang tidak digunakan lagi digunakan dalam contoh SQL Server.

Metode 1 – sys.dm_os_performance_counters

Mungkin cara tercepat untuk melakukannya adalah menggunakan sys.dm_os_performance_counters tampilan manajemen dinamis sistem. Di antara banyak hal yang dapat Anda lakukan dengan tampilan ini, adalah mendapatkan daftar fitur yang tidak digunakan lagi, bersama dengan berapa kali fitur tersebut digunakan sejak SQL Server dimulai.

Berikut ini contoh yang diambil dari artikel saya Cara Tercepat untuk Menemukan Fitur Usang yang Masih Digunakan di Instance SQL Server:

SELECT
  RTRIM(instance_name) 'Feature', 
  cntr_value 'Usage Count'
FROM sys.dm_os_performance_counters   
WHERE object_name = 'SQLServer:Deprecated Features'
AND cntr_value > 0;

Hasil:

+-----------------------------------+---------------+
| Feature                           | Usage Count   |
|-----------------------------------+---------------|
| String literals as column aliases | 1             |
| TIMESTAMP                         | 1             |
| numbered_procedures               | 1             |
| sysdatabases                      | 3             |
| sp_db_vardecimal_storage_format   | 1             |
| XP_API                            | 2             |
+-----------------------------------+---------------+

Dalam contoh ini, saya hanya mengembalikan baris di mana object_name kolom memiliki nilai SQLServer:Deprecated Features , dan cntr_value nilai kolom lebih besar dari nol.

Anda dapat menghapus cntr_value kolom dari kueri ini untuk mengembalikan semua fitur yang tidak digunakan lagi, termasuk yang belum digunakan.

Metode 2 – Gunakan Peristiwa yang Diperpanjang

Cara lain untuk melakukannya adalah dengan menggunakan acara diperpanjang. Ini adalah metode yang lebih komprehensif, dan Anda dapat menggunakannya untuk membuat file log yang berisi semua contoh penggunaan fitur yang tidak digunakan lagi, bersama dengan pernyataan SQL yang digunakan yang berisi fitur yang tidak digunakan lagi, siapa yang menjalankannya, database yang digunakan untuk menjalankannya, dll. . Di bawah ini adalah contohnya.

Buat acara:

CREATE EVENT SESSION [Deprecation Events] ON SERVER 
ADD EVENT sqlserver.deprecation_announcement(
    ACTION(
        sqlserver.database_name,
        sqlserver.sql_text,
        sqlserver.username
        )
),
ADD EVENT sqlserver.deprecation_final_support(
    ACTION(
        sqlserver.database_name,
        sqlserver.sql_text,
        sqlserver.username
    )
)
ADD TARGET package0.event_file(
    SET filename=N'/var/opt/mssql/tmp/DeprecationEvents.xel'
    )
WITH (
    TRACK_CAUSALITY = ON
    );

Mulai acara:

ALTER EVENT SESSION [Deprecation Events] ON SERVER STATE = START;

Jalankan beberapa kode usang:

SELECT * FROM sys.sql_dependencies;

Baca lognya:

SELECT
    EventXml.value('(@timestamp)[1]', 'datetime2') AS [timestamp],
    EventXml.value('(action[@name="username"]/value)[1]', 'nvarchar(256)') AS username,
    EventXml.value('(action[@name="database_name"]/value)[1]', 'nvarchar(128)') AS database_name,
    EventXml.value('(action[@name="sql_text"]/value)[1]', 'varchar(4000)') AS sql_text,
    EventXml.value('(@name)[1]', 'varchar(50)') AS event_name,
    EventXml.value('(data[@name="feature"]/value)[1]', 'varchar(255)') AS feature,
    EventXml.value('(data[@name="message"]/value)[1]', 'varchar(max)') AS message
FROM (SELECT CAST(event_data AS XML) AS XmlEventData
    FROM sys.fn_xe_file_target_read_file (
        '/var/opt/mssql/tmp/DeprecationEvents*.xel', 
        null, 
        null, 
        null
    )) AS EventTable
CROSS APPLY EventTable.XmlEventData.nodes('event') AS q(EventXml);

Hasil (menggunakan keluaran vertikal):

timestamp     | 2019-10-31 04:03:06.5280000
username      | sa
database_name | Test
sql_text      | SELECT * FROM sys.sql_dependencies;
event_name    | deprecation_announcement
feature       | sql_dependencies
message       | sql_dependencies will be removed in a future version of SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use it.

Untuk diskusi yang lebih mendetail tentang metode ini, lihat Menggunakan Peristiwa yang Diperpanjang untuk Mencatat Fitur yang Tidak Digunakan Lagi di Instance SQL Server. Artikel itu menyertakan contoh yang sama, tetapi dengan sedikit lebih detail.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa mencari semua kolom dalam sebuah tabel?

  2. Cara Memformat Angka dengan Koma di SQL Server

  3. Cara membagi string setelah karakter tertentu di SQL Server dan memperbarui nilai ini ke kolom tertentu

  4. Pernyataan pembaruan dinamis dengan nama kolom variabel

  5. 2 Cara Membuat Database di Linked Server menggunakan T-SQL