
Wyjaśnienia dla niewtajemniczonych:
DBA = Database Administrator
COMMIT – polecenie zatwierdzające zapisanie danych/transakcji na dysku. Brak tego polecenia powoduje często odwołanie transakcji
NULL – wartość nieokreślona w SQL
JOIN/SELECT/DROP – pewne polecenia SQL
A teraz przejdźmy do rzeczy. Jeśli dowcipy czyta ktoś spoza branży – uśmieszkami oznaczyłem miejsca, gdzie należy się śmiać:
Q1: Co DBA powiedział do programisty?
A: Nieważne, programista i tak nie słuchał.
Q2: A co programista odpowiedział DBA?
A: Nieważne. I tak odpowiedź brzmiała „NIE”.
🙂
W Nowym Yorku odbywa się konferencja „Wpływ środowiska bazodanowego na społeczeństwo na przełomie XX i XXI wieku. Na konferencję zaproszono różne bazy danych
Najpierw przyjechała limuzyna z Oraclem. Wysiada Oracle i jeszcze 4 osoby.
-Drogi Oracle, kim są Twoi towarzysze?
-Mam tu 4 DBA. Jeden mnie zainstaluje, drugi zaprojektuje tabele, trzeci będzie mną administrował, a ten czwarty wytłumaczy dlaczego jestem taki drogi.
Drugą limuzyną przyjechał DB2 z 40 osobami w towarzystwie:
-Drogi DB2, kim oni są?
-Tych dwóch to DBA, ci dwaj to specjaliści od sprzętu, a tych 36 to konsultanci.
W trzeciej limuzynie przyjechał SQL Server. Przyjechał sam.
-Dlaczego nie przywiozłeś nikogo ze sobą?
-Ach, bo ja jestem od Microsoft. Właściwie każdy mnie łatwo zainstaluje, wszędzie pełno kreatorów, administracja mimi bazami to pestka! A jeśli się wysypię no cóż – radź sobie sam, pogoogluj, albo poszukaj na forum…
20 minut po rozpoczęciu konferencji z piskiem opon, brudnym samochodem podjeżdża MySQL. Koszula niewyprasowana, włosy nieuczesane, MySQL pędzi na konferencję.
-MySQL, dlaczego się spóźniłeś?
-Ach, coś mi się pomieszało, sądziłem że dzisiaj jest 31 luty… Czytaj dalej »
Podczas kolejnego kroku konfiguracyjnego kreatora grupy Always On otrzymałem komunikat o błędzie:
The connection to the primary replica is not active.
Przyczyna była taka, że jeden z serwerów wykorzystywał inne konto usługi na którym działa SQL Server. Nie jest to błąd, jednak w takim przypadku konto suługi innego serwera musi mieć utworzony login do drugiego serwera. Ja chciałem, aby oba serwery wykorzystywały to samo konto, więc po prostu zmieniłem w Configuration Managerze konto na współne. Po restarcie SQL Server i ponownym uruchomienia kreatora grupy Always On problem minął.
W firmowym życiu często spotykamy się z intensywnym wykorzystywaniem skoroszytów Excel. Pracownicy wypełniając ankiety, sporządzając raporty wypełniają własne skoroszyty, które są dalej przesyłane do innych pracowników: managerów, kierowników itp.
Osoba otrzymująca dane w takiej postaci z jednej strony uzyskuje informacje dobrze ułożone, sformatowane, z drugiejstrony, informacje są jednak dość rozbite, ponieważ są rozrzucone między wiele mniejszych plików. Chociaż Excel posiada własne funkcje scalające dane z wielu skoroszytów (konsolidacja arkuszy), to nie ma co liczyć na to, że rozwiążą one w automatyczny sposób kwestię pojawiania się nowych skoroszytów Excel.
Poniżej znajdziesz opis programu, który może pomóc w rozwiązaniu tego problemu. Merge Excel Data (Scalanie danych Excel) to program, który przegląda wskazany katalog w poszukiwaniu plików Excel. Następnie otwiera każdy z tych skoroszytów i przepisuje zawartość wybranych komórek do jednego skoroszytu zbiorczego.

Powyżej zaprezentowane jest okno programu. Oto znaczenie jego opcji:
- Wybierz katalog z plikami źródłowymi – tutaj należy wskazać lokalizację katalogu, wktórym umieszczane są skoroszyty Excel do połączenia w jeden skoroszyt zbiorczy.
- Plik docelowy – tu podaj ścieżkę do pliku skoroszytu zbirczego, który będzie zawierał scalone dane
- Nadpisz jeżeli istnieje – zaznaczenie tej opcji powoduje, że jeżeli w momencie rozpoczęcia pracy programu istnieje plik skoroszytu zbiorczego to zostanie on skasowany i zastąpiony nowym.
Zaznacz tę opcję, jeżeli nowe dane ciągle napływają do katalogu źródłowego, a ciebie interesuje jedynie posiadanie danych zbiorczych, scalonych w oparciu o pliki aktualnie znajdujące się w katalogu źródłowym.
Odznacz tę opcję, jeżeli przetwarzanie odbywa się etapowo, np. scaliłeś dane znajdujace się w katalogu, po czym usunąłeś zawartość katalogu. Za jakiś czas do katalogu wgrywasz nowe pliki, które chciałbyś dołączyć do już istniejącego pliku ze scalonymi w poprzednim kroku danymi
- Otwórz docelowy skoroszyt po zakończeniu – zaznaczenie opcji spowoduje, że po zakończeniu scalania skoroszyt Excel zostanie otwarty i użytkownik może zapoznać się z wynikami scalnia od razu. Czytaj dalej »
Problem: Task z SSIS iterując przez pliki, zapisuje w zmiennej związanej z tą iteracją pełną ścieżkę pliku. Niekiedy potrzebna jest tylko nazwa skrócona. Oto jak otrzymać samą nazwę pliku (bez ścieżki):
1. Umieść w designerze ForEachLoop Container, a w nim Script Task. Zmień nazwy tasków, jeśli chcesz:

2. Ustaw w odpowiedni sposób właściwości kontenera ForEach. U mnie chodziło o iterację po plikach z rozszerzeniem TXT znajdujących sie w katalogu c:\temp. Zauważ, że już na tym etapie wystarczyłoby wskazać, że interesuje cię wyłącznie nawa pliku bez ścieżki dostępu. Wystarczyłoby wtedy wybrać „Retrieve file name” na „Name and extension” lub „Name only”, zakładam jednak, że chcesz zobaczyć i pełną ścieżkę dostępu do pliku i skróconą.
3. Zdefiniuj zmienną, w której będzie przechowywana nazwa pliku, a właściwie pełna ścieżka dostępu do niego. W tym celu przejdź na Variable Mappings i stwórz nową zmienną: Czytaj dalej »
Podczas definiowania replikacji transakcyjnej z updatable subscriptions otrzymałem komunikat o błędzie:
Login failed for user 'x’. The user is not associated with a trusted SQL Server connection.
Przyczyny były następujące:
- Brakowało jednego wspólnego loginu z uprawnieniami do replikowanej przeze mnie bazy danych
- Login ten nie był dodany do listy „Publication Access List”
- Na obu serwerach należało włąćzyć uwierzytelmianie mieszane „Windows and SQL Authentication”
- No i należało zrestartować serwery.
Tym razem szukamy metody na uzyskanie listy wartości rozdzielanej przecinkami. Załóżmy, że interesuje nas lista kolorów. Zacznijmy od prostego zapytania, które zwróci listę unikalnych kolorów:
SELECT DISTINCT P.Color
from Production.Product AS P
WHERE P.Color IS NOT NULL
ORDER BY P.Color ASC
Oto efekt:

Jednak my wolelibyśmy zobaczyć te wartości w jednej zmiennej! Dorzućmy więc FOR XML PATH: Czytaj dalej »
W poście http://www.mobilo24.eu/sql-jak-czesto-uruchamia-sie-automatycznie-checkpoint/ pisałem o tym kiedy uruchamia się CHECKPOINT oraz jak można wpływać na częstość wystąpienia tego zjawiska. Teraz uzupełniam te informacje o nowości z SQL 2012.
Otóż w SQL 2012 CHECKPOINT może występować w kilku wersjach:
- Direct – są to te CHECKPOINTy, które zostały wywołane przez serwer na skutek przekroczenia czasu definiowanego parametrem 'recovery interval’
- Indirect – są to CHECKPOINTY generowane na potrzeby nowej opcji bazy danych dostępnej od wersji 2012. Jest to opcja „Target recovery Time”, która przedefiniowuje wartość „recovery interval” z poziomu serwera.

- Manual – są to CHECKPOINTy wywoływane ręcznie przez użytkownika, a właściwie administratora. Służy do tego polecenie CHECKPOINT. Pisałem o tym na Mobilo tutaj
- Internal – to również CHECKPOINTY uruchamiane automatycznie przez serwer, ale tym razem przyczyną wyzwolenia checkpointa jest pewna systemowa aktywność zachodząca na serwerze np. tworzenie backupu lub snapshota