Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách nhanh nhất để tìm các tính năng không dùng nữa vẫn được sử dụng trong phiên bản máy chủ SQL (Ví dụ T-SQL)

Trong SQL Server, sys.dm_os_performance_counters chế độ xem quản lý động hệ thống trả về bộ đếm hiệu suất do máy chủ duy trì.

Một trong nhiều điều bạn có thể làm với sys.dm_os_performance_counters là trả về danh sách các tính năng không dùng nữa trong phiên bản SQL Server hiện tại. Bạn cũng có thể sử dụng danh sách này để xem số lần một tính năng không dùng nữa đã được sử dụng kể từ khi khởi động SQL Server.

Đây có thể là cách nhanh nhất để tìm hiểu xem bạn có đang sử dụng một tính năng không được dùng nữa trong SQL Server hay không.

Chế độ xem trả về một hàng cho mỗi bộ đếm hiệu suất được máy chủ duy trì. Đối tượng SQLServer:Deprecated Features cung cấp một bộ đếm để giám sát các tính năng được chỉ định là không dùng nữa. Nó có cntr_value , cung cấp số lượng sử dụng liệt kê số lần gặp phải tính năng không dùng nữa kể từ khi SQL Server khởi động lần cuối.

Do đó, bằng cách chạy một truy vấn đối với chế độ xem này, chúng tôi có thể trả về tất cả các tính năng không dùng nữa cùng với số lần gặp phải từng tính năng kể từ khi SQL Server khởi động lần cuối.

Ví dụ 1 - Trả lại tất cả các tính năng không dùng nữa đã gặp kể từ khi khởi động máy chủ SQL

Do đó, chúng tôi có thể sử dụng truy vấn sau để tìm tất cả các tính năng không dùng nữa đã gặp phải kể từ khi SQL Server khởi động lần cuối, cùng với số lần từng mục đã gặp phải:

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;

Kết quả:

+-----------------------------------+---------------+
| 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             |
+-----------------------------------+---------------+

Ở đây tôi đã sử dụng RTRIM() hàm (bạn cũng có thể sử dụng TRIM() ) để cắt khoảng trắng ở bên phải của đối tượng địa lý. Tôi đã làm điều này vì instance_name cột sử dụng nchar(128) kiểu dữ liệu khiến cột được đệm ra 128 ký tự. Bằng cách cắt bớt khoảng trắng, ví dụ hiện có thể vừa với trang web mà không yêu cầu cuộn ngang.

Ví dụ 2 - Trả lại các tính năng theo tên

Nếu bạn có một tính năng cụ thể mà bạn quan tâm, bạn luôn có thể tìm kiếm nó theo tên:

SELECT 
  TRIM(instance_name) 'Feature', 
  cntr_value 'Usage Count'
FROM sys.dm_os_performance_counters   
WHERE object_name = 'SQLServer:Deprecated Features'
AND instance_name LIKE '%timestamp%';

Kết quả:

+------------------------------------+---------------+
| Feature                            | Usage Count   |
|------------------------------------+---------------|
| INSERT NULL into TIMESTAMP columns | 0             |
| TIMESTAMP                          | 1             |
+------------------------------------+---------------+

Xem thêm chi tiết về từng tính năng không được dùng nữa

Phương pháp trên là một cách nhanh chóng để xem liệu các tính năng không dùng nữa có còn được sử dụng trong ứng dụng của bạn hay không. Một nhược điểm là nó không cung cấp nhiều thông tin về những việc cần làm với nó hoặc thậm chí những câu lệnh SQL nào bao gồm tính năng không dùng nữa, chứ đừng nói đến người dùng nào đã chạy nó.

Bạn có thể sử dụng các phiên sự kiện mở rộng để trả về thêm thông tin, chẳng hạn như các câu lệnh SQL vi phạm, người dùng đã chạy nó, thời gian nó được chạy và hơn thế nữa. Bạn thậm chí có thể ghi lại tất cả trong một tệp nhật ký để bạn có thể tham khảo nó sau này. Xem Sử dụng sự kiện mở rộng để ghi nhật ký Các tính năng không được dùng nữa đang được sử dụng trong Phiên bản máy chủ SQL để làm ví dụ.

Ngoài ra, hãy xem bài viết của Microsoft Các tính năng của công cụ cơ sở dữ liệu không được chấp nhận trong SQL Server 2017 để biết các đề xuất về cách xử lý từng mục không dùng nữa. Danh sách đó hoàn toàn giống với danh sách dành cho SQL Server 2016.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2017 Backup -1

  2. PHP, ORM, MSSQL và Unicode, có thể làm cho chúng hoạt động cùng nhau không?

  3. Cách đặt đối chiếu của cơ sở dữ liệu trong SQL Server (T-SQL)

  4. Cách thực thi một trình kích hoạt chỉ khi một cột cụ thể được cập nhật (SQL Server)

  5. Cách nắm bắt và phân tích các sự kiện SQL Server