Przyjrzymy się funkcji rankującej ROW_NUMBER. Ta funkcja „nadaje” rekordom numery kolejne, które są nadawane wg określonej kolejności. Zobaczmy następujące zapytanie: SELECT ProductID ,ProductNumber ,Color ,ListPrice FROM SalesLT.Product ORDER BY Color, ListPrice, ProductID W wyniku otrzymujemy uporządkowaną listę produktów. Dzięki temu, że sortując określiłeś klucz sortowania z dokładnością do ProductID, każdy rekord ma tu swoje jednoznacznie […]
Archiwum za miesiąc 2011-05
Funkcja rankująca ROW_NUMBER – stronicowanie danych
Problemy z optmalizacją procedur składowanych w SQL (Opcja WITH RECOMPILE)
Każde zapytanie realizowane przez SQL serwer podlega procesowi optymalizacji. Serwer ‘wymyśla sobie’ kilka sposobów z pomocą, których może dostać się do właściwych rekordów i zwrócić je klientom. Optymalizowane są zapytania, praktycznie za każdym razem, kiedy są uruchamiane, no chyba, że uda się je sparametryzować. Podobnie optymalizowane są procedury. Z tym, że tu można natknąć się […]
Jak wykonać kopię na SQL Express, bo nie ma SQL Server Agenta?
Mail od klienta: Pojawił się inny problem. Wersja mojego sql servera 2008 to wersja Express i nie mogę uruchomić sql server agenta :). Jak zrobić cykliczny backup na wersji Express. Chciałbym uzyskać taki efekt aby full backup wykonywał się w każdy wtorek.
SQL – problem z uprawnieniami
Mail od klienta: Dostałem bazę danych i muszę przygotować raporty. Tylko problem mam już na wstępie gdyż nie mogę się do tej bazy dostać. Jestem dodany jako administrator lokalny serwera. Komunikat o błedzie: The server principal '…’ is not able to access the database '…’ under the current security context (Microsoft SQL Server, Error:916)
Typy daty i czasu w SQL Server 2008
Serwer SQL w wersji 2008 oferuje tyle typów związanych z czasem! Date, Time, stary, poczciwy DateTime, DateTime2, DateTimeOffset i wreszcie SmallDateTime. Uff dużo tego. Zacznijmy od zobaczenia tych typów w akcji: SELECT CAST(SYSDATETIME() AS DATE) SELECT CAST(SYSDATETIME() AS TIME) SELECT CAST(SYSDATETIME() AS DATETIME) SELECT CAST(SYSDATETIME() AS DATETIME2) SELECT CAST(SYSDATETIME() AS DATETIMEOFFSET) SELECT CAST(SYSDATETIME() AS SMALLDATETIME)
Dlaczego nie używać typu float i real?
SQL oferuje użytkownikom typy danych real i float. Oferują one bardzo dużą dokładność oraz możliwość zapisania w bazie danych bardzo dużych liczb. Zgodnie z informacją z Books Online: Data type Range Storage float – 1.79E+308 to -2.23E-308, 0 and 2.23E-308 to 1.79E+308 Depends on the value of n real – 3.40E + 38 to -1.18E […]
Porównanie typów INT
Konstruując tabele, wprowadzając do nich jakieś wartości liczbowe często bezmyślnie wybieram typ INT. Dlaczego? Bo mało z tym typem problemów. Z jednej strony SQL serwer dobrze sobie z tym typem radzi, buduje wydajne indeksy, nie zajmuje zbyt wiele miejsca w pamięci, a z drugiej strony jeszcze mi się nie zdarzyło, żeby liczba wpisywana w dane […]