Chciałbym wiedzieć, czy SQL Server 2008 R2 ma domyślny schemat rejestrowania SELECT
instrukcji (lub inny T-SQL w tym zakresie).
Jeśli tak, gdzie mogę to zobaczyć? Jeśli nie, jak mogę to skonfigurować?
źródło
Chciałbym wiedzieć, czy SQL Server 2008 R2 ma domyślny schemat rejestrowania SELECT
instrukcji (lub inny T-SQL w tym zakresie).
Jeśli tak, gdzie mogę to zobaczyć? Jeśli nie, jak mogę to skonfigurować?
Domyślnie aktywność programu SQL Server nie jest rejestrowana w oczekiwany sposób. Niektóre operacje zapisu są rejestrowane w Dzienniku transakcji , ale zależy to również od konfiguracji baz danych.
Istnieją cztery główne opcje śledzenia aktywności SELECT na serwerze:
Za pomocą programu SQL Server Profiler można połączyć się z serwerem i obserwować określoną aktywność.
Można utworzyć śladu po stronie serwera , aby rejestrować aktywność do pliku śledzenia na serwerze, które następnie mogą być odczytywane przez SQL Server Profiler, lub za pomocą fn_trace_gettable załadować go do tabeli w celu dalszej analizy.
Można użyć rozszerzonych zdarzeń , które oferują więcej funkcji niż śledzenie po stronie serwera i które firma Microsoft zaleca zamiast śledzenia po stronie serwera począwszy od SQL Server 2012.
Możesz użyć trybu audytu C2 .
Za pomocą programu SQL Server Profiler można skonfigurować śledzenie (wybrać określone zdarzenia, filtry itp.), A następnie wykonać skrypt za pomocą menu Plik i wykonać na serwerze, aby utworzyć śledzenie po stronie serwera, zgodnie z opisem tutaj .
Istnieje kilka rozwiązań i technik SQL Server do śledzenia instrukcji SELECT
Specjalnie opracowane procedury składowane i funkcje - Uwaga: ta metoda wymaga zaawansowanej wiedzy na temat programowania T-SQL oraz dodatkowego utrzymania procedur składowanych i funkcji (np. W przypadku zmiany schematu bazy danych). Możesz zobaczyć więcej w tym artykule: http://alstechtips.blogspot.com/2011/02/auditing-select-statements-in-sql.html
Technologia śledzenia SQL Server - możesz przeczytać instrukcję krok po kroku w tym artykule: http://solutioncenter.apexsql.com/auditing-select-statements-on-sql-server/
Korzystanie z funkcji SQL Server Audit - Funkcja Audit (wprowadzona w SQL Server 2008) może śledzić zdarzenia serwera i bazy danych oraz korzysta z technologii Extended Events. Ale inspekcja na poziomie bazy danych jest obsługiwana tylko przez wersje SQL Server Developer i Enterprise.
Korzystanie z narzędzi innych firm, takich jak ApexSQL Audit lub Idera SQL Compliance Manager
Domyślnie nie rejestruje instrukcji SELECT. Możesz zapoznać się z moją odpowiedzią tutaj, aby uzyskać więcej informacji na temat kontroli instrukcji SELECT.
Ponadto domyślnie nie rejestruje nawet instrukcji T-SQL, zamiast tego rejestruje WYDARZENIA, takie jak Zmiana pamięci serwera, Niepowodzenie logowania do audytu, Zdarzenie dodawania audytu itp. Można znaleźć tutaj więcej informacji wraz ze skryptami T-SQL, aby wyodrębnić informacje z Domyślny ślad.
Dopóki nie obchodzi Cię, kto uruchomił zapytania, istnieje kilka sposobów wyświetlania metryk dotyczących zapytań uruchamianych w systemie. Jest to ograniczone do danych od ostatniego restartu i potencjalnie przez presję pamięci podręcznej (lub innej pamięci) w zależności od tego, o ile głębiej rozszerzysz zapytanie.
;WITH x AS
(
SELECT
[text] = SUBSTRING(t.[text],
(s.statement_start_offset/2)+1,
COALESCE(NULLIF(s.statement_end_offset,-1),DATALENGTH(t.[text])*2)
-(s.statement_start_offset/2)),
s.execution_count, s.last_execution_time,
s.max_logical_reads, s.max_elapsed_time
FROM sys.dm_exec_query_stats AS s
CROSS APPLY sys.dm_exec_sql_text(s.sql_handle) AS t
)
SELECT * FROM x
WHERE LTRIM([text]) LIKE 'SELECT%';
Być może zechcesz rozszerzyć wzorzec - na przykład zignoruje to zapytania zaczynające się od ;WITH
ironicznie i może przechwytywać, SELECT INTO
a nawet przypisywać zmienne, które nie odwołują się do rzeczywistych tabel.
Jednak jeśli potrzebujesz bardziej szczegółowych informacji, odpowiedź Nathana jest dobrym początkiem (z wyjątkiem sytuacji, gdy zamierzasz użyć śledzenia, NIE używaj Profilera). Pamiętaj tylko, że rejestrowanie każdego zapytania w systemie nie będzie darmowe.