1
DDL zadania do wykonania
Cz. I
UWAGA:
Przed przystąpieniem do realizacji tej części zadań proszę sprawdzić czy na serwerze bazy
danych znajduje się baza labbd, jeśli nie należy ją załadować (plik mdf znajduje się na
Platformie) korzystając z opcji Attach.
1. Utworzyć bazę danych Test1
Polecenie: CREATE DATABASE <nazwa_bazy_danych>
WSZYSTKIE POZOSTAŁE OPERACJE Z CZ. I WYKONUJEMY NA BAZIE TEST1
2. Stworzyć w niej nowe tabele zesp1 oraz prac1 tak, by spełnione były następujące warunki:
zesp1:
kolumny: Nazwazesp char(30), Nrz smallint, Nrpkz int
Nrz jest kluczem głównym
prac1:
kolumny: Nrp int, Kobieta char (1),Data_ur datetime NOT NULL,Nazwisko char (15) NOT NULL, Nrz smallint
Nrp jest kluczem głównym
Na kolumnie Nrz jest zbudowany indeks
Polecenia:
CREATE TABLE <nazwa_tabeli>(<nazwa_kolumny> <typ_kolumny> [PRIMARY KEY],…)
CREATE INDEX <nazwa_indeksu> ON <nazwa_tabeli> (<nazwa_kolumny>)
3. Wstawić do stworzonych tabel dane z tabel ZESPOLY oraz PRACOWNICY z bazy LABBD
Zwrócić uwagę na to, czy nazwy kolumn/typy nie są różne
Polecenie: INSERT INTO <nazwa_tabeli> SELECT *|<lista_kolumn> FROM labbd.dbo.<nazwa_tabeli>
4. Do tabeli prac1 dodać klucz obcy odwołujący się do tabeli zesp1 tak, aby usunięcie zespołu
powodowało wpisanie wartości NULL w polu Nrz tabeli prac1. Do tabeli zesp1 dodać klucz obcy
odwołujący się do tabeli prac1 tak, aby nie można było usunąć pracownika, który jest kierownikiem
zespołu
Polecenie:
ALTER TABLE <nazwa_tabeli> ADD CONSTRAINT <nazwa_klucza> FOREIGN KEY (<kolumna>) REFERENCES
<nazwa_tabeli>(<kolumna>) ON DELETE NO ACTION|SET NULL
5. Wykonać ćwiczenie sprawdzające poprawność działania więzów spójności, pod kątem wprowadzania
wartości pustych, powtarzających się wartości oraz kasowania wierszy mających swych
odpowiedników w tabelach podrzędnych oraz dokonywania zmian wartości.
2
Cz. II
UWAGA:
Przed przystąpieniem do realizacji tej części zadań proszę sprawdzić czy ustawienie
opcji Server authentication (zakładka Security we właściwościach serwera bazy
danych) pozwala na wykorzystanie autoryzacji poprzez SQL Server. W razie
konieczności zmienić to ustawienie, a następnie z zrestartować serwer bazy danych
1. Stworzyć użytkownika admin z hasłem admin123 – wykorzystując polecenie CREATE LOGIN.
Polecenie:
CREATE LOGIN <nazwa_loginu> WITH PASSWORD = ‘<hasło>’
UWAGA: Login tworzy się na serwerze – główna gałąź Security →Logins
2. W bazie danych Test1 jako użytkownik admin wykonać polecenie SELECT na tabeli zesp1, co się
stanie?
3. Podłączyć się do bazy jako użytkownik administrator. Wykorzystać polecenie CREATE USER do
przydzielenia uprawnień użytkownikowi admin do bazy danych Test1.
Polecenie:
USE test1 - lub przełączyć się ręcznie na bazę test1 (
użytkownik ma być utworzony w tej właśnie bazie!!!
gałąź
Databases →test1 → Security →Users)
CREATE USER <nazwa_użytkownika> FROM LOGIN <nazwa_loginu>
4. Ponownie w bazie danych Test1 jako użytkownik admin wykonać polecenie SELECT na tabeli zesp1,
co się stanie?
5. Jako użytkownik administrator, za pomocą polecenie GRANT nadać użytkownikowi admin
odpowiednie uprawnienia do odczytu tabeli zesp1.
Polecenie: GRANT SELECT ON <nazwa_tabeli> TO <nazwa_użytkownika>
6. Ponownie jako admin i wykonać polecenie SELECT na tabeli zesp1, co się stanie tym razem?
7. Jako admin stworzyć użytkownika prac, z hasłem prac123, co się stanie?
8. Jako użytkownik systemowy administrator dołączyć użytkownika admin do roli sysadmin.
Polecenie: sp_addsrvrolemember <nazwa_loginu> , <nazwa_roli>
9. Jeszcze raz admin wykonać próbę stworzenia użytkownika prac, z hasłem prac, co się stanie?
Polecenia:
CREATE LOGIN …
CREATE USER …
10. Stworzyć użytkownika stud, z hasłem stud.
CREATE LOGIN …
CREATE USER …
3
11. Podłączyć się do bazy jako użytkownik admin, nadać użytkownikowi prac uprawnienie do
przeglądania tabeli zesp1
GRANT SELECT …
12. Podłączyć się do bazy jako użytkownik prac i utworzyć tabelę Tem1 o kolumnach (nazwatemat char
(30), data_odb datetime, nrt integer not null, nrpkt smallint not null)
13. Jako użytkownik admin nadać użytkownikowi prac poleceniem GRANT prawa do tworzenia tabel
Polecenia:
GRANT CREATE TABLE TO <nazwa_uż>
GRANT ALTER ON SCHEMA::dbo TO <nazwa_uż>
14. Jako użytkownik prac wykonać jeszcze raz polecenie tworzenia tabeli
15. Jako użytkownik admin zezwolić użytkownikowi prac na usuwanie rekordów z tabeli zesp1.
Sprawdzić działanie przydzielonych uprawnień.
Polecenie: GRANT DELETE ON <nazwa_tabeli> TO <nazwa_użytkownika>
16. Jako użytkownik admin w bazie danych Test1 utworzyć rolę o nazwie not_delete i zabronić tej roli na
usuwanie rekordów z tabeli zesp1.
Polecenia:
CREATE ROLE <nazwa_roli>
DENY DELETE ON <nazwa_tabeli> TO <nazwa_roli>
17. Do roli not_delete dołączyć użytkownika prac. Sprawdzić, czy użytkownik prac może usuwać rekordy
z tabeli zesp1.
Polecenie: sp_addrolemember <nazwa_roli>, <nazwa_uż>
18. Jako użytkownik admin zmienić hasło użytkownikowi stud na student.
Polecenie: ALTER LOGIN <nazwa_uż> WITH password = '<nowe_hasło>'
19. Usunąć użytkownika stud, co się stanie?
Polecenie: DROP USER <nazwa_uż>
20. Usunąć użytkownika prac, co się stanie i dlaczego?
Polecenie: DROP USER <nazwa_uż>