Kategoria: Development

Tematy poświęcane developowaniu rozwiązań w MS SQL Server

Development, Przydatne skrypty, SQL Server

Rozrost tempdb – Extended Events + podgląd via TSQL

Skrypt dzięki uprzejmości Igora Yaremenko 🙂 — create event session CREATE EVENT SESSION [Database_Growth_Watchdog] ON SERVER ADD EVENT sqlserver.database_file_size_change ( ACTION ( sqlserver.client_app_name , sqlserver.client_hostname , sqlserver.database_name , sqlserver.session_nt_username , sqlserver.sql_text , sqlserver.username ) WHERE ( [database_id] = ( 2 ))) ADD TARGET package0.event_file ( SET filename = N’D:\Temp\Database_Growth_Wathdog.xel’, max_file_size =Czytaj dalej / Read more

Development, Przydatne skrypty, SQL Server

Konkatenacja napisów w SQL < 2017 - wersja z użyciem XML PATH bez podmiany znaków specjalnych np. & na & amp;

DECLARE @M TABLE ( ParameterName NVARCHAR(20), ParameterValue NVARCHAR(MAX) ); INSERT INTO @M VALUES (’1′, 'Napis1 &<’), (’1′, 'Napis2 &’), (’1′, 'Napis3′), (’2′, 'aaa’), (’2′, 'bbb’), (’3′, 'a’); SELECT * FROM @M SELECT DISTINCT ParameterName, RemappedValues = STUFF( ( SELECT ’;’ + ParameterValue FROM @M AS M2 WHERE M2.ParameterName = M1.ParameterNameCzytaj dalej / Read more

Development, SQL Server

Prosta konkatenacja napisów w wierszach według ustalonej kolejności (2017+)

 STRING_AGG()   to długo wyczekiwana funkcja. Konkurencja miała już ją od dawna. A my musieliśmy kombinować i stawiać protezy (recursive cte, xml, clr, meh..) SQL Server 2017 (i Azure) nam wreszcie ją udostępnia. Warto jednak pamiętać, że domyślnie napisy złączane są według kolejności losowej (takiej, z jaką „wpadną w ręce” silnika),Czytaj dalej / Read more

Development, SQL Server

Znalezienie lockowanego rekordu po RID lub hash value przy użyciu wirtualnej kolumny %%lockres%%

Często gęsto analizujemy jakiegoś locka. Dowiadujemy się jaki jest jego RID lub hash klucza: I zadajemy sobie teraz pytanie… OK, wiem która to baza, wiem który to obiekt. Ale skąd mam wiedzieć o jaki rekord może chodzić??   Z pomocą przychodzi wirtualna nieudokumentowana kolumna %%lockres%%, która zwraca właśnie powyższe wartości 🙂   Przykład:Czytaj dalej / Read more

Administracja, Development, Przydatne skrypty, SQL Server

RESTORE DATABASE FROM database_snapshot

Z dokumentacji technet: https://msdn.microsoft.com/en-us/library/ms175158%28v=sql.105%29.aspx Snapshots can be used for reporting purposes. Also, in the event of a user error on a source database, you can revert the source database to the state it was in when the snapshot was created. Data loss is confined to updates to the database sinceCzytaj dalej / Read more

Administracja, Development, SQL Server

TRUNCATE tylko części danych? Challenge accepted!

UWAGA Artykuł pochodzi z czasów, gdy nie istniało polecenie TRUNCATE TABLE WITH PARTITIONS . Dlatego został on nieco zmodyfikowany, odpowiednie komentarze prostują sytuację ;] Z dokumentacji technet: https://msdn.microsoft.com/pl-pl/library/ms189461%28v=sql.110%29.aspx Partitioning data enables you to manage and access subsets of your data quickly and efficiently while maintaining the integrity of the entire dataCzytaj dalej / Read more

Development, SQL Server

Zaawansowane przesuwanie okien :D (czyli użycie funkcji „okienkowych” OVER i zastosowanie ROWS,RANGE,BETWEEN,UNBOUNDED, CURRENT, PRECEDING, FOLLOWING)

Z dokumentacji technet: https://msdn.microsoft.com/pl-pl/library/ms189461%28v=sql.110%29.aspx ROWS | RANGE Further limits the rows within the partition by specifying start and end points within the partition. This is done by specifying a range of rows with respect to the current row either by logical association or physical association. Physical association is achieved byCzytaj dalej / Read more

Development, SQL Server

Potęga funkcji okna – SELECT LAG(), LEAD(), FIRST_VALUE(), LAST_VALUE()

Z dokumentacji technet: https://msdn.microsoft.com/en-us/library/hh231256.aspx https://msdn.microsoft.com/en-us/library/hh213125.aspx https://msdn.microsoft.com/en-us/library/hh213018.aspx https://msdn.microsoft.com/en-us/library/hh231517.aspx LAG provides access to a row at a given physical offset that comes before the current row. LEAD provides access to a row at a given physical offset that follows the current row. FIRST_VALUE returns the first value in an ordered set ofCzytaj dalej / Read more

Development, SQL Server

Proste usunięcie duplikatów

Dzisiaj prezentacja prostego sposobu na pozbycie się wszystkich rekordów, które nie są takie same ale niestety mają ten sam klucz. Do wykonania takiej operacji posłużymy się oczywiście grupowaniem, ale nie tym klasycznym które wszyscy znamy (GROUP BY), a partycjonowaniem danych przy użyciu funkcji okienkowych (PARTITION BY) Wystarczy ponumerowac rekordy (ROW_NUMBER())Czytaj dalej / Read more