Błąd podczas konfiguracji Always ON: The connection to the primary replica is not active.

2012-10-11

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ął.

By Rafał Kraik in Błedy, SQL, SQL 2012

Scalanie skoroszytów Excel – program ułatwiający łączący dane w jeden skoroszyt zbiorczy

2012-10-05

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 »

SSIS: Pętla ForEach po plikach z wyodrębnieniem skróconej nazwy pliku (bez ścieżki) – krok po kroku z obrazkami

2012-10-01

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 »

By Rafał Kraik in SSIS

SQL: Błąd: Login failed for user 'x’. The user is not associated with a trusted SQL Server connection.

2012-09-29

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.
By Rafał Kraik in Błedy, SQL

Select budujący listę wartości rozdzielaną przecinkami

2012-09-28

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 »

By Rafał Kraik in SQL

Rodzaje CHECKPOINT w SQL 2012

2012-09-26

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

 

By Rafał Kraik in SQL, SQL 2012

C# DataTable wczytany z bazy daych z tabeli ze zdefiniowanym PrimaryKey nie ma PrimaryKey!

2012-09-18

W bazie danych była sobie tabela ze zdefiniowanym PrimaryKey. Program pobierał sobie te dane do DataSet, ale okazało się, że przy odwoływaniu się do właściwości PrimaryKey powstałego DataTable, Data Table nie posiada Primary Key.

Podczas odczytywania danych do DataTable są kopiowane albo informacje o strukturze albo rekordy. poratowało mnie dopisanie takiej oto linijki:

string sqltext = „SELECT * FROM Production.Product”;
SqlConnection sqlconnection = new SqlConnection(WandaConnectionString);
SqlCommand sqlcommand= new SqlCommand(sqltext, sqlconnection);
SqlDataAdapter sqladapter = new SqlDataAdapter(sqlcommand);
sqladapter.MissingSchemaAction = MissingSchemaAction.AddWithKey; 
DataSet ds = new DataSet();
sqladapter.Fill(ds, „Product”);

Rozwiązanie znalazłem tutaj:

http://forums.codeguru.com/showthread.php?294417-DataTable-doesn-t-contain-primary-key-information