Wyciągnięcie wartości parametrów zapisanych w planach zapytań

Bardzo często gdy przeprowadzamy proces optymalizacji zapytań przeglądamy wygenerowane plany zapytań. Na tej podstawie można dokonać pewnych optymalizacji, ale czy zawsze ? Często mamy doczynienia z procedurami składowanymi czy też sparametryzowanymi zapytaniami ad-hoc. Przeglądając zapytania dochodzimy do wniosku, że tak do końca nie jesteśmy wstanie stwierdzić jak powinien być wygenerowany plan zapytań, rodzi się pytanie czy taki plan jest dobry. Skąd te wątpliwości ? Często w predykatach czy w wywoływanych procedurach mamy użyte zmienne (parametry). Jeśli w klauzuli WHERE używamy np. predykatu Dowiedz się więcej…

Tworzymy login z podanym SID-em – dodatek

W poprzednim artykule „Blog” opisałem cały proces sprawdzania tzw. SID-u i podałem skrypty umożliwiające założenie loginy z wybranym SID-em. Ale czasem w trakcie przenoszenia/migracji na inne instancje trzeba utworzyć login wraz z hasłem, którego nie znamy. Określenie hasła jako wartości zaszyfrowanej jest przydatne do tworzenia skryptów logowania z jednego serwera do wdrożenia na innym serwerze, gdy trzeba upewnić się, że hasła dla każdego logowania są dokładnie takie same na nowym serwerze. Hasło jest określone jako wartość binarna – ta wartość jest „haszowaną” Dowiedz się więcej…

SQL Server 2022 – Funkcja DATE_BUCKET()

Jest to nowa funkcja w SQL Server 2022. Funkcja DATE_BUCKET zwraca wartość typu data/godzina odpowiadającą początkowi każdego segmentu typu data/godzina na podstawie sygnatury czasowej zdefiniowanej przez parametr origin lub jeśli nie podano pochodzenia, jako data pochodzenia zostanie użyta domyślna wartość 1900-01-01 00:00:00.000 Składnia: Datapart Część daty musi być jedną z poniższych typów z listy. Ten parametr kontroluje rozmiar 1 segmentu. Chcesz otrzymać zestawienie faktur za tydzień, miesiąc czy minutę? datepart będzie kontrolować domyślny rozmiar segmentu. Część daty skrót day dd,d week wk,ww Dowiedz się więcej…

SQL Server 2022 – Funkcja GENERATE_SERIES()

W SQL Server 2022 dostarczono nową funkcję, a GENERATE_SERIES() , która była przez wielu długo oczekiwana. Ta funkcja pozwoli wygenerować serię liczb w zadanym przedziale. Zakres i skok między wartościami szeregów są definiowane przez użytkownika. GENERATE_SERIES wymaga poziomu zgodności co najmniej 160. Gdy poziom zgodności jest mniejszy niż 160, SQL Server nie może znaleźć funkcji GENERATE_SERIES. Poniżej podano zapytanie o zmianę poziomu zgodności bazy danych Składnia: Argumenty: start Pierwsza wartość w przedziale. start jest określony jako zmienna, literał lub wyrażenie skalarne typu Dowiedz się więcej…

Extended Events – różne jednostki czasów w ramach event_name

Wyciągając różne informacje z Extended Events a zwłaszcza event_name dotyczące czasów można zaobserwować, że wartości zwracane są w różnych jednostkach czasu (milisekundy, mikrosekundy). Poniżej przedstawiam zestawienie takich zdarzeń package_name event_name DurationUnit sqlos wait_info milliseconds sqlos wait_completed milliseconds sqlos wait_info_external milliseconds sqlserver sql_statement_completed microseconds sqlserver sp_statement_completed microseconds sqlserver rpc_completed microseconds sqlserver module_end microseconds sqlserver sql_batch_completed microseconds sqlserver logout microseconds sqlserver attention microseconds sqlserver existing_connection microseconds sqlserver sql_statement_post_compile milliseconds sqlserver lock_acquired microseconds sqlserver lock_deadlock microseconds sqlserver query_post_compilation_showplan microseconds sqlserver query_post_execution_showplan microseconds sqlserver query_plan_profile microseconds Dowiedz się więcej…