Advertisement
Guest User

Untitled

a guest
Jan 27th, 2017
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 15.27 KB | None | 0 0
  1. CREATE DATABASE test ON PRIMARY (NAME='test_data', FILENAME = 'C:\test_data.mdf',SIZE=1740000KB, MAXSIZE=UNLIMITED, FILEGROWNTH=16384KB)
  2. LOG ON
  3. (NAME='test_log', FILENAME='C:\test_log.ldf', SIZE=2048KB, MAXSIZE=1GB, FILEGROWNTH=16348KB)
  4.  
  5.  
  6.  
  7. USE [master]
  8. GO
  9. IF EXISTS (SELECT name FROM master..sysdatabases WHERE name='Uczelnia') DROP DATABASE [Uczelnia]
  10. GO
  11. CREATE DATABASE [Uczelnia]
  12. GO
  13. SELECT name, size, size*1.0/128 AS [Size in MBs]
  14. FROM sys.master_files
  15. WHERE name = 'Uczelnia';
  16.  
  17. =====================================================================================
  18. USE [Uczelnia]
  19. GO
  20. IF OBJECT_ID('[dbo].[Wydzialy]') IS NOT NULL DROP TABLE [dbo].[Wydzialy]
  21. GO
  22. CREATE TABLE [dbo].[Wydzialy](
  23.     [IdWydzialu] [smallint] NOT NULL,
  24.     [Nazwa] [VARCHAR](30) NOT NULL
  25.     CONSTRAINT PK_Wydzialy PRIMARY KEY (IdWydzialu),    
  26. )
  27. GO
  28. -------------------------------------------------------------------------------------
  29. INSERT INTO [dbo].[Wydzialy] VALUES (1,'Administracji i Prawa')
  30. INSERT INTO [dbo].[Wydzialy] VALUES (2,'Informatyki')
  31. INSERT INTO [dbo].[Wydzialy] VALUES (3,'Nauk społecznych')
  32. INSERT INTO [dbo].[Wydzialy] VALUES (4,'Filozoficzny')
  33. INSERT INTO [dbo].[Wydzialy] VALUES (5,'Antropologii')
  34. INSERT INTO [dbo].[Wydzialy] VALUES (6,'Geodezyjny')
  35. INSERT INTO [dbo].[Wydzialy] VALUES (7,'Metalurgiczny')
  36. INSERT INTO [dbo].[Wydzialy] VALUES (8,'Fizyki jądrowej')
  37. INSERT INTO [dbo].[Wydzialy] VALUES (9,'Matematyki')
  38. INSERT INTO [dbo].[Wydzialy] VALUES (10,'Biologiczny')
  39.  
  40.  
  41. =====================================================================================
  42.  
  43.  
  44. USE [Uczelnia]
  45. GO
  46. IF OBJECT_ID('[dbo].[Tytuly]') IS NOT NULL DROP TABLE [dbo].[Tytuly]
  47. GO
  48. CREATE TABLE [dbo].[Tytuly](
  49.     [IdTytulu] [smallint] NOT NULL,
  50.     [Tytul] [VARCHAR](30) NOT NULL
  51.     CONSTRAINT PK_Tytuly PRIMARY KEY (IdTytulu),    
  52. )
  53. GO
  54. -------------------------------------------------------------------------------------
  55. INSERT INTO [dbo].[Tytuly] VALUES (1,'inż.')
  56. INSERT INTO [dbo].[Tytuly] VALUES (2,'mgr')
  57. INSERT INTO [dbo].[Tytuly] VALUES (3,'mgr inż.')
  58. INSERT INTO [dbo].[Tytuly] VALUES (4,'dr')
  59. INSERT INTO [dbo].[Tytuly] VALUES (5,'dr inż.')
  60. INSERT INTO [dbo].[Tytuly] VALUES (6,'dr hab.')
  61. INSERT INTO [dbo].[Tytuly] VALUES (7,'dr hab. inż.')
  62. INSERT INTO [dbo].[Tytuly] VALUES (8,'prof. nadz. dr hab.')
  63. INSERT INTO [dbo].[Tytuly] VALUES (9,'prof. nadz. dr hab. inż.')
  64. INSERT INTO [dbo].[Tytuly] VALUES (10,'prof. dr hab.')
  65. INSERT INTO [dbo].[Tytuly] VALUES (11,'prof. dr hab. inż.')
  66.  
  67. USE [Uczelnia]
  68. GO
  69. IF OBJECT_ID('[dbo].[Pracownicy]') IS NOT NULL DROP TABLE [dbo].[Pracownicy]
  70. GO
  71. CREATE TABLE [dbo].[Pracownicy](
  72.     [IdPracownika] [int] NOT NULL,
  73.     [Imie] [NVARCHAR](50) NOT NULL,
  74.     [Nazwisko] [NVARCHAR](50) NOT NULL,
  75.     [IdTytulu] [SMALLINT] NOT NULL,
  76.     [IdWydzialu] [SMALLINT] NOT NULL,
  77.     [Stawka] [INT] NOT NULL,
  78.     [Data_zatrudnienia] [DATE] NOT NULL,
  79.     [Data_zwolnienia] [DATE] NULL
  80. CONSTRAINT PK_Pracownicy PRIMARY KEY (IdPracownika),    
  81. CONSTRAINT OGR_Wydzial FOREIGN KEY (IdWydzialu) REFERENCES [dbo].[Wydzialy](IdWydzialu),
  82. CONSTRAINT OGR_Tytul FOREIGN KEY (IdTytulu) REFERENCES [dbo].[Tytuly](IdTytulu)
  83. )
  84. -------------------------------------------------------------------------------------
  85. INSERT INTO [dbo].[Pracownicy] VALUES (1,'Stephanie','Alexander',1,4,1017,'1985-02-28',NULL)
  86. INSERT INTO [dbo].[Pracownicy] VALUES (2,'Dawn','Sharma',4,6,1792,'1992-06-03',NULL)
  87. INSERT INTO [dbo].[Pracownicy] VALUES (3,'Clayton','Ye',7,10,1363,'2010-12-04',NULL)
  88. INSERT INTO [dbo].[Pracownicy] VALUES (4,'Bradley','Xie',9,6,3452,'2011-07-12',NULL)
  89. INSERT INTO [dbo].[Pracownicy] VALUES (5,'Julia','Lopez',2,10,1243,'1999-01-18',NULL)
  90. INSERT INTO [dbo].[Pracownicy] VALUES (6,'Anna','Powell',7,9,1862,'1998-05-12',NULL)
  91. INSERT INTO [dbo].[Pracownicy] VALUES (7,'Meghan','Torres',4,1,2166,'2002-06-12',NULL)
  92. INSERT INTO [dbo].[Pracownicy] VALUES (8,'Roberto','Ramos',3,4,3627,'2002-02-14',NULL)
  93. INSERT INTO [dbo].[Pracownicy] VALUES (9,'Morgan','Bailey',8,8,3123,'    1996-02-16',NULL)
  94. INSERT INTO [dbo].[Pracownicy] VALUES (10,'Clayton','Shan',11,5,2984,'    1996-02-18',NULL)
  95. INSERT INTO [dbo].[Pracownicy] VALUES (11,'Edwin','Ye',1,8,3680,'2010-04-26',NULL)
  96. INSERT INTO [dbo].[Pracownicy] VALUES (12,'Diane','Jimenez',9,8,1270,'2010-04-26',NULL)
  97. INSERT INTO [dbo].[Pracownicy] VALUES (13,'Mallory','Dominguez',6,10,3693,'2010-08-27',NULL)
  98. INSERT INTO [dbo].[Pracownicy] VALUES (14,'Grace','Wood',6,1,1521,'2006-08-27',NULL)
  99. INSERT INTO [dbo].[Pracownicy] VALUES (15,'Erin','Rogers',5,3,2306,'2006-09-28',NULL)
  100. INSERT INTO [dbo].[Pracownicy] VALUES (16,'Joe','Ashe',3,9,2583,'2006-11-04',NULL)
  101. INSERT INTO [dbo].[Pracownicy] VALUES (17,'Alexandria','Griffin',2,3,3773,'2006-11-04',NULL)
  102. INSERT INTO [dbo].[Pracownicy] VALUES (18,'Jacob','Harris',1,10,3228,'2005-11-05',NULL)
  103. INSERT INTO [dbo].[Pracownicy] VALUES (19,'Joy','Alvarez',11,9,2079,'2005-11-06',NULL)
  104. INSERT INTO [dbo].[Pracownicy] VALUES (20,'Ian','Moore',10,6,1811,'1945-11-06',NULL)
  105. INSERT INTO [dbo].[Pracownicy] VALUES (21,'Jada','Baker',9,3,1689,'2005-11-06',NULL)
  106. INSERT INTO [dbo].[Pracownicy] VALUES (22,'Mason','Mitchell',8,10,1666,'1945-11-07',NULL)
  107. INSERT INTO [dbo].[Pracownicy] VALUES (23,'Nathan','Flores',7,4,1492,'1945-11-08',NULL)
  108. INSERT INTO [dbo].[Pracownicy] VALUES (24,'Devin','Howard',6,4,1922,'2007-11-10',NULL)
  109. INSERT INTO [dbo].[Pracownicy] VALUES (25,'Marcus','Cooper',5,10,2835,'2007-11-18',NULL)
  110. INSERT INTO [dbo].[Pracownicy] VALUES (26,'Seth','Jenkins',4,10,1496,'2007-11-28',NULL)
  111.    
  112.  
  113. /*dodanie grupy plików do bazy*/
  114. USE Uczelnia
  115. ALTER DATABASE Uczelnia
  116. ADD FILEGROUP uczelnia_file_group
  117. /*sprawdzenie grup plików*/
  118. EXEC sp_helpfilegroup
  119. /*dodanie plików do grupy plików, można dodawać więcej niż jeden plik*/
  120. ALTER DATABASE Uczelnia
  121. ADD FILE
  122.     (name='uczelnia_data2', FILENAME = 'C:\test\Uczelnia_data2.mdf',size=2),
  123.     (name='uczelnia_data3', FILENAME = 'C:\test\Uczelnia_data3.mdf',size=2)
  124.     TO FILEGROUP uczelnia_file_group
  125. /*zmiany plików w bazie danych*/
  126. USE Uczelnia
  127. ALTER DATABASE Uczelnia
  128. MODIFY FILE (name='U_data2', FILENAME ='C:\test2\ssss.ndf')
  129. /*zmiana domyślnej grupy plików*/
  130. USE Uczelnia
  131. ALTER DATABASE Uczelnia
  132. MODIFY FILEGROUP "PRIMARY" DEFAULT
  133. /*usunięcie pliku */
  134. USE Uczelnia
  135. ALTER DATABASE Uczelnia
  136. REMOVE FILE uczelnia_data3
  137. /*usunięcie grupy, nie da się usunąć grupy póki nie jest pusta*/
  138. USE Uczelnia
  139. ALTER DATABASE Uczelnia
  140. REMOVE FILEGROUP uczelnia_file_group
  141. /*sprawdzanie plików i ich nazw */
  142. SELECT
  143.     name,
  144.     physical_name
  145. FROM sys.master_files
  146. WHERE
  147.     database_id = DB_ID('Uczelnia')
  148.  
  149.  
  150.  
  151.  
  152.  
  153. 1.Sprawdzić jakie grupy plików posiada baza danych AdventureWorks2014.
  154. 2.Dodać nową grupę plików o nazwie test.
  155. 3.Dodać dwa nowe pliki danych o nazwie test.
  156. 4.Usunąć jeden z plików danych.
  157. 5.Usunąć utworzoną grupę plików.
  158.  
  159. BEGIN
  160.     USE AdventureWorks2014
  161.     EXEC sp_helpfilegroup
  162.  
  163.     ALTER DATABASE AdventureWorks2014
  164.     ADD FILEGROUP test
  165.  
  166.     ALTER DATABASE AdventureWorks2014
  167.     ADD FILE
  168.         (name='plik_1', FILENAME = 'C:\test2\plik1.mdf',size=2),
  169.         (name='plik_2', FILENAME = 'C:\test\plik2.mdf',size=2)
  170.         TO FILEGROUP test
  171.  
  172.     ALTER DATABASE AdventureWorks2014
  173.     MODIFY FILEGROUP test DEFAULT
  174.  
  175.     ALTER DATABASE AdventureWorks2014
  176.     REMOVE FILE plik_2
  177.  
  178.     ALTER DATABASE AdventureWorks2014
  179.     MODIFY FILEGROUP "PRIMARY" DEFAULT
  180.  
  181.  
  182.     ALTER DATABASE AdventureWorks2014
  183.     REMOVE FILE plik_1
  184.  
  185.     ALTER DATABASE AdventureWorks2014
  186.     REMOVE FILEGROUP test
  187. END
  188.  
  189. /* ustawienie bazy w tryb pojedynczego użytkownika */
  190. USE AdventureWorks2014
  191. ALTER DATABASE AdventureWorks2014 SET MULTI_USER
  192. /* sprawdza spójność pliki bazy danych, a dokładnie konkretnej bazy danych) */
  193. DBCC CHECKALLOC (AdventureWorks2014, NOINDEX)
  194. /* 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 */
  195. DBCC CHECKALLOC (AdventureWorks2014, REPAIR_FAST)
  196. /* stara się naprawić dane, nawet z ututatą danych, chodzi o transakcje anuluje transakcje które wiszą lub są zakleszczkone */
  197. DBCC CHECKALLOC (AdventureWorks2014, REPAIR_ALLOW_DAT_LOSS)
  198. /* 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ć*/
  199. DBCC CHECKALLOC (AdventureWorks2014, REPAIR_REBUILD)
  200. /* zmiejsza rozmiar pliku jak się tablica indeksów rozjedzie to system robi zwyczajnie nową
  201. nie ruszając starej przez co baza puchnie poniższe zapytanie wywali te złe tabele indexu z bazy
  202. ZANIM WYKONAMY SHRINKDATABASE KONIECZNA JEST KOPIA ZAPASOWA*/
  203. USE uczelnia
  204. DBCC SHRINKDATABSE (uczelnia)
  205. /* poniższe polecenie pokazuje informacje o tabeli, również jedną bardzo ważną informację w ile procentach jest zajęta strona
  206. 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
  207. 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ł
  208. a my potrzebujemy tylko przedział danych od 1 do 10, więc musimy to określić z góry*/
  209. USE [Uczelnia]
  210. DBCC showconting('dbo.Pracownicy')
  211. /*Schematy
  212. Tworzeone w kontekście bazy w której pracujemy
  213. Schematy są przypisane do konkretnej bazy danych
  214. Schematy są przypisany do bazy i użytkowników
  215. Przykład jest prosty mamy schemat o nazwie pracownik Kadr do którego przypisana jest baza kadry i uprawnienie odczytu
  216. więc jak przychodzi nowy pracownik wystarczy nadać mu login i dodać do tego schematu, a nie robić wszystko dla każdego użtkownika
  217. 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 */
  218.  
  219.  
  220. /* Wyświetlenie wszystkich dostępnych schematów dla danej bazy dancych */
  221. USE AdventureWorks2014
  222. EXEC sp_schemata_rowset
  223. /* wyświetlenie tabel i w jakich schematach pracują | relacja tabela  <> schemat */
  224. SELECT * FROM INFORMATION_SCHEMA.TABLES
  225. /* poniższe zapytanie robi dokładnie to samo co sp_chemata_rowset */
  226. SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
  227. /* rozpisana cała pojedynczą tabele, mamy pozycję kolumny i różne informację o nich */
  228. SELECT * FROM INFORMATION_SCHEMA.COLUMNS
  229. WHERE
  230.     TABLE_NAME='Person'
  231.  
  232. /*nie mieliśmy użtkownika to sobie go stworzyliśmy i daliśmy uprawnienia oczywiście */
  233. USE Uczelnia
  234. CREATE LOGIN test WITH PASSWORD ='!QAZ2wsx3edc'
  235. EXEC sp_grantdbaccess test
  236. /* teraz poniżej tworzymy pusty schemat */
  237. USE Uczelnia
  238. GO
  239. CREATE SCHEMA studenci2 AUTHORIZATION test
  240. /* jak nie ma użtkownika można go stworzyć już w skrypcie */
  241. USE Uczelnia
  242. GO
  243. /* to polecenie dokładnie robi tak że tworzymy użytkownika który nazywa się test  i loguje się za pomocą loginu test,
  244. nie muszą się nazywać tak samo, fajne to jest jak pracownik zmienia nazwisko, można mu zmienić wyświetlanie w bazie ale login
  245. pozostawić stary */
  246. CREATE USER test FOR login test
  247. GO
  248. CREATE SCHEMA studenci AUTHORIZATION test
  249. /* usuwanie scheamtu */
  250. DROP SCHEMA studenci
  251. /* zmiana właściciela schematu */
  252. ALTER AUTHORIZATION ON SCHEMA::studenci2 TO test
  253. /* 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ń
  254. to zapytanie rozwiąże sprawę */
  255. EXEC Uczelnia..sp_addsrvrolemember @loginame = N'test', @rolename = N'sysadmin'
  256. /* krótki skrypt który sprawdza czy schemat istnieje i jeśli istnieje wywala go a jak nieistnieje to go tworzy */
  257. USE Uczelnia
  258.  
  259. IF EXISTS (SELECT * FROM sys.schemas WHERE name='studenci2')
  260.     BEGIN
  261.         EXEC ('DROP SCHEMA [studenci2]')
  262.     END
  263. ELSE
  264.     BEGIN
  265.         EXEC('CREATE SCHEMA [Studenci2]')
  266.     END
  267. /* Ważne informacje jeśli dajemy coś w [] to tylko po to żeby wykluczyć że nie jest to słowo kluczowe
  268. a jeśli robimy jakiś PRINT to najlepiej przed nawiasem dać N('coś tam chce wypisać') to N powoduje że zdanie jest pobierane
  269. 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
  270. w zdaniu */
  271.  
  272. /* tworzy schamat użytkownika i login, użytkownika ustanawia jako właściciela schaematu są if które sprawdzają czy te dane istnieją
  273. jeśli istnieją to je usuwa i tworzy na nowo */
  274. DECLARE @schemat varchar(8)
  275. DECLARE @user varchar(4)
  276. DECLARE @login varchar(4)
  277. SET @login = 'test'
  278. SET @user = 'test'
  279. SET @schemat = 'studenci'
  280.  
  281. USE [Uczelnia]
  282.  
  283. IF EXISTS (SELECT * FROM sys.schemas WHERE name=@schemat)
  284.     BEGIN
  285.         EXEC ('DROP SCHEMA [studenci]')
  286.         EXEC('CREATE SCHEMA [studenci]')
  287.     END
  288. ELSE
  289.     BEGIN
  290.         EXEC('CREATE SCHEMA [studenci]')
  291.     END
  292. IF EXISTS (SELECT * FROM sys.syslogins WHERE name=@login)
  293.     BEGIN
  294.         EXEC ('DROP LOGIN test')
  295.         EXEC('CREATE LOGIN test WITH PASSWORD =''!QAZ@WSX33dd''')
  296.     END
  297. ELSE
  298.     BEGIN
  299.         EXEC('CREATE LOGIN test WITH PASSWORD =''!QAZ@WSX33dd''')
  300.     END
  301. IF EXISTS (SELECT * FROM sys.sysusers WHERE name=@user)
  302.     BEGIN
  303.         EXEC('DROP USER test')
  304.         EXEC ('CREATE USER test FOR LOGIN test')
  305.         EXEC ('ALTER AUTHORIZATION ON SCHEMA::studenci TO test')
  306.     END
  307. ELSE
  308.     BEGIN
  309.         EXEC ('CREATE USER test FOR LOGIN test')
  310.         EXEC ('ALTER AUTHORIZATION ON SCHEMA::studenci TO test')
  311.     END
  312. /* możliwe połączenia z MS SQL serwerem
  313.     OLE DB(zewnętrze sterowniki oferowane przez np windows
  314.     ODBC niezależne od języka programowania, nie ma znaczenia system operacyjny Standard interfejsu to API
  315.  
  316.     Narzędzia tekstowe za pomocą konsoli tekstowej możemy
  317.     POłączyć się z SerweremMS SQL
  318.     Wprowadzania instrukcji Transact-SQL
  319.     itd.
  320.  
  321.     SQLCMD + najnowsze narzędzie linii komend
  322.     OSQL - oparty na sterowniku odbc
  323. 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>
  324.  
  325.    
  326.  
  327.  
  328.  
  329.  
  330.  
  331. EXEC sp_helplogins
  332. EXEC sp_helplogins [użytkownik]
  333.  
  334.  
  335. CREATE LOGIN [test] WITH PASSWORD=’123456’;
  336. EXEC sp_addlogin [test2], ‘123456’;
  337. EXEC sp_addlogin [test3];
  338.  
  339.  
  340. EXEC sp_who
  341.  
  342. Alter database sss SET SINGLE_USER WITH ROLLBACK
  343. Baza do odczytu jedne osobie z wycofaniem transakcji jeśli takie są
  344. ALTER DATABASE ssss SET MULTI_USER
  345.  
  346.  
  347. ALTER LOGIN test WITH PASSWORD = ‘1111’
  348. EXEC sp_password NULL, ‘1233’
  349.  
  350. EXEC sp_defaultdb test, master;
  351. Ustawianie bazy maste jako domyślnej dla użytkownika test
  352.  
  353. EXEC sp_defaultlanguage test, polish;
  354.  
  355. CREATE LOGIN test4 WITH PASSWORD =’123456’ MUST_CHANGE DEFAULT_DATABAE=master, DEFAULT_LANGUAGE=polish, CHECK_EXPIRATION=ON, CHECK_POLICY=ON
  356. ALTER LOGIN test ENABLE/DISABLE DENY CONNECT SQL TO master
  357. EXEC sp_helpsrvrole
  358. Wyświetla role
  359. EXEC addsrvrolemember test, securityadmin
  360. Dodanie roli użytkownikowi
  361.  
  362. EXEC sp_dropsrvrolemember test, securityadmin
  363.  
  364.  
  365. USE uczelnia
  366. EXEC sp_tables    -- @table_name
  367. EXEC sp_help
  368. DBCC checktable ‘pracownicy’
  369.  
  370.  
  371. Własne typy danych:
  372. EXEC sp_addtype ‘kod_pocztowy’, ‘char(6)’, null
  373.  
  374. Usuwanie:
  375. EXEC sp_droptype ‘kod_pocztowy’
  376.  
  377.  
  378. USE uczelnia
  379. IF OBJECT_ID’
  380.  
  381.  
  382. AUTO_INCREMENT w tSQL = IDENTITY
  383.  
  384. BACKUP DATABASE nazwa
  385. TO DISC=’c:/bleble.bak
  386. WITH FORMAT,’
  387. MEDIANAME=’test2’,
  388. NAME = ‘test’’
  389. GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement