Pokazywanie postów oznaczonych etykietą ms sql. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą ms sql. Pokaż wszystkie posty

piątek, 25 maja 2018

Setting Different Colors for Connections in SSMS

New  (for me) "killer feature" of SQL Server Managment Studio: Setting different colors for different servers in SSMS. This can reduce some "lunch test script on production" bugs. 

More details here: http://www.sqlservercentral.com/articles/Management+Studio+(SSMS)/101920/

p.s. it's a small thing that make me happy ;-)

piątek, 29 sierpnia 2014

SQL Update dst set xyz, from src

Jest to wzór przykładowego update tabeli w t-sql, w oparciu o wyniki innej tabeli, z innej bazy danych. Często go stosuję,  a ciągle zapominam tej składni, więc... postanowiłem to sobie zachować "na przechowanie".


USE [dstInstancja]
GO

UPDATE dst
   SET [zakup] = src.[zakup]
          ,[oplata] = src.[oplata]
 FROM [dbo].[typ_transakcji] dst join [SRVxy\NazwaSerwera].[srcInstancja].[dbo].[typ_transakcji] src
 on dst.Id = src.Id

GO

sobota, 2 sierpnia 2014

MS SQL - DEADLOCK

Czasami zdarzy nam się, że procesy pracujące na bazie danych mogą się zakleszczyć. Nie wdając się w szczegóły, chodzi o równoczesne blokowanie jednych zasobów, oczekując na zwolnienie pozostałych. Szerzej to zagadnienie zostało opisane jako problem ucztujących filozofów.

A co, gdy taka syt. zdarzy nam sie na bazie danych?
a) dobrze by było się dowiedzieć, dlaczego dochodzi do zakleszczeń (np. sql profiler)
b) pomyśleć nad zmianą poziomu izolacji tranzakcji
c) wyśledzić odpowiedni proces za pomocą sp_who2 a nast. ubić zawieszony process, odblokowując tym samym zasoby dla innych procesów
exec sp_who2
kill SPID
 

środa, 19 lutego 2014

MS SQL - Edycja wierszy w edytorze wg. zapytania SQL

W MS SQL Managment Studio istnieje opcja, aby edytować wiersze w edytorze. Standardowo, jest to opcja na edytowanie pierwszych 200 wierszy (top 200 rows), jednak edytor udostępnia możliwość, aby edytować wiele, dowolnie wybranych wierszy.

Aby tego dokonać, należy, najpierw wybrać standardową opcję "Edit Top 200 Rows", a nast. na uzyskanym zbiorze wynikowym, prawy przycisk myszy, "Pane->SQL", a nast. edytujemy zapytanie SQL tak, aby uzyskać zakres danych, który chcemy później edytować w edytorze.

Link do pytania na stackoverflow.com/

środa, 23 października 2013

SQL DateTime i DateTime2

Całkiem niedawno, tworząc insert do bazy danych wygenerowanej przez EF spotkałem się z błędem odnośnie parsowania dat z 'datetime2' na 'datetime'. Z tego co zrozumiałem, chodziło o brak inicjacji zmiennej (bo jak wiadomo, .NET Datetime ma domyślą wartość roku 0, a T-SQL Datetime zaczyna się od 1753 roku). Zainicjowanie tej zmiennej na "DateTime.Now();" rozwiązało ten problem, za to, krótkie spojrzenie na forum stackoverflow.com wyjaśnia nam dodatkowe niuanse pomiędzy tymi typami, taki jak np. precyzja dokładności "3 1/3 milliseconds" do "100ns".

Link do do zgłoszenia na stackoverflow

niedziela, 14 lipca 2013

Index oraz Index Klastrowany (Clustered Index)

Przygotowując się do głębszego zagłębienia się w temat ASP.NET MVC robię sobie powtórkę z starszego materiału, tj. asp.net oraz bazy danych. A skoro już jesteśmy przy temacie baz danych, to wypadało by wspomnieć m.in. o indeksach oraz ich typach występujących w bazie danych MS SQL.
Indeksy bazodanowe, podobnie jak indeksy w książkach służą do szybszego wyszukiwania interesujących nas informacji, dzięki czemu zdecydowanie zwiększają szybkość wyszukiwania danych z bazy danych, ale nieznacznie zwiększają czas zapisu/modyfikacji/usuwania danych, dlatego nie należy umieszczać ich ponad miarę. Indeks może zawierać maksymalnie 16 kolumn.

W bazie MS SQL występują dwa typy indeksów:
- indeks klastrowany (clustered index)
- indeks zwykły (non-clustered index)

Index klastrowany odpowiada za fizyczną reprezentację danych w bazie danych (fizyczny zapis danych na dysku twardym) oraz może być tylko jeden (dane mogą być poprawnie posortowane w strukturze B-drzewa tylko na jeden sposób). Każda operacja typu insert/update/delete na danych, na których jest założony index klastrowany powoduje fizyczne sortowanie B-drzewa z danymi.

Indeks zwykły (nieklastrowany) jest osobną strukturą danych, składowanych osobnie i posiadającym 'wartość' oraz wskaźnik do fizycznych danych które reprezentuje. Indeks zwykły, jeżeli tylko może wykorzystuje index klastrowany, aby zwiększyć efektywność przeszukiwania. W przypadku operacji insert/update/delete na danych, wartości indeksów zwykłych są aktualizowane. Na tabeli może być wiele indeksów zwykłych.

Przykład współdziałania indeksów dość dobrze wyjaśnia





piątek, 5 lipca 2013

T-SQL select po kilku ostatnich znakach

Często zdarza nam się konieczność pisania zapytania typu 'select' po ciągach znaków, typu varchar. Czasami potrzebujemy wyszukiwać lub wyświetlać wyniki tylko po części wyrazu. Wtedy najczęściej wystarczy funkcja SUBSTRING. A co, jeśli potrzebujemy wyszukać część wyrazu po kilku ost. znakach (np. dane, które posiadamy są różnej długości*)?? Wtedy z pomocą przychodzi nam funkcja RIGHT

SELECT RIGHT(column, 3)


* - przykład 'życiowy'. Dane, które przychodzą z jednego, z zewnętrznych syst. informatycznych, z którym się integrujemy czasami przychodzą w formacie '0000xxx' (np. 0000123), a innym razem jako 'xxx' (np. '123').