Blog po angielsku

Od dawna za mną chodziło, ale brakowało mi impulsu, żeby wreszcie się tym zająć. Od początku tego roku było coraz bliżej i bliżej, wreszcie po tegorocznym SQLBits się zdecydowałem i uruchomiłem blog po angielsku. Pod zupełnie innym adresem – http://blog.bartekr.net

Na razie treści będą się między sobą różnić. Nie wiem jeszcze, w którą stronę będę chciał iść – czy pisać to samo jednocześnie w dwóch językach (ku temu się skłaniam), czy pisać już tylko po angielsku (trochę by mi było szkoda), czy pisać w różnych językach różne treści (ta opcja najmniej mi się podoba i raczej odpada).

Jak to mówił Yoda: “Do, or do not. There is no try”. Nie będę zatem pisał co będę się starał albo czego będę próbował. Do końca miesiąca pojawi się jeszcze kilka tekstów po angielsku, które zostaną także przetłumaczone na polski. I w najbliższym czasie będzie to szło w tą właśnie stronę – najpierw wersja EN, potem PL. Przy czym tłumaczenie nie zawsze będzie dokładne, bardziej będę chciał przekazać to samo niż dokładnie tak samo.

No. To ten, no. To tyle.

SSIS pod lupą – Lookup NoCache – Start

W poprzednim wpisie widać było, że walidacja prostego Lookupu jest przeprowadzana kilkukrotnie – cztery razy włącznie ze sprawdzaniem z poziomu Visual Studio. A co dokładnie tam się dzieje? Po raz kolejny profiler dostarcza doskonałego materiału do nauki.

lookupnocachevalidationsequence Czytaj dalej

SSIS – ogranicz długość tekstu w XML Source

Żeby wiedzieć jakiego typu dane są w źródle XML kontrolka XML Source w SSIS wymaga podania arkusza schematu XSD. Wewnętrznego (Use inline schema) lub zewnętrznego (XSD Location). Dla ułatwienia ma też przyjazną opcję generowania automatycznie schematu na podstawie wskazanego dokumentu XML – coś jak Suggest types dla połączenia do plików płaskich.

W przypadku elementów tekstowych kontrolka domyślnie zaproponuje DT_WSTR o długości 255 znaków kiedy tylko przełączymy się na zakładkę Columns.

dlugoscikolumntekstowych

Żeby to obejść musimy zmienić plik XSD ze schematem.

Czytaj dalej

GRANT, DENY i kolumny tabeli

Model uprawnień SQL Server stosuje kaskadowe dziedziczenie uprawnień. To znaczy, że uprawnienia nadane na wyższym poziomie automatycznie obowiązują na poziomach niżej. Pełna ścieżka dziedziczenia to:

  1. Instancja
  2. Baza danych
  3. Schemat
  4. Element schematu (tabela, widok, procedura, funkcja)
  5. Kolumna (w przypadku tabel i widoków)

W modelu uprawnień jest dodatkowo przyjęta zasada, że DENY jest ważniejsze niż GRANT. Czyli np. DENY na poziomie schematu powoduje brak dostępu do wszystkich obiektów w schemacie – nawet jeśli do elementu schematu przypisano wprost uprawnienie za pomocą GRANT. Dotyczy to wszystkich obiektów, poza kolumnami.

Czytaj dalej

Konto usługi SQL Server: WMI Provider error

A dokładniej: „WMI Provider error: This parameter is incorrect. [0x80070057]”. Błąd pojawił się w momencie zmiany konta serwisowego dla usługi SQL Server Agent za pomocą narzędzia Sql Server Configuration Manager.

sqlserversqlagentserviceerror

Pierwsza myśl – coś się stało z WMI i może trzeba będzie przebudować repozytorium (np. jak tu: https://blogs.technet.microsoft.com/askperf/2009/04/13/wmi-rebuilding-the-wmi-repository/) . Ale zmiana innego konta zadziałała bez zarzutu.

Problem pojawiał się tylko dla tego jednego konta – bez względu na to czy chciałem ustawić dla usługi konto domenowe, czy wirtualne zawsze pojawiał się ten sam błąd. Szukając więcej na temat błędu trafiłem na stronę WMI Error Constants w MSDN, gdzie napisano że to wcale nie błąd WMI tylko systemowy:

0x8007xxxx
Errors originating in the core operating system. WMI may return this type of error because of an external failure, for example, DCOM security failure.

Zatem przebudowa repozytorium WMI odpada, bo zupełnie nic nie da w tym przypadku. Ten sam numer błędu występuje także przy innych sytuacjach, np kopiach zapasowych, czy np. zdalnym wywołaniu sesji WMI na innym komputerze.

W kilku linkach przy wyszukiwaniu rozwiązania znalazłem sugestię, żeby zmienić ustawienia konta nie za pomocą Sql Server Configuration Managera, tylko standardowo przez konfigurację z poziomu Panel sterowania > Narzędzia administracyjne > Usługi.

I mimo że zawsze podkreśla się, żeby do zmian ustawień usług korzystać tylko z programu Sql Server Configuration Manager – zmiana konta w standardowym oknie konfiguracyjnym usługi zadziałała – mogłem bez problemu ustawić konto domenowe dla usługi.

Okazało się, że konto Local System zostało wcześniej ustawione właśnie przez zwykłą edycję usługi w narzędziach administracyjnych i próba zmiany z poziomu konfiguratora usług SQL Server nie dawała rezultatu.

Wniosek: czym się strułeś, tym się lecz. Jeśli zmieniasz parametry usługi nie tak jak trzeba, to odwróć potem sytuację też nie tak jak trzeba.

FOR XML PATH i atrybut

To jest wpis z rodzaju „dopadło mnie zaćmienie, jak kiedyś będę miał znów problem to zajrzę na bloga, czy nie pisałem na ten temat”.

Przy tworzeniu dokumentu XML za pomocą FOR XML PATH możemy podać nazwę elementu, który ma „opakowywać” każdy zwracany rekord (jeśli nie podamy będzie domyślne <row>). A co jeśli potrzebujemy dodać atrybut do elementu „opakowującego”? Czytaj dalej

Wygeneruj XML z XSD w Visual Studio

Fajną funkcjonalnością Visual Studio Community jest możliwość wygenerowania przykładowego dokumentu XML ze schematu XSD. W tym celu otwieramy plik ze schematem przez standardowe FILE > Open > File lub ikonę Open File na pasku narzędzi (lub naturalnie przez Ctrl+O). Plik otwiera się w trybie projektowania (design) i podpowiada, żeby użyć XML Schema Explorer do obejrzenia schematu. Możemy go uruchomić albo z poziomu podpowiadanego linku, albo przez menu VIEW > XML Schema Explorer (pojawia się w menu tylko jeśli wybrano plik XSD).

GenerateSampleXML

Ponieważ ostatnio na czasie jest temat Jednolitego Pliku Kontrolnego to wygenerujemy plik z tego schematu. Ściągamy przykładowy schemat Magazyn – JK_MAG.xsd i generujemy naciskając na elemencie JPK prawym przyciskiem myszy, po czym wybieramy Generate Sample XML. I mamy błąd.

ErrorSchemaNotResolved

Co zrobić, żeby przykładowy XML dało się wygenerować? Czytaj dalej

Daj Się Poznać 2016 – podsumowanie

Skoro po dłuższej nieobecności na blogu zaczęło się trochę więcej dziać dzięki konkursowi Daj Się Poznać, a dziś – 31 maja – jest ostatni dzień konkursu i wysyp postów podsumowujących to czemu nie napisać kilku słów od siebie? Co się udało, czego się nie udało zrobić i dlaczego. Wpis kompletnie nietechniczny. Trochę po to, żeby było ich więcej niż trzynaście. Zbieżność z liczbą dla niektórych przesądną powiedzmy że przypadkowa. Czytaj dalej

SSIS i BLOB w Azure

Jak załadować plik(i) z serwera do chmury używając SSIS? Niby proste – wystarczy ściągnąć Azure Feature Pack klikając link na stronie z dokumentacją. Do wyboru mamy wtedy Azure Blob Upload Task i wykorzystywane przez niego Azure Storage Connection Manager. Tylko jak to poustawiać? Dokumentacja jest dosyć oszczędna i niewiele wynika np. z wpisu „Specify values for the Storage account name and Account key field” – to znaczy które elementy mam wpisać? Czytaj dalej