W SQL Server możesz użyć sys.dm_os_performance_counters
widok dynamicznego zarządzania systemem, aby zwrócić listę funkcji oznaczonych jako przestarzałe w bieżącej instancji SQL Server.
Aby zwrócić tylko przestarzałe funkcje, przefiltruj widok tylko do obiektu SQLServer:Deprecated Features.
Widok zawiera również licznik, który wyświetla liczbę przypadków napotkania każdej przestarzałej funkcji od czasu ostatniego uruchomienia programu SQL Server. Może to być pomocne w ustaleniu, czy Twoja aplikacja nadal korzysta z przestarzałych funkcji.
Uruchomienie tego na SQL Server wymaga VIEW SERVER STATE
pozwolenie.
Przykład 1 – Podstawowe użycie
SELECT * FROM sys.dm_os_performance_counters WHERE object_name = 'SQLServer:Deprecated Features';
Kiedy uruchamiam to na mojej instancji SQL Server 2019, otrzymuję 254 wiersze, więc nie będę ich tutaj wymieniać. Na mojej instancji SQL Server 2017 otrzymuję 253 wiersze.
Jeśli zawęź wyniki do dwóch konkretnych wierszy, mogę otrzymać coś takiego:
SELECT * FROM sys.dm_os_performance_counters WHERE object_name = 'SQLServer:Deprecated Features' AND instance_name LIKE '%timestamp%';
Wynik:
+-------------------------------+----------------+------------------------------------+--------------+-------------+ | object_name | counter_name | instance_name | cntr_value | cntr_type | |-------------------------------+----------------+------------------------------------+--------------+-------------| | SQLServer:Deprecated Features | Usage | INSERT NULL into TIMESTAMP columns | 0 | 65792 | | SQLServer:Deprecated Features | Usage | TIMESTAMP | 1 | 65792 | +-------------------------------+----------------+------------------------------------+--------------+-------------+
Witryna firmy Microsoft zawiera pełną listę przestarzałych funkcji silnika bazy danych w programie SQL Server 2017 wraz z zalecanymi działaniami, które należy podjąć w przypadku dowolnej funkcji oznaczonej jako przestarzała. Lista jest taka sama jak w przypadku SQL Server 2016.
Przykład 2 – Korzystanie z widoku za pośrednictwem aplikacji
Jeśli używasz sys.dm_os_performance_counters
widoku w aplikacji, należy unikać używania symbolu wieloznacznego gwiazdki (*
), aby zwrócić wszystkie kolumny z widoków i funkcji dynamicznego zarządzania systemem (zgodnie z zaleceniami firmy Microsoft). W takich przypadkach, jeśli chcesz zwrócić wszystkie kolumny, lepiej podać nazwę każdej kolumny w zapytaniu.
Dlatego możemy zmienić poprzedni przykład na następujący:
SELECT object_name, counter_name, instance_name, cntr_value, cntr_type FROM sys.dm_os_performance_counters WHERE object_name = 'SQLServer:Deprecated Features';
Firma Microsoft zaleca, aby usługi Azure SQL Data Warehouse i Parallel Data Warehouse zwracały dodatkową kolumnę o nazwie pdw_node_id
, więc o tym też należy pamiętać.
Przykład 3 – Wypełnienie
Pierwsze trzy kolumny używają typu danych nchar(128) . Może to spowodować dopełnienie dużej ilości białych znaków po prawej stronie tekstu.
Aby wyeliminować tę dodatkową spację, możesz użyć RTRIM()
funkcja (lub TRIM()
funkcja, jeśli wolisz) w pierwszych trzech kolumnach:
SELECT RTRIM(object_name) AS Object, RTRIM(counter_name) AS Counter, RTRIM(instance_name) AS Instance, cntr_value, cntr_type FROM sys.dm_os_performance_counters WHERE object_name = 'SQLServer:Deprecated Features';
Dokumentacja Microsoft
Oto linki do odpowiedniej dokumentacji w witrynie Microsoft:
- Dokumentacja dla
sys.dm_os_performance_counters
zobacz - Omówienie obiektów i liczników, które mogą być używane przez Monitor systemu do monitorowania aktywności na komputerach z instancją SQL Server, zobacz Użyj obiektów SQL Server.
- Przegląd widoków dynamicznego zarządzania systemem.
- Przestarzałe funkcje aparatu bazy danych w SQL Server 2017
- Przestarzałe funkcje aparatu bazy danych w SQL Server 2016 (identyczne z listą SQL Server 2017)