Aplikacja .NET C# korzystająca z danych w MS SQL Server cz.1

2013-08-21

W tym artykule pokażę, jak można z aplikacji w c# sięgać do bazy danych SQL. Artykuł jest częścią serii artykułów na ten temat prezentujących różne sposoby.

PRACA Z STRONGLY TYPED DATASET

Najpierw utwórz DataSet. Zakładam, że masz już serwer SQL i że na serwerze zdefiniowałeś odpowiednie tabele, może już nawet częściowo wypełniłeś je danymi.

Będąc w Visual Studio dodaj do swojego projektu DataSet:

strongly-data-set Czytaj dalej »

Wykres przestawny w kilku oddzielonych blokach (przerwy na wykresie przestawnym)

2013-07-16

Tym razem na tapecie znowu Excel, a w nim wykres przestawny. Z tym, że chcemy, aby wykres przestawny (liniowy) składał się z kilku krzywych, a między nimi, aby pojawiły się przerwy. Coś w tym stylu:

klik0 Czytaj dalej »

By Rafał Kraik in Helpdesk

Wyłączone constrains

2013-07-09

Wszyscy chcemy żeby nasze bazy danych działały idealnie i aby nic ich nie spowalniało. Jeśli mowa byłaby o samochodzie, to teraz opowiedziałbym o sprawdzaniu oleju, ciśnienia w kołach  itp. Mowa jedanak o bazie danych. Oto co możesz zrobić, aby twojej bazie było lżej.

Jak pisałem w tym artykule możesz chwilowo (np. przed wykonaniem importu) wyłączyć constrainy. Dzięki temu import może wykonać się szybciej. Pamiętaj jednak, aby wyłączony constrain włączyć i to najlepiej z opcją WITH CHECK!

Opcja with check powoduje, że wszystkie dane znajdujące się w tabeli zostaną przed włączeniem check sprawdzone, czy aby na pewno nie naruszają zasad określonych przez check. Owszem – ryzykujesz. Jeżeli takie niepoprawne dane się znajdą, to otrzymasz komunikat o błędzie i nie uda się włączyć check-a. Musisz w takim przypadku usunąć rekordy naruszające zasady lub ręcznie je poprawić. Czytaj dalej »

By Rafał Kraik in SQL

BCP import wybranych kolumn ze zmianą kolejności

2013-06-18

Zadanie:

Wykorzystując plik formatu należy zaimportować tylko niektóre kolumny i to jeszcze na dodatek zmieniając ich kolumny.

Załóżmy, że masz plik tekstowy opisany takim oto plikiem formatu:

Plik format.fmt przed zmianami

Niestety tabela w bazie danych ma tylko dwie kolumny. Twoim zadaniem jest zaimportować GroupName do kolumny pierwszej w tabeli, a Name do drugiej kolumny:

tabela_2_kol

W takim przypadku musisz zmienić plik formatu. Pod adresem http://msdn.microsoft.com/en-us/library/ms179250.aspx znalazłem ładny opis jak:

Składnia pliku formatu Czytaj dalej »

By Rafał Kraik in SQL

Pobieranie danych z pliku tekstowego

2013-06-18

Kilka przykładów importowania danych do SQL Server z plików tekstowych. W poniższych przykłądach wykorzystuję plik format file. Tutaj znajdziesz informację, jak go utworzyć.

1. Pobranie rekordów z pliku i zaimportowanie ich do tabeli w bazie danych:

BULK INSERT HumanResources.Department2

FROM 'C:\temp\dane.txt’

WITH (formatfile=’c:\temp\format.fmt’)

2. Wyświetlenie zawartości pliku tekstowego, jakby to była tabela:

SELECT a.* FROM OPENROWSET(BULK,’C:\temp\dane.txt, formatfile=’c:\temp\format.fmt’)

3. Wyświetlenie zawartości pliku tekstowego, w surowej postaci

SELECT CAST(a.kol1 AS VARCHAR(MAX)) FROM OPENROWSET(BULK,’C:\temp\dane.txt, SINGLE_BLOB) AS a(kol1)

 

By Rafał Kraik in SQL

Jak przeindeksować (przebudować) wszystkie indeksy wszystkich tabel bazy danych?

2013-06-18

Niestety nie ma w SQL serwerze polecenia 🙁

ALTER INDEX ALL ON ALL REBUILD

Co możemy zrobić:

1. Skorzystać z kursora, który przechodzi przez rekordy sys.tables. Nie będę powtarzał czegoś co juz jest ładnie opisane, zapraszam na blog Pinal Dave: http://blog.sqlauthority.com/2009/01/30/sql-server-2008-2005-rebuild-every-index-of-all-tables-of-database-rebuild-index-with-fillfactor/

2. Skorzystać z nieco ukrytej procedury sp_MSforeachtable, którą kokładniej opisałem tu http://www.mobilo24.eu/wykonanie-czynnosci-dla-wielu-tabel-w-bazie-danych-lub-dla-wielu-baz-danych/ a z kolei pod tym adresem znajdziesz rozwiązanie problemu indeksowania z wykorzystaniem tej procedury: http://geekswithblogs.net/robz/archive/2009/06/09/sql-server-2005-sql-server-2008—rebuild-or-reorganize.aspx

3. Wyklikać sobie tzw Maintnance Plan, względnie zbudować go samodzielnie w Integration Services (Business Inteligence Management Studio).

By Rafał Kraik in SQL

BCP nie można zaimportować pustych linii.

2013-06-18

Próbowałem zrobić wydaje się prostą rzecz. Poprzez bcp wyeksportować dane w postaci czytelnego tekstu do pliku, przenieść plik na drugi serwer i tam go zaimportować.

Zacząłem od przygotowania format file (tutaj bazuję na bazie AdventureWorks2012):

bcp adventureworks2012.HumenResources.Department format null -f c:\temp\format.fmt -T

Kolejny krok to wyeksportowanie danych na jednym serwerze:

bcp AdventureWorks2012.HumanResources.Department out c:\temp\dane.txt -f c:\temp\format.fmt -T

Do tej pory wszystko było OK. (Na potrzeby testu możesz teraz zeskryptować tabelę HumanResources.Department, zmienić nazwę na Department2 i usunąć dla kolumny department ID modyfikator IDENTITY. Możesz także usunąć linijkę constraina PRIMARY KEY lub zmienić jego nazwę dopisując np „2”)

Teraz decydujący moment. Importujemy dane: Czytaj dalej »

By Rafał Kraik in Helpdesk, SQL