Czy usługa Full Text Search jest dostępna dla języka polskiego? Tak. Odpowiednie dll-ki i inne pliki znajdują sie w instalacji Serwera SQL. Niestety nie jest to „czysta” implementacja Microsoft, dlatego trzeba ją ręcznie włączyć. Tutaj znajduje się opis jak. Przepis może trochę kłopotliwy, poprzez grzebanie w rejestrze, ale możliwy do przejścia. Może w następnej wersji będzie trochę lepiej:)
Full Text Search po polsku w SQL 2008
SQL Uprawnienia w tempdb
Z czego właściwie wynika jakie mamy uprawnienia w bazie danych tempdb? Z jednej strony wydawałoby się, że jet to taki obiekt, gdzie każdy powinien móc prawie wszystko, czyli upraniwnienia powinny być duże, a z drugiej strony wszystko musi być uregulowane jakimiś uprawnieniami.
Jeżeli zajrzysz do Security w bazie danych tempdb, to zobaczysz, że rola public, do której powinni należeć wszyscy użytkownicy ma prawo SELECT. Jak więc to się dzieje, że będąc zwykłym użytkownikiem mogę coś utworzyć w tempdb? Czytaj dalej »
Jak zmienić numer portu na którym nasłuchuje SQL Server?
W SQL Server Configuration Manager należy przejść do SQL Sever Network Configuration -> Protocols for <nazwa instancji> i wybrać właściwości protokołu tcp. Jeżeli na pierwszej karcie pole Listen All jest włączone (yes), to oznacza to, że serwer nasłuchuje na wszystkich adresach IP i na karcie „IP Addresses” właściwosci protokołu TCP konfigurujesz w sekcji IPAll.
Tutaj w polu TCP Port możesz wpisać numer portu:
Podglądanie definicji obiektów w SQL
Kiedy pracujesz z bazą danych sql to od czasu do czasu musisz podejrzeć jak został zbudowany pewien obiet, z jakich kolumn składa się widok, jaki jest kod procedury czy też funkcji.
Możesz oczywiście kliknąć prawym przyciskiem myszy na znalezionych obiektach w object explorerze w sql server management studio i wybrać polecenie „view definition” lub „script object to…”, ale prawdę mówiąc ani to wygodne ani uniwersalne.
Sql server 2008 daje specjalną funkcję nazywaną OBJECT_DEFINITION.Jako parametr przyjmuje ona ID Obiektu, który możesz łatwo uzyskać wykorzystując funkcje OBJECT_ID np.
OBJECT_ID(’HumanResources.vEmployee’)
Aby obejrzeć jaką instrukcją został utworzony widok wykonaj następujące polecenie:
SELECT OBJECT_DEFINITION(OBJECT_ID(’HumanResources.vEmployee’)) Czytaj dalej »
Błedy konwersji typów SQL, zaokrąglenia, obięcia, przekroczenia zakresu typu
Programując w SQL zastanawiasz się może czasami jaki typ wybrać dla zmiennych lub kolumn w tabelach. SQL Server sam podejmuje czasami decyzję o potrzebie wykonania pewnych konwersji i jeżeli pozwolisz mu zadzaiłać wg swoich algorytmów, to możesz dojść do błędów, które są trudne do zdebuggowania. Przedstawię tutaj kilka takich przykładów:
Źle:
DECLARE @smallValue smallintSET @smallValue = 20000 + 20000
SELECT @smallValue
… w wyniku zwraca błąd.
Msg 220, Level 16, State 1, Line 3Arithmetic overflow error for data type smallint, value = 40000.
Dlaczego?
Bo użyłeś typu smallint. Jeśli przewidujesz, że w obliczeniach może wyjść mniej niż -32 758 lub więcej niż 32 767 to lepiej użyj typu INT. Tinyint ma zakres od 0-255, int to już ponad 2 miliardy a bigint ponad 9 trylionów.
Jak poprawić ten przykład. Ot zmienić typ (więcej o typach i związanych z nimi przygodami znajdziesz na Mobilo / mobilo24 tutaj)?
DECLARE @smallValue intSET @smallValue = 20000 + 20000
SELECT @smallValue
Źle:
DECLARE @date DATETIMESET @date = '20110915 23:59:59.999′
SELECT @date
w wyniku zwraca 2011-09-16 00:00:00.000.
Dlaczego? Czytaj dalej »
Dlaczego nie działa INSERT!? Dlaczego nie mogę zainicjować zadeklarowanej zmiennej!?
Do tabeli chciałem dzisiaj wstawić kilka rekordów 'za jednym zamachem’. Można to zrobić poprzez polecenie:
INSERT Countries VALUES(’EN’, 'England’,1),
(’PL’, 'Poland’,1),
(’G’,’Germany’,1),
(’CDN’,’Canada’,2),
(’USA’,’USA’,2)
Tymczasem pojawia się błąd:
Msg 102, Level 15, State 1, Line 2 Incorrect syntax near ’,’.Błędu nie widzę, albo jestem ślepy ale przepisanie polecenia na pojedyncze INSERT pomogło.
Idziemy dalej. Deklaruje sobie zmienną i od razu ją inicjuję:
DECLARE @CSV VARCHAR(1000) = ”;Znowu bład:
Msg 139, Level 15, State 1, Line 0 Cannot assign a default value to a local variable. Czytaj dalej »Jak W SQL utworzyć z rekordów listę rodzielaną przecinkami CSV? Wykorzystanie typu tablicowego
Załóżmy, że pracujemy z tabelą zawierającą jakieś symbole, które mają np zostać załadowane do kontrolki typu listbox, tak by użytkownik mógł wybrać jeną z pozycji za pomocą myszki. Często tego rodzaju czynność wiąże się z przekształceniem listy rekordów w jedną zmienną zawierającą wypisane symbole porozdzielane za pomocą przecinka, średnika lub innego znaku w notacji popularnie zwanej CSV (Comma Separated Values).
Niech naszą tabelą będzie:
CREATE TABLE Countries (Symbol VARCHAR(3), Name VARCHAR(30), GroupId INT);Wstawiamy do niej rekordy państw:
INSERT Countries VALUES (’EN’, 'England’,1), (’PL’, 'Poland’,1), (’G’,’Germany’,1), (’CDN’,’Canada’,2), (’USA’,’USA’,2)Opisane zadanie możesz zrealizować następującym zapytaniem: Czytaj dalej »






























