Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE DATABASE test ON PRIMARY (NAME='test_data', FILENAME = 'C:\test_data.mdf',SIZE=1740000KB, MAXSIZE=UNLIMITED, FILEGROWNTH=16384KB)
- LOG ON
- (NAME='test_log', FILENAME='C:\test_log.ldf', SIZE=2048KB, MAXSIZE=1GB, FILEGROWNTH=16348KB)
- USE [master]
- GO
- IF EXISTS (SELECT name FROM master..sysdatabases WHERE name='Uczelnia') DROP DATABASE [Uczelnia]
- GO
- CREATE DATABASE [Uczelnia]
- GO
- SELECT name, size, size*1.0/128 AS [Size in MBs]
- FROM sys.master_files
- WHERE name = 'Uczelnia';
- =====================================================================================
- USE [Uczelnia]
- GO
- IF OBJECT_ID('[dbo].[Wydzialy]') IS NOT NULL DROP TABLE [dbo].[Wydzialy]
- GO
- CREATE TABLE [dbo].[Wydzialy](
- [IdWydzialu] [smallint] NOT NULL,
- [Nazwa] [VARCHAR](30) NOT NULL
- CONSTRAINT PK_Wydzialy PRIMARY KEY (IdWydzialu),
- )
- GO
- -------------------------------------------------------------------------------------
- INSERT INTO [dbo].[Wydzialy] VALUES (1,'Administracji i Prawa')
- INSERT INTO [dbo].[Wydzialy] VALUES (2,'Informatyki')
- INSERT INTO [dbo].[Wydzialy] VALUES (3,'Nauk społecznych')
- INSERT INTO [dbo].[Wydzialy] VALUES (4,'Filozoficzny')
- INSERT INTO [dbo].[Wydzialy] VALUES (5,'Antropologii')
- INSERT INTO [dbo].[Wydzialy] VALUES (6,'Geodezyjny')
- INSERT INTO [dbo].[Wydzialy] VALUES (7,'Metalurgiczny')
- INSERT INTO [dbo].[Wydzialy] VALUES (8,'Fizyki jądrowej')
- INSERT INTO [dbo].[Wydzialy] VALUES (9,'Matematyki')
- INSERT INTO [dbo].[Wydzialy] VALUES (10,'Biologiczny')
- =====================================================================================
- USE [Uczelnia]
- GO
- IF OBJECT_ID('[dbo].[Tytuly]') IS NOT NULL DROP TABLE [dbo].[Tytuly]
- GO
- CREATE TABLE [dbo].[Tytuly](
- [IdTytulu] [smallint] NOT NULL,
- [Tytul] [VARCHAR](30) NOT NULL
- CONSTRAINT PK_Tytuly PRIMARY KEY (IdTytulu),
- )
- GO
- -------------------------------------------------------------------------------------
- INSERT INTO [dbo].[Tytuly] VALUES (1,'inż.')
- INSERT INTO [dbo].[Tytuly] VALUES (2,'mgr')
- INSERT INTO [dbo].[Tytuly] VALUES (3,'mgr inż.')
- INSERT INTO [dbo].[Tytuly] VALUES (4,'dr')
- INSERT INTO [dbo].[Tytuly] VALUES (5,'dr inż.')
- INSERT INTO [dbo].[Tytuly] VALUES (6,'dr hab.')
- INSERT INTO [dbo].[Tytuly] VALUES (7,'dr hab. inż.')
- INSERT INTO [dbo].[Tytuly] VALUES (8,'prof. nadz. dr hab.')
- INSERT INTO [dbo].[Tytuly] VALUES (9,'prof. nadz. dr hab. inż.')
- INSERT INTO [dbo].[Tytuly] VALUES (10,'prof. dr hab.')
- INSERT INTO [dbo].[Tytuly] VALUES (11,'prof. dr hab. inż.')
- USE [Uczelnia]
- GO
- IF OBJECT_ID('[dbo].[Pracownicy]') IS NOT NULL DROP TABLE [dbo].[Pracownicy]
- GO
- CREATE TABLE [dbo].[Pracownicy](
- [IdPracownika] [int] NOT NULL,
- [Imie] [NVARCHAR](50) NOT NULL,
- [Nazwisko] [NVARCHAR](50) NOT NULL,
- [IdTytulu] [SMALLINT] NOT NULL,
- [IdWydzialu] [SMALLINT] NOT NULL,
- [Stawka] [INT] NOT NULL,
- [Data_zatrudnienia] [DATE] NOT NULL,
- [Data_zwolnienia] [DATE] NULL
- CONSTRAINT PK_Pracownicy PRIMARY KEY (IdPracownika),
- CONSTRAINT OGR_Wydzial FOREIGN KEY (IdWydzialu) REFERENCES [dbo].[Wydzialy](IdWydzialu),
- CONSTRAINT OGR_Tytul FOREIGN KEY (IdTytulu) REFERENCES [dbo].[Tytuly](IdTytulu)
- )
- -------------------------------------------------------------------------------------
- INSERT INTO [dbo].[Pracownicy] VALUES (1,'Stephanie','Alexander',1,4,1017,'1985-02-28',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (2,'Dawn','Sharma',4,6,1792,'1992-06-03',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (3,'Clayton','Ye',7,10,1363,'2010-12-04',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (4,'Bradley','Xie',9,6,3452,'2011-07-12',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (5,'Julia','Lopez',2,10,1243,'1999-01-18',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (6,'Anna','Powell',7,9,1862,'1998-05-12',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (7,'Meghan','Torres',4,1,2166,'2002-06-12',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (8,'Roberto','Ramos',3,4,3627,'2002-02-14',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (9,'Morgan','Bailey',8,8,3123,' 1996-02-16',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (10,'Clayton','Shan',11,5,2984,' 1996-02-18',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (11,'Edwin','Ye',1,8,3680,'2010-04-26',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (12,'Diane','Jimenez',9,8,1270,'2010-04-26',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (13,'Mallory','Dominguez',6,10,3693,'2010-08-27',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (14,'Grace','Wood',6,1,1521,'2006-08-27',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (15,'Erin','Rogers',5,3,2306,'2006-09-28',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (16,'Joe','Ashe',3,9,2583,'2006-11-04',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (17,'Alexandria','Griffin',2,3,3773,'2006-11-04',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (18,'Jacob','Harris',1,10,3228,'2005-11-05',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (19,'Joy','Alvarez',11,9,2079,'2005-11-06',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (20,'Ian','Moore',10,6,1811,'1945-11-06',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (21,'Jada','Baker',9,3,1689,'2005-11-06',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (22,'Mason','Mitchell',8,10,1666,'1945-11-07',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (23,'Nathan','Flores',7,4,1492,'1945-11-08',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (24,'Devin','Howard',6,4,1922,'2007-11-10',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (25,'Marcus','Cooper',5,10,2835,'2007-11-18',NULL)
- INSERT INTO [dbo].[Pracownicy] VALUES (26,'Seth','Jenkins',4,10,1496,'2007-11-28',NULL)
- /*dodanie grupy plików do bazy*/
- USE Uczelnia
- ALTER DATABASE Uczelnia
- ADD FILEGROUP uczelnia_file_group
- /*sprawdzenie grup plików*/
- EXEC sp_helpfilegroup
- /*dodanie plików do grupy plików, można dodawać więcej niż jeden plik*/
- ALTER DATABASE Uczelnia
- ADD FILE
- (name='uczelnia_data2', FILENAME = 'C:\test\Uczelnia_data2.mdf',size=2),
- (name='uczelnia_data3', FILENAME = 'C:\test\Uczelnia_data3.mdf',size=2)
- TO FILEGROUP uczelnia_file_group
- /*zmiany plików w bazie danych*/
- USE Uczelnia
- ALTER DATABASE Uczelnia
- MODIFY FILE (name='U_data2', FILENAME ='C:\test2\ssss.ndf')
- /*zmiana domyślnej grupy plików*/
- USE Uczelnia
- ALTER DATABASE Uczelnia
- MODIFY FILEGROUP "PRIMARY" DEFAULT
- /*usunięcie pliku */
- USE Uczelnia
- ALTER DATABASE Uczelnia
- REMOVE FILE uczelnia_data3
- /*usunięcie grupy, nie da się usunąć grupy póki nie jest pusta*/
- USE Uczelnia
- ALTER DATABASE Uczelnia
- REMOVE FILEGROUP uczelnia_file_group
- /*sprawdzanie plików i ich nazw */
- SELECT
- name,
- physical_name
- FROM sys.master_files
- WHERE
- database_id = DB_ID('Uczelnia')
- 1.Sprawdzić jakie grupy plików posiada baza danych AdventureWorks2014.
- 2.Dodać nową grupę plików o nazwie test.
- 3.Dodać dwa nowe pliki danych o nazwie test.
- 4.Usunąć jeden z plików danych.
- 5.Usunąć utworzoną grupę plików.
- BEGIN
- USE AdventureWorks2014
- EXEC sp_helpfilegroup
- ALTER DATABASE AdventureWorks2014
- ADD FILEGROUP test
- ALTER DATABASE AdventureWorks2014
- ADD FILE
- (name='plik_1', FILENAME = 'C:\test2\plik1.mdf',size=2),
- (name='plik_2', FILENAME = 'C:\test\plik2.mdf',size=2)
- TO FILEGROUP test
- ALTER DATABASE AdventureWorks2014
- MODIFY FILEGROUP test DEFAULT
- ALTER DATABASE AdventureWorks2014
- REMOVE FILE plik_2
- ALTER DATABASE AdventureWorks2014
- MODIFY FILEGROUP "PRIMARY" DEFAULT
- ALTER DATABASE AdventureWorks2014
- REMOVE FILE plik_1
- ALTER DATABASE AdventureWorks2014
- REMOVE FILEGROUP test
- END
- /* ustawienie bazy w tryb pojedynczego użytkownika */
- USE AdventureWorks2014
- ALTER DATABASE AdventureWorks2014 SET MULTI_USER
- /* sprawdza spójność pliki bazy danych, a dokładnie konkretnej bazy danych) */
- DBCC CHECKALLOC (AdventureWorks2014, NOINDEX)
- /* jeśli powyższy check pokaże błedy, to polecenie niżej naprawia tylko podstawowe błędy, np błędy spójności dysków */
- DBCC CHECKALLOC (AdventureWorks2014, REPAIR_FAST)
- /* stara się naprawić dane, nawet z ututatą danych, chodzi o transakcje anuluje transakcje które wiszą lub są zakleszczkone */
- DBCC CHECKALLOC (AdventureWorks2014, REPAIR_ALLOW_DAT_LOSS)
- /* najnardziej praco chłonna operacja, przetwarza cały plik od podstaw, transakcje pozamykane plik jest jak nowy, porządkuje wszystkie indexy tak jak ma być*/
- DBCC CHECKALLOC (AdventureWorks2014, REPAIR_REBUILD)
- /* zmiejsza rozmiar pliku jak się tablica indeksów rozjedzie to system robi zwyczajnie nową
- nie ruszając starej przez co baza puchnie poniższe zapytanie wywali te złe tabele indexu z bazy
- ZANIM WYKONAMY SHRINKDATABASE KONIECZNA JEST KOPIA ZAPASOWA*/
- USE uczelnia
- DBCC SHRINKDATABSE (uczelnia)
- /* poniższe polecenie pokazuje informacje o tabeli, również jedną bardzo ważną informację w ile procentach jest zajęta strona
- jeśli jest na 85% to znaczy że tracimy sporo danych, każda strona zajmuje 8 bitów, przy małych bazach jest to nie ważne, ale przy dużych
- Będziemy mieli sporo problemów ten problem spowodowany jest złym typem danych, jak najlepiej trzeba określić jakie dane będą np int to bardzo duży przedział
- a my potrzebujemy tylko przedział danych od 1 do 10, więc musimy to określić z góry*/
- USE [Uczelnia]
- DBCC showconting('dbo.Pracownicy')
- /*Schematy
- Tworzeone w kontekście bazy w której pracujemy
- Schematy są przypisane do konkretnej bazy danych
- Schematy są przypisany do bazy i użytkowników
- Przykład jest prosty mamy schemat o nazwie pracownik Kadr do którego przypisana jest baza kadry i uprawnienie odczytu
- więc jak przychodzi nowy pracownik wystarczy nadać mu login i dodać do tego schematu, a nie robić wszystko dla każdego użtkownika
- tak samo jak zmienia się polityka pracy kadry to wystarczy zmienić to w schemacie a nie każdemu użytkownikowi (pozwolenie edycja dla przykładu */
- /* Wyświetlenie wszystkich dostępnych schematów dla danej bazy dancych */
- USE AdventureWorks2014
- EXEC sp_schemata_rowset
- /* wyświetlenie tabel i w jakich schematach pracują | relacja tabela <> schemat */
- SELECT * FROM INFORMATION_SCHEMA.TABLES
- /* poniższe zapytanie robi dokładnie to samo co sp_chemata_rowset */
- SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
- /* rozpisana cała pojedynczą tabele, mamy pozycję kolumny i różne informację o nich */
- SELECT * FROM INFORMATION_SCHEMA.COLUMNS
- WHERE
- TABLE_NAME='Person'
- /*nie mieliśmy użtkownika to sobie go stworzyliśmy i daliśmy uprawnienia oczywiście */
- USE Uczelnia
- CREATE LOGIN test WITH PASSWORD ='!QAZ2wsx3edc'
- EXEC sp_grantdbaccess test
- /* teraz poniżej tworzymy pusty schemat */
- USE Uczelnia
- GO
- CREATE SCHEMA studenci2 AUTHORIZATION test
- /* jak nie ma użtkownika można go stworzyć już w skrypcie */
- USE Uczelnia
- GO
- /* to polecenie dokładnie robi tak że tworzymy użytkownika który nazywa się test i loguje się za pomocą loginu test,
- nie muszą się nazywać tak samo, fajne to jest jak pracownik zmienia nazwisko, można mu zmienić wyświetlanie w bazie ale login
- pozostawić stary */
- CREATE USER test FOR login test
- GO
- CREATE SCHEMA studenci AUTHORIZATION test
- /* usuwanie scheamtu */
- DROP SCHEMA studenci
- /* zmiana właściciela schematu */
- ALTER AUTHORIZATION ON SCHEMA::studenci2 TO test
- /* ponieważ według Pana Tatonia, wyklikiwać to może użytkonik a nie admin, może zdarzyć się że usunięcie schematu będzie wymagało większych uprawnień
- to zapytanie rozwiąże sprawę */
- EXEC Uczelnia..sp_addsrvrolemember @loginame = N'test', @rolename = N'sysadmin'
- /* krótki skrypt który sprawdza czy schemat istnieje i jeśli istnieje wywala go a jak nieistnieje to go tworzy */
- USE Uczelnia
- IF EXISTS (SELECT * FROM sys.schemas WHERE name='studenci2')
- BEGIN
- EXEC ('DROP SCHEMA [studenci2]')
- END
- ELSE
- BEGIN
- EXEC('CREATE SCHEMA [Studenci2]')
- END
- /* Ważne informacje jeśli dajemy coś w [] to tylko po to żeby wykluczyć że nie jest to słowo kluczowe
- a jeśli robimy jakiś PRINT to najlepiej przed nawiasem dać N('coś tam chce wypisać') to N powoduje że zdanie jest pobierane
- znak po znaku wykluczy to literówki bądź ewentualne błędy zaś jeśli go nie ma to ściąga całego stringa, możliwe że pokażą się błędy
- w zdaniu */
- /* tworzy schamat użytkownika i login, użytkownika ustanawia jako właściciela schaematu są if które sprawdzają czy te dane istnieją
- jeśli istnieją to je usuwa i tworzy na nowo */
- DECLARE @schemat varchar(8)
- DECLARE @user varchar(4)
- DECLARE @login varchar(4)
- SET @login = 'test'
- SET @user = 'test'
- SET @schemat = 'studenci'
- USE [Uczelnia]
- IF EXISTS (SELECT * FROM sys.schemas WHERE name=@schemat)
- BEGIN
- EXEC ('DROP SCHEMA [studenci]')
- EXEC('CREATE SCHEMA [studenci]')
- END
- ELSE
- BEGIN
- EXEC('CREATE SCHEMA [studenci]')
- END
- IF EXISTS (SELECT * FROM sys.syslogins WHERE name=@login)
- BEGIN
- EXEC ('DROP LOGIN test')
- EXEC('CREATE LOGIN test WITH PASSWORD =''!QAZ@WSX33dd''')
- END
- ELSE
- BEGIN
- EXEC('CREATE LOGIN test WITH PASSWORD =''!QAZ@WSX33dd''')
- END
- IF EXISTS (SELECT * FROM sys.sysusers WHERE name=@user)
- BEGIN
- EXEC('DROP USER test')
- EXEC ('CREATE USER test FOR LOGIN test')
- EXEC ('ALTER AUTHORIZATION ON SCHEMA::studenci TO test')
- END
- ELSE
- BEGIN
- EXEC ('CREATE USER test FOR LOGIN test')
- EXEC ('ALTER AUTHORIZATION ON SCHEMA::studenci TO test')
- END
- /* możliwe połączenia z MS SQL serwerem
- OLE DB(zewnętrze sterowniki oferowane przez np windows
- ODBC niezależne od języka programowania, nie ma znaczenia system operacyjny Standard interfejsu to API
- Narzędzia tekstowe za pomocą konsoli tekstowej możemy
- POłączyć się z SerweremMS SQL
- Wprowadzania instrukcji Transact-SQL
- itd.
- SQLCMD + najnowsze narzędzie linii komend
- OSQL - oparty na sterowniku odbc
- otwieramy konsole windows (cmd), a następnie polecenie sqlcmd -S <serwer> -U <użytkownik> -o <miejsce pliku do którego zapisuje wyniki jeśli chcemy>
- EXEC sp_helplogins
- EXEC sp_helplogins [użytkownik]
- CREATE LOGIN [test] WITH PASSWORD=’123456’;
- EXEC sp_addlogin [test2], ‘123456’;
- EXEC sp_addlogin [test3];
- EXEC sp_who
- Alter database sss SET SINGLE_USER WITH ROLLBACK
- Baza do odczytu jedne osobie z wycofaniem transakcji jeśli takie są
- ALTER DATABASE ssss SET MULTI_USER
- ALTER LOGIN test WITH PASSWORD = ‘1111’
- EXEC sp_password NULL, ‘1233’
- EXEC sp_defaultdb test, master;
- Ustawianie bazy maste jako domyślnej dla użytkownika test
- EXEC sp_defaultlanguage test, polish;
- CREATE LOGIN test4 WITH PASSWORD =’123456’ MUST_CHANGE DEFAULT_DATABAE=master, DEFAULT_LANGUAGE=polish, CHECK_EXPIRATION=ON, CHECK_POLICY=ON
- ALTER LOGIN test ENABLE/DISABLE DENY CONNECT SQL TO master
- EXEC sp_helpsrvrole
- Wyświetla role
- EXEC addsrvrolemember test, securityadmin
- Dodanie roli użytkownikowi
- EXEC sp_dropsrvrolemember test, securityadmin
- USE uczelnia
- EXEC sp_tables -- @table_name
- EXEC sp_help
- DBCC checktable ‘pracownicy’
- Własne typy danych:
- EXEC sp_addtype ‘kod_pocztowy’, ‘char(6)’, null
- Usuwanie:
- EXEC sp_droptype ‘kod_pocztowy’
- USE uczelnia
- IF OBJECT_ID’
- AUTO_INCREMENT w tSQL = IDENTITY
- BACKUP DATABASE nazwa
- TO DISC=’c:/bleble.bak
- WITH FORMAT,’
- MEDIANAME=’test2’,
- NAME = ‘test’’
- GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement