View Łukasz Herman's LinkedIn profileView my profile

statystyki www stat.pl

Bazy danych

niedziela, 28 listopada 2010

Mając już wszystkie providery OleDB czas na sterowniki ODBC ;) Całą noc nad tym problemem siedziałem to wolę to tutaj utrwalić.

Kod wygląda bardzo niepozornie:

public string getODBC()
{
string ret = "";
string registryPath = @"SOFTWARE\ODBC\ODBCINST.INI";
RegistryKey hklm = Registry.LocalMachine;
hklm = hklm.OpenSubKey(registryPath);
string[] values = hklm.GetSubKeyNames();
foreach (var value in values)
{
ret += value;
}
return ret;
}

Ale w praktyce wyciąga z rejestru dużo więcej niż ja mogłem zobaczyć odpalając regedita.

W moim przypadku kod ten zwraca listę 27 elementów. Ja w rejestrze widzę nie więcej jak 5, więc różnica jest.

Dalej metodą prób, błędów i googla testowałem różne konfiguracje na hostingu. Aż do skutku. Oj bolało, możliwości jest masa!

W tej chwili mój connection string to wyciągania danych z bazy DBF (VisualFoxPro) bez posiadania sterownika VFP jest już kompletny, chociaż w pewnym stopniu hardkodowany. Później go poprawię jak należy, ważne że działa :)

A wygląda on tak:

Driver={Driver do Microsoft dBase (*.dbf)};DriverID=277;Dbq=" + @"dluga_sciezka_do_katalogu\DataManager\";

Ważne jest to, że parametr 'DBQ' wskazuje na KATALOG a nie na plik!

Tagi: DBF ODBC
07:57, hermanluk , Bazy danych
Link Dodaj komentarz »
czwartek, 25 listopada 2010

Potrzebowałem wyciągnąć z SQLa wszystkie znaki do jakich mam dostęp przez funkcję CHAR.

Wyszło coś takiego:

declare @counter int
set @counter = 0
while @counter <255
begin
set @counter = @counter + 1
print cast(@counter as char) + ' ' + cast(CHAR(@counter) as char)
end

Tagi: Sql
01:51, hermanluk , Bazy danych
Link Dodaj komentarz »
wtorek, 23 listopada 2010

Taki komunikat otrzymuję tworząc paczkę SSIS. Rozwiązanie robocze to zmiana we właściwościach OLEDB Source:

1. AlwaysUseDefaultCodePage=true

2. Zmiany DefaultCodePage na 1252

Po tym wystąpił kolejny błąd (jakby mnie to zdziwiło...)

SQL Server Destination] Error: Unable to prepare the SSIS bulk insert for data insertion.
[SSIS.Pipeline] Error: component "SQL Server Destination" failed the pre-execute phase and returned error code 0xC0202071.

Tutaj jest już jasne rozwiązanie z MS Knowledge Base: You may get "Unable to prepare the SSIS bulk insert for data insertion" error on UAC enabled systems

Ok. Nie jest źle. SSIS działa. Importuje nawet dane. Tylko muszę powalczyć z kodowaniem znaków bo mam krzaki w bazie.

Jak robiłem Selecta bezpośrednio z Visual FoxPro, to musiałem jeszcze przekonwertować dane za pomocą:

SELECT CPCONVERT(620, 1250,kolumna) FROM KOLUMNA.DBF

Dziwne jest to, że ze źródła wychodzą dobre kodowanie, a podczas zapisywania do bazy docelowej kodowanie się rozjeżdża.

Po wielu kombinacjach (w zasadzie to chyba wszystkie przetestowałem), doszedłem do tego że kodowanie wszędzie ma być ustawione na 1250. Z pliku DBF dane wyciągam korzystając z kodu SQL i robię od razu konwersję za pomocą CPConvert (patrz wyżej).

Następnie dane wędrują do bazy MSSQL, ale nie jako standardowe połączenie z MSSQLem, ale korzystając z OleDB. Tylko w ten sposób kodowanie pozostaje prawidłowe.

Bardzo fajny opis jak dobrać się do danych zapisanych w formacie XML z poziomu SQLa:

Generating Relational data from xml datatype Part 1

Generating Relational data from xml datatype Part 2

Tagi: Sql xml
01:28, hermanluk , Bazy danych
Link Dodaj komentarz »
niedziela, 21 listopada 2010

Tworzę paczkę SSIS (SQL Server Integration Services) żeby wgrać pliki z bazy Visual FoxPro (.DBF) do MSSQL. Niestety nic nie działa tak jak powinno 'by default'.

Pierwsze co, to w wizardzie nie ma możliwości wyboru odpowiedniego Providera do odczytu plików DBF.

Stworzyłem więc paczkę od zera.

1. Utworzenie nowego Data Flow

2. Dodanie OLEDB Source i stworzenie połączenia do pliku DBF

2. Dodanie SQL Server Destination i wskazanie bazy docelowej (MSSQL)

3. Połączyłem je razem, ustawiłem mapowanie kolumn.

Pierwszy błąd jak w tytule. Kliknąłem więc prawym klawiszem myszki na OLEDB Source i wybrałem Show Advanced Editor -> Input and Output Properties -> Source Output -> Output Columns, wybrałem kolumnę która zgłasza błąd i zmieniłem jej DataType na four-byte signed integer (DT_I4).

Przeszło :)

Teraz zgłasza mi błąd "cannot be processed because more than one code page (1250 and 1252) are specified for it."...

Tagi: DBF Sql SSIS
14:27, hermanluk , Bazy danych
Link Dodaj komentarz »

Zapamiętać: Server project zawsze modyfikuje bazę Master.

Już myślałem, że z moim Visual Studio jest coś nie tak, bo usilnie zmieniał mi bazę na Master, zamiast korzystać z tej ustawionej przeze mnie. Po prostu za szybko przeczytałem opis czym te dwa projekty się różnią.

wtorek, 20 czerwca 2006

IBM wypuścił właśnie na świat swoje najnowsze bazodanowe dziecko - DB2 już w wersji 9 - o nazwie kodowej Viper.

Dostępna ona jest w kliku wersjach, dla:

  • klientów korporacyjnych (DB2 Enterprise, DB2 Workgroup),
  • małych i średnich przedsiębiorstw (DB2 Express)
  • dla twórców oprogramowania (DB2 Express-C), która jest wersją darmową.

Z bazą DB2 Express-C można się łatwo zapoznać pobierając darmową edycję DB2 Express-C

Na pierwszy rzut oka baza bardzo ciekawa. Szczególną uwagę warto poświęcić obsłudze XML, która jest wbudowana w tą bazę. Jeżeli ktoś jest chętny do rozpoczęcia pracy z DB2 Viper, to jest na to bardzo fajny artykuł - Get off to a fast start with DB2 Viper.

poniedziałek, 24 kwietnia 2006

SQL Server 2005 Books Online (April 2006) są już dostępne do pobrania z serwerów microsoftu.

BOL jest to podstawowa dokumentacja dla SQL Servera 2005. Kwietniowa aktualizacja zawiera materiały i poprawki do problemów w dokumentacji zgłaszanych przez użytkowników po premierze SQL Server 2005, która miała miejsce w listopadzie ubiegłego roku.

Począwszy od kwietniowej aktualizacji, SQL Server 2005 Books Online obejmują uaktualnienia produktów zawartych w SP1 dla SQL Servera, którego premiera miała miejsce kilka dni temu.

SQL Server 2005 Books Online (April 2006)

środa, 19 kwietnia 2006

Można już pobrać Service Pack 1 dla Microsoft SQL Server 2005. Został on udostępniony w dwóch wersjach:

  1. Pierwsza przeznaczona dla edycji Enterprise, Enterprise Evaluation, Developer, Standard i Workgroup.
    SQL Server 2005 Service Pack 1
  2. Druga dla wersji Express Edition. W tej wersji nie musimy pobierać całego kolosa (ponad 250 MB), wystarczy mniejszy plik, który nam wystarczy.
    Microsoft SQL Server 2005 Express Edition Service Pack 1

SQL Server Express with Advanced Services i the SQL Server Express Toolkit są to dodatkowe narzędzia, jakie zostały udostępnione przy okazji publikacji SP1. Dzięki tym dodatkom dla wersji Express, dostaniemy do rąk między innymi SQL Server Management Studio Express, narzędzie które zastąpi nam Enterprise Manager'a dostępnego w SQL Server 2000.

Jest tego więcej, a dowiedzieć się o tych dodatkach, oraz pobrać je możemy pod adresem http://msdn.microsoft.com/vstudio/express/sql/download/

Osoby które wcześniej próbowały instalować SSMSE, a miały wcześniej zainstalowany BOL, mogły napotkać problem, uniemożliwiający instalację. W wersji końcowej zostało to już naprawione. Chociaż tak naprawdę zostało to naprawione już wcześniej i udostępnione publicznie, lecz bez zmiany numery builda, co mogło niektórych wprowadzić w błąd podczas poszukiwania rozwiązania, widząc że się ma najnowszą wersję, a nie działa. Nawet sam plik miał ten sam rozmiar. Najważniejsze że już wszystko powinno działać tak jak należy.