Kategoria MS SQL Server

Automatyczny backup i zip baz w MS SQL Server 2005/2008

Zmęczony ręcznym tworzeniem backupów z SQL Servera oraz pamiętaniem, które bazy należy kopiować zacząłem szukać rozwiązania do automatycznego backupu. Na forum CodeGuru.pl znalazłem namiastkę rozwiązania przedstawiono przez „alazif” . Po modyfikacji i dopisaniu kodu stworzyłem skrypt, który automatycznie wykonuje backup wszystkich baz danych umieszczonych w aktualnej instancji serwera. Nazwy wszystkie kopii składają się z prefixu (w tym wypadku używam nazwy instancji serwera), roku, miesiąca i dnia wykonania kopi oraz z samej nazwy bazy danych. Dodatkowo stworzyłem fragment, który jest odpowiedzialny za wykonanie pakowania, ( za pomocą zipa, rara, 7zipa itp – odpowiednią komendę podaje się w zmiennej tekstowej) backapów baz danych. W zmiennej @choice ustawia się odpowiednie parametry dotyczące sposobu wykonywania kopii, i tak dla: 0 – Wykonywany jest backup, który jest pakowany a następnie pliki *.bak są zakasowywane (opcja oszczędzająca miejsce na dysku) 1 – Wykonywany jest backup, który jest pakowany, pliki *.bak nie są kasowane (podwójne zabezpieczenie) 2 – Wykonywany jest tylko sam backup. Pakowanie nie jest wykonywane...

Czytaj dalej

SQL Day 2010 Workshop

Rozpoczęła się rejestracja na warsztaty SQL organizowane przez Polish SQL Server User Group (PLSSUG) w Krakowie 18 września.
Rejestracja na stronie SQL Day 2010 -Workshop.

Czytaj dalej

Zdany TS: 070-433 SQL Server 2008 Database Development

W dniu wczorajszym zdałem egzamin certyfikacyjny Microsoft:
TS: 070-433 SQL Server 2008 Database Development

Teraz przygotowuję się do TS: 070-432 SQL Server 2008, Implementation and Maintenance

Czytaj dalej

Dynamiczna budowa kodu a znak ‚

Budując kod T-SQL dynamicznie wielokrotnie można spotkać się z problemem znaku ‚.

Np. mając do dyspozycji fragment kodu z „Jak podłączyć bazy typu dbf (dBase) do MS SQL Server ?”

SELECT Pole_1, Pole_2, ..., Pole_n
FROM OPENROWSET('MSDASQL','Driver={Microsoft dBASE Driver (*.dbf)};DBQ=C:\Temp','SELECT * FROM BazaDBF')

chcąc np. dynamicznie zmieniać ścieżkę C:\Temp należało by w zmiennej tekstowej użyć znaku ‚, ale przecież znak ten rozpoczyna i kończy ciąg tekstowy.

Należy zastosować funkcję char(), która zwraca znak o odpowiednim numerze. I Tak nasz znak ‚ to char(39).

declare @cmd varchar(500);
declare @pp varchar(20);
set @pp='C:\Temp' 

set @cmd = 'INSERT INTO Baza (POLE_1, POLE_2, POLE_3) 
            SELECT POLE_1, POLE_2, POLE_3
            FROM OPENROWSET('+<strong>CHAR(39)</strong>+'MSDASQL'+<strong>CHAR(39)</strong>+','+
            <strong>CHAR(39)</strong>+'Driver={Microsoft dBASE Driver (*.dbf)};DBQ='+@pp+<strong>CHAR(39)</strong>+','+ 
            <strong>CHAR(39)</strong>+'SELECT * FROM BazaDBF'+<strong>CHAR(39)</strong>+')'                 

exec sys.sp_sqlexec @cmd
 
Czytaj dalej

Transpozycja Tabeli czyli taki tam mały pseudo Pivot

Przedstawiam kod do transpozycji tabeli. Kiedyś potrzebowałem coś podobnego pod MS SQL Server 2000. Chciałem użyć Pivota ale ….to nie ta wersja.

Proszę o uwagi i ewentualne propozycje zmian.

CREATE TABLE #t("Nazwa" varchar(20),
 "Wartosc" int);

INSERT INTO #t VALUES ('KOLUMNA1',2);
INSERT INTO #t VALUES ('KOLUMNA2',4);
INSERT INTO #t VALUES ('KOLUMNA3',6);
INSERT INTO #t VALUES ('KOLUMNA4',8);

SELECT * FROM #t;
GO
DECLARE @sql AS NVARCHAR(2000)
DECLARE @sql2 AS NVARCHAR(2000)
DECLARE @nazwa AS nvarchar(30)
DECLARE @wartosc AS int
DECLARE @licznik INT
DECLARE @zn char(1)

SET @sql='create table db ('
SET @sql2= 'insert into db values ('
SET @licznik=0
SET @zn=CHAR(39);

DECLARE c1 CURSOR FOR
SELECT    Nazwa, Wartosc FROM #t  

OPEN c1

FETCH c1 INTO @nazwa,@wartosc
WHILE (@@fetch_status = 0)
 BEGIN
 SET @licznik=@licznik+1
 if @licznik&gt;1
 BEGIN
 SET @sql=@sql+','   
 SET @sql2=@sql2+','  
 END     
 SET @sql= @sql +'"Nazwa'+ cast(@licznik AS nvarchar(3))+'" varchar(30), "Wartosc'+cast(@licznik AS nvarchar(3))+'" int'
 SET @sql2=@sql2+@zn+ @nazwa+@zn+','+CAST(@wartosc AS varchar(10))  
 FETCH c1 INTO  @nazwa,@wartosc
 END
 SET @sql...
Czytaj dalej

Jak podłączyć bazy typu dbf (dBase) do MS SQL Server ?

Z problemem tym zetknąłem się niedawno.  Jeszcze stare bazki dbf-owe nie upadły jeszcze. Na różnych forach są opisy, które nie do końca działają lub opisują tylko część problemu.

W pierwszej kolejności aby można było tworzyć zapytania ad-hockowe do tych baz należy zmienic konfigurację SQL Servera:

— rozszerzenie na opcje zaawansowane

exec sp_configure 'show advanced options',1
reconfigure with override;

— Włączenie możliwości zadawania zapytań typu Ad-Hoc

exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure with override;

–wyświetlenie zawartości bazy z pliku BazaDBF.dbf gdzie:

Pole_1, Pole_2, …, Pole_n – pola bazy danych

„MSDASQL” – provider OLE DB

DBQ=C:\Temp – ścieżka do folderu zawierającego pliki dbf

{Microsoft dBASE Driver (*.dbf)) – driver

BazaDBF – nazwa pliku dbf (nazwa całej bazy danych typu dbf, która jest zarazem jedną tabela o nazwie BazaDBF)

SELECT Pole_1, Pole_2, ..., Pole_n
FROM OPENROWSET('MSDASQL','Driver={Microsoft dBASE Driver (*.dbf)};DBQ=C:\Temp','SELECT * FROM BazaDBF')
Czytaj dalej
DBBS