RSS

Moje notatki – SQL Server 2008 R2 – część 1

04 Czer

1. Logowanie do serwera przy pomocy sqlcmd i autoryzacji Windowsa :
sqlcmd -S .\SQL -E
gdzie .\SQL to nasz serwer

2. Dodawanie nowych loginów z konsoli i nadawanie im uprawnień :
CREATE LOGIN root WITH PASSWORD='hasloroota'
GO

Nadajemy uprawnienia SYSADMIN dla użytkownika root
SYS.SP_ADDSRVROLEMEMBER 'root' , 'sysadmin'
GO

3. Zmiana hasła z konsoli :
ALTER LOGIN root WITH PASSWORD='nowe'
GO

4. Wykonanie komendy z opóźnieniem :
WAITFOR DELAY '000:00:20'
SELECT '20 SEKUND'
GO

5. SELECT z automatycznym dokańczaniem :
SELECT * FROM AdventureWorksLT.SalesLT.Address
WHERE AddressID like '9%'
GO

lub
select * from Osoby where Pesel like '[5-6]%'

6. Zaokrąglanie do 2 miejsc po przecinku
update SalesLT.Product
set ListPrice = ROUND(ListPrice * 1.1, 2)
where Name like 'AWC%'
GO

7. Pokazuje aktualnie zalogowanych użytkowników do serwera niebędących użytkownikiem sa:
CREATE TABLE Who
(spid INT, ecid INT, status VARCHAR(150), loginame VARCHAR(150),
hostname VARCHAR(150), blk INT, dbname VARCHAR(150), cmd VARCHAR(150), request_id VARCHAR(150))
INSERT INTO Who
EXEC sp_who
SELECT *
FROM Who
WHERE loginame!='sa'
WAITFOR DELAY '000:00:02'
DROP TABLE Who

Zabijanie procesów
KILL numerek_spid

8. Ograniczenie SELECTA do pokazania tylko 10 linijek
SET ROWCOUNT 10
SELECT * FROM Osoby
SET ROWCOUNT 0

9. Sprawdzanie poprawności bazy :
DBCC CHECKDB WITH PHYSICAL_ONLY

parametr PHYSICAL_ONLY sprawdza fizyczną strukturę pliku na dysku
innym fajnym parametrem jest NO_INFOMSGS, który pokaże nam tylko podsumowanie bez zbędnych informacji ( przez zbędne mam na myśli wszystko to co się pojawi gdy odpalimy DBCC CHECKDB bez żadnego parametru )

10. Naprawa bazy :
Naprawianie bazy wymaga trybu SINLE_USER na bazie.
ALTER DATABASE NaszaBaza
SET SINGLE_USER
GO
DBCC CHECKDB(NaszaBaza,REPAIR_REBUILD) WITH NO_INFOMSGS

Wszystkie opcje dla naprawiania to : REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD

Wracamy do trybu MULTI USER
ALTER DATABASE NaszaBaza
SET MULTI_USER

11. Tworzymy widoki :
Widok może być bardzo prosty, np:
CREATE VIEW V1
AS SELECT * FROM OSOBY

Jak i bardziej złożony :
CREATE VIEW OSOBOADRESY
AS SELECT O.Osoba, O.Nazwisko, O.Imie1, O.DataUrodzenia, AO.Miejscowosc, AO.KodPocztowy, AO.Ulica, AO.NumerDomu, AO.NumerLokalu FROM Osoby O
LEFT JOIN OsobyAdresy AO ON O.idOsoby=AO.idOsoby

Od tej pory możemy wykonywać polecenie SELECT na widoku jak na zwykłej tabeli, np:
SELECT * FROM OSOBOADRESY
WHERE OSOBA>='00020'

W bazie zapamiętane zostaną tylko definicje poszczególnych kolumn widoków, nie zaś wartości!

12. Łączenie zapytań poprzez UNION. Za pomocą operatora UNION możemy dodać wyniki poszczególnych zapytań (czyli zwiększyć liczbę wierszy wyniku. Złączenia JOIN zwiększały liczbę kolumn, złączenie UNION zwiększa liczbę wierszy). Łączone wyniki muszą składać się z takiej samej liczby kolumn, a poszczególne kolumny muszą być tego samego typu, poza tym konieczne jest, aby występowały one w tej samej kolejności w obu wynikach, np:
SELECT * FROM OSOBOADRESY
WHERE OSOBA>='00020'
UNION
SELECT O.Osoba, O.Nazwisko, O.Imie1, O.DataUrodzenia, AO.Miejscowosc, AO.KodPocztowy, AO.Ulica, AO.NumerDomu, AO.NumerLokalu FROM Osoby O
LEFT JOIN OsobyAdresy AO ON O.idOsoby=AO.idOsoby
WHERE O.Osoba<='00010'

13. Funkcja IF :
IF (SELECT KODPOCZTOWY FROM OSOBOADRESY O WHERE OSOBA='00023') = '78-320' PRINT 'KOD SIĘ ZGADZA'
ELSE UPDATE OsobyAdresy SET KODPOCZTOWY = '78-320' WHERE idOsoby=(select idOsoby from osoby where osoba='00023');

 
Dodaj komentarz

Opublikował/a w dniu 4 czerwca, 2011 w SQL

 

Dodaj komentarz