SSIS: Import plików excel z katalogu – krok po kroku z obrazkami

2014-06-01

 

 

 

 

Dość często dane trafiają do nas w postaci pliku excel i należy je zaimportować do bazy danych. Jeżeli zdarzać się to będzie często, można pokusić się o stworzenie odpowiedniego mechanizmu w postaci pakietu SSIS. Załóżmy, że wszystkie nowe pliki trafiają do jednego wybranego folderu, a my będziemy wczytywać ich zawartość do jednej tabeli w bazie danych na SQL Server.

Zaczynamy od położenia na formularzu kontenera foreach loop

ssis_excel01

 

W właściwościach kontrolki wskaż folder i rozszerzenie plików podlegających importowi:

ssis_excel02

Ponieważ kolejne kroki muszą znać nazwę pliku, który ma być importowany, musimy gdzieś zapamiętać jego nazwę. Czytaj dalej »

By Rafał Kraik in SSIS

Get-WinEvent zwraca puste messages

2014-05-12

Na komputerze z polskim windows, jest uruchamiana komenda

Get-WinEvent -LogName System -ComputerName Comp001 -Credential $cred   | where {$_.Id -eq 9052}

Niestety w zwracanym wyniku właściwość Message jest pusta! To samo polecenie uruchomione lokalnie na tym komputerze działa poprawnie. Okazało się że jest to bug obecny w Powershell 3.0 i 4.0 (http://connectppe.microsoft.com/PowerShell/feedback/details/716533/get-winevent-does-not-return-the-content-of-the-event-message-in-v3-ctp2) Czytaj dalej »

By Rafał Kraik in Power Shell

DBCC nie może utworzyć SNAPSHOTA

2014-05-12

Był sobie job, który miał wykonać DBCC dla wszystkich baz znajdujących się na serwerze. Job kończył się komunikatem:

The database could not be exclusively locked to perform the operation. [SQLSTATE 42000] (Error 5030)  Check statement aborted. The database could not be checked as a database snapshot could not be created and the database or table could not be locked. See Books Online for details of when this behavior is expected and what workarounds exist. Also see previous errors for more details. [SQLSTATE 42000] (Error 7926).  The step failed.

Co się stało? Kiedy uruchamiasz DBCC, SQL w pierwszej kolejności próbuje utworzyć snapshot sprawdzanej bazy danych i tworzy go w katalogu, w którym znajduje się baza danych. W moim przypadku z pewnego powodu (o tym dalej) snapshot nie mógł być utworzony. W takim przypadku DBCC przechodzi w inny tryb pracy. Po kolei próbuje zakładać lock na każdy z obiektów w bazie danych i go sprawdza. Powoduje to duży rozrost tempdb i na dodatek może się nie udać jeżeli na bazie pracują inni użytkownicy. Tymczasem metoda ze snapshotem jest zaprojektowana pod kątem umożliwienia sprawdzenia bazy przy jednoczesnej pracy wielu użytkowników. Czytaj dalej »

By Rafał Kraik in SQL

Nie można shrinkować bazy

2014-05-02

Baza tempdb ma 2 pliki. Kiedyś były potrzebne ale teraz juz nie są. Niestety podczas shrinkowania pliku nr 2 dostajemy komunikat, że nie moża shrinkować tego pliku, bo aktualnie jest wykonywana inna operacja shrinkowania na tym pliku.

File ID 2 of database ID 2 cannot be shrunk as it is either being shrunk by another process or is empty.

Sprawdzam za pomocą

http://www.mobilo24.eu/kiedy-sie-skonczy-shink/

ale nie ma żadnych operacji shrinkowania. SQL zwariował!

Pomogło dopiero  (!!!) zwiększenie pliku o 10 MB, a dopiero potem uruchomienie shrinka. Jeśli shrink nadal sie nie wykonuje pamiętaj o:

http://www.mobilo24.eu/dbcc-shrinkfile-page-1123456-could-not-be-moved-because-it-is-a-work-file-page/

By Rafał Kraik in SQL

Nie można… odinstalować SQL Server 2005

2014-05-02

Dziwne, problemy z instalacją się zdarzają, ale z odinstalowaniem???

1. Zajrzyj do logów C:\program Files\ Microsoft SQL Server\90\Setup Bootstrap

W moim przypadku znalazłem tam zapis o braku plików instalacyjnych. Można spróbować je podłożyć do tej lokalizacji, żeby ruszyć dalej.

2. Zajrzyj do http://support.microsoft.com/kb/909967/pl Jest to instrukcja MS odinstalowaywania ręcznego. U mnie też nie zadziałała

3. Krok „Desperacja”

– zatrzymaj SQL, zmień tryb startu usług na Disabled

– zanotuj z services.msc nazwy usług związanych z instancją. Dla każdej z nich wykonaj usuwanie serwisu np:

sc.exe delete MSSQLSERVER

sc.exe delete SQLSERVERAGENT

sc.exe delete MSFTESQL

-zajrzyj do rejestru: Local Machine > Software > Miscrosoft > Microsoft SQL Server > Instance names

poszukaj klucza o nazwie instancji, jaką usuwasz (potem usuń wpis o tej instancji). Zanotuj jej wartość. Zmień nazwę klucza rejestru o tej nazwie (np MSSQL.1)  np HKLM\Software\Microsoft\MicrosoftSQLServer\MSSQL.1

Usuń zbędne pliki

Usuń wpis z rejestru odpowiadający za zainstalowany program.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft SQL Server 2005]

Gotowe. Windows już nie będzie próbował uruchamiać tej instancji.

By Rafał Kraik in SQL

Zmiana właściciela bazy danych

2014-05-02

Jeżeli właściciel bazy danych jest niepoprawny, to wiele narzędzi SQL nie będzie z taką bazą danych pracować np:

  • budowanie diagramów bazy danych
  • wyświetlanie properties dla bazy danych

W takim przypadku użyj komendy:

EXEC [Twoja_Baza].dbo.sp_changedbowner@loginame =N’poprawny_login’, @map = false

Powinno to rozwiązać błąd:

Cannot show requested dialog. Property Owner is not available for database … This property may not exist for object or may not be retrievable due to unsufficient access rights.

By Rafał Kraik in SQL

Powershell: Tworzenie własnego obiektu

2014-04-29

Programiści przyzwyczajeni są do tego, że mogą stworzyć obiekt o dowolnych właściwościach. Oto jak to zrobić w powershell:

$o = New-Object PSObject

ta linia tworzy obiekt $o, który nie ma jeszcze żadnych specyficznych właściwości

$o  | Add-Member 'Name' ''

powoduje dodanie do obiektu $o właściwości Name o wartości ”

Aby skorzystać z obiektu:

$o.Name = 'Rafal'
$o

i gotowe!

A tu to samo, ale w nieco inny sposób:

$hash = @{ Name = '';Date = Get-Date; Value = '' }
$o = new-object PSObject -Property $hash 
$o

Najpierw tworzymy tabelę hashującą z określonymi nazwami i wartościami domyślnymi, a potemtworzymy obiekt wskazując, że właściwości znajdują się w tej tabeli!!!

By Rafał Kraik in Power Shell