Professional Documents
Culture Documents
1
მონაცემთა ბაზების მართვის სისტემა - Microsoft SQL Server
შესავალი
2
ლექცია №1
ამ უტილეტით შეიძლება:
4
ზემოთ განხილული MS SQL Server-ის ყველა სამსხურის მუშაობის მართვა. შეიძლება
გაუშვათ, შეაჩეროთ ან მთლიანად გააჩეროთ ზემოთ ჩამოთვლილი სამსახურიდან ნებისმიერი,
აგრეთვე შეუძლია მიუთითოს თუ რომელი მომხმარებლის სახელით გაუშვას ის.
ქსელური ბიბლიოთეკის პარამეტრების განსაზღვრა, რომელიც MS SQL Server-თან
ურთიერთქმედებას უზრუნველყოფს. შეიძლება აირჩიოთ სერვერზე წვდომის ერთი ან
პირდაპირ რამდენიმე მეთოდი:
o სახელდებული არხები (Named Pipes) - გამოიყენება მაშინ, როცა TCP/IP
პროტოკოლი მიუწვდომელია;
o TCP/IP პროტოკოლების სტეკი (გამოიყენება გულისხმობით) - შეესაბამება
იმტერნეტ ქსელის გამოყენებისათვის;
o გამყოფი მეხსიერება (Shared Memory) - შეესაბამება ლოკალური გამოყენებისათვის,
მაგალითად, ვებ-დამატება და MS SQL Server ერთ კომპიუტერზეა, უზრუნველყოფს მუშაობის
მაქსიმალურ სიჩქარეს;
o ვირტუალური ინტერფეისის ადაპტერი (Virtual Inteface Adapter, VIA) - გამოიყენება
სპეციალური მოწყობილობის გამოყენებით სერვერი-სერვერი ტიპის ჩართვისათვის;
კლიენტს ქსელური ბიბლიოთეკის კონფიგურირება, რომელიც გამოიყენება MS SQL Server-
ზე წვდომისათვის. სერვერზე წვდომის მეთოდის დაყენების შემდეგ, შეიძლება კლიენტების
პროტოკოლების გაკეთება. SQL Server Native Client 10.0 cofiguration კვანძი შეიცავს ორ ჩანართს:
Client protocols Aliases და Aliases (სურ.1.1)
5
Aliases კვანძი შესაძლებლობას იძლევა სერვერისათვის ფსევდონიმის შექმნას. ფსევდონიმი
(Alias) არის შეერთების ალტერნატიული სახელი, რომელიც განსხვავებული იქნება სერვერის
სახელისაგან. ფსევდონიმის შექმნისას შეიძლება პროტოკოლისა და პორტის არჩევა, რომლის
საშუალებით შეიძლება სერვერთან დაკავშირება.
6
ლექცია №2
7
1.2.3. მოთხოვნების რედაქტორი (Query Editor)
სამუშო არე
ობიექტთა მიმომხილველი
(გადასვლების პანელი)
8
o Results to File - ანალოგიურია Results in Text-ის, მხოლოდ გამოტანა ხორციელდება
არა ეკრანზე, არამედ ფაილში.
Management Studio საშუალებას იძლევა მოთხოვნების რამდენიმე ფანჯარა გახსნათ და
ერთდროულად იმუშავოთ რამდენიმე მონაცემთა ბაზასთან. თითოეულ ფანჯარაში MS SQL
Server-თან მყარდება საკუთარი დაკავშირება, რომელიც აღწერილია SQL Server Contiguration
Manager-ში, მომხმარებელთა ჩანაწერთა აღწერის სხვადასხვა საფუძველზე და მათი პაროლებით.
ახალი დაკავშირებისათვის გამოიყენება FileNewDatebse Engine Query ბრძანება.
მიმდინარე დაკავშირებისას მოთხოვნის არის შემცველობა შეიძლება შეინახოთ გარე
დამგროვებელზე ფაილის სახით შემდეგი FileSave ბრძანებით.
9
სურ.1.5. მიმდინარე ბაზის არჩევის ფანჯარა
1.3.2. მბMaster
1.3.3. მბ model
1.3.4. მბ msdb
ამ მონაცემთა ბაზაში SQL Server Agent ინახავს ყველა სისტემურ დავალებას. მაგალითად,
თუ მოცემულია განრიგად რეზერვირება, მაშინ msdb-ში გამოჩნდება სპეციალური ჩანაწერი.
ანალოგიურად მოცემული მბ გამოიყენება და სხვა MS SQL Server ქვესისტემად, მაგალითად,
SQL Server Inregration Services.
1.3.5. მბtemdb
13
ლექცია №3
შესავალი. 1970 წლებში შემუშავდა სპეციალური SEQUEL (Structured English Query Language)
ენა, რომელიც მოგვიანებით SQL ენის სახელწოდებით შეიცვალა. 1986 წელს კომპანია ANSI
(American National Standards Institute) მიიღო ამ ენის პირველი სტანდარტი. ბოლო სტანდარტს
წარმოადგენს ISO SQL:2008.
SQL (Structured Query Language) ენა წარმოადგენს არაპროცედურ ენას, რომელთანაც წვდომა
არამარტო მხოლოდ პროგრამისტებს შეუძლიათ არამედ ჩვეულებრივ მომხმარებლებსაც. მაგრამ
ბოლო დროს ამ ენის სინტაქსი თანდათანობით უფრო რთულდება, ამიტომ უფრო მეტად იგი
პროგრამისტებისათვისა განკუთვნილი, ვიდრე ჩვეულებრივი მომხმარებლებისათვის.
მიუხედავათ იმისა, რომ არსებობს SQL ენის სტანდარტი, მაინც ყოველი მბმს იყენებს ამ ენის
თავის გაფართოებას. ამის მიზეზი არის ის რომ SQL არის არამარტო მოთხოვნების ენა, არამედ
როგორც დაპროგრამების ენა. ამისათვის კი როგორც წესი შემოდის ე. წ. შენახული
პროცედურები.
მონაცემთა ბაზის მართვის სისტემა Microsoft SQL Server იყენებს SQL ენის თავის
გაფართოებას, რომელსაც Transact–SQL ეწოდება. მასში შედის:
მართვადი კონსტრუქციები;
ლოკალური ცვლადები;
დამატებითი ფუნქციები (მათემატიკური, სტრიქონული და სხვა);
Window-ის აუტენტიფიკაციის მხარდაჭერა.
MS SQL Server მხარს უჭერს ყველა ძირითად მარტივ მონაცემთა ტიპს, რომელიც
გამოიყენება დაპროგრამების თანამედროვე ენებში. MS SQL Server 2008-ში დამატებულია
რამდენიმე ახალი მონაცემთა ტიპი, ხოლო არსებულიდან რამდენიმეს გამოყენება არ არის
რეკომენდირებული.
MS SQL Server-ში მონაცემთა ტიპები შეიძლება დაიყოს შვიდ კატეგორიად.
14
2.1.1. მთელი რიცხვები:
15
SmallDateTime (4 ბაიტი). მნიშვნელობების დიაპაზონი 1900 წლის 1 იანვარიდან 2079 წლის
6 ივნისამდე (ერთი წუთი სიზუსტით);
DateTimeOffset (8-10 ბაიტი). ანალოგიურია DateTime ტიპის, მაგრამ ინახავს აგრეთვე UTC
(Universal Time Coordinated – უნივერსალური სინქრონული დრო) დროსთან ფართობით
წანაცვლებას;
Date (3 ბაიტი). ინახავს მხოლოდ თარიღს. მნიშვნელობების დიაპაზონი 1 იანვარი 0001
წლიდან 31 დეკემბერი 9999 წლამდე;
Time(3–5 ბაიტი). ინახავს მხოლოდ დროს 0,1 მწმ სიზუსტით.
16
2.1.7. სხვა ტიპის მონაცემები:
შესავალი. მონაცემთა ბაზის ნებისმიერ ობიექტს ბაზის შიგნით უნდა ჰქონდეს უნიკალურ
სახელი. სახელზე დაყრდნობით ხორციელდება ამ ობიექტზე მიმართვა. ობიექტების სახელებს
იდენტიფიკატორებს უწოდებენ. Transact-SQL ობიექტის დასათაურებაზე გარკვეულ
შეზღუდვებს აწესებს:
სახელის პირველი სიმბოლო უნდა იყოს ლათინური (A-Z, a-z) ალფაბეტის, ან @,# ან _
სიმბოლოები, ანუ დაუშვებელია ციფრებისა და სხვა სპეციალური სიმბოლოების გამოყენება.
სახელის დანარჩენს ნაწილში შეიძლება ალფაბეტის ნებისმიერი სიმბოლოს ციფრების და
რამდენიმე სპეციალური სიმბოლოების გამოყენება;
ჩვეულებრივი ობიექტის სახელის საერთო სიგრძე არ უნდა აღემატებოდეს 128 სიმბოლოს,
ხოლო დროებითი ობიექტებისათვის - 116 სიმბოლოს;
სახელის შიგნით აკრძალულია ჰარის (ცარიელი სიმბოლოს), ფრჩხილების, შემდეგი
სიმბოლოების ˜, !,%, ^, & და სხვათა გამოყენება;
ობიექტის სახელი არ უნდა ემთხვეოდეს დარეზერვირებულ სიტყვას და უკვე არსებული
ობიექტის სახელს;
17
თუ ობიექტის სახელი შეიცავს ჰარს (ცარიელ სიმბოლოს) ან ემთხვევა დარეზერვირებულ
სიტყვას, მაშინ ის აუცილებლად უნდა ჩაისვას [ ] კვადრატულ ფრჩხილებში.
შენიშვნა: Transact-SQL წარმოადგენს CASE-არამგძნობიარე ენას, ანუ სიმბოლოების
რეგისტრს არ განასხვავებს.
ლოკალური ცვლადების სახელები უნდა აკმაყოფილებდეს ობიექტის დასათაურების
ჩამოთვლილ წესებს და ყოველთვის უნდა იწყებოდეს @ სიმბოლოთი. ცვლადის მოქმედების არე
იზღუდება ოპერატორების პაკეტით ან პროცედურით, რომლითაც ის იქნა გამოცხადებული.
ბრძანების სინტაქსია:
SET @ცვლადის_სახელი = გამოსახულება
IF<პირობა>
ოპერატორი
[ELSE
ოპერატორი]
19
2.3.3. CASE კონსტრუქცია
1. შესატანი გამოსახულებით:
CASE <შესატანი გამოსახულება>
WHEN <გამოსახულება when> THEN <შედეგი>
[...]
[ELSE <შედეგი>]
END
CASE
WHEN <ლოგიკური გამოსახულება> THEN <შედეგი>
[...]
[ELSE <შედეგი>]
END
Transact-SQL მხარს უჭერს ერთადერთ ციკლის ტიპს. WHILE ციკლის სინტაქსი ასე
ჩაიწერება:
WHILE პირობა
ოპერატორი
[BREAK | CONTINUE]
BEGIN TRY
{ <SQL გამოსახულება> }
END TRY
BEGIN CATCH
{ <SQL გამოსახულება> }
END CATCH [ ; ]
21
BEGIN TRY... END TRY ბლოკში სრულდება პოტენციურად სახიფათო ბრძანებები, თუ ამ
შემთხვევაში მოხდება შეცდომა 11-19 დონეზე, მაშინ შესრულება გადაეცემა CATCH ბლოკს.
შეცდომების დონეები:
1 – 10 საინფორმაციო შეტყობინება. მაგალითად, აგრეგირების ფუნქციის შესრულებისას
NULL მნიშვნელობის აღმოჩენა.CATCH ბლოკს მოცემული შეცდომა არ გადაეცემა, ამიტომ
შეცდომის შესახებ ინფორმაციის მიღებისათვის გამოიყენება @@ERROR ფუნქცია;
11 – 19 ფარდობითად სერიოზული შეცდომა. მაგალითად, გარე გასაღებზე შეზღუდვის
დარღვევა;
20 – 25 ძალიან სერიოზული შეცდომა. ეს შეცდომა არის სისტემურ დონეზე, ამიტომ
კოდით არ შეიძლება მისი წარმოშობის დანახვა. ასეთი შეცდომა წყვეტს მიმდინარე შეერთებას
და აჩერებს ბრძანებების შესრულებას.
2.3.7. კომენტარები
24
– კვირის დღე (შემოკლებით dw, w), hour – საათი (შემოკლებით hh), minute – წუთი (შემოკლებით
mi ან n), second – წამი (შემოკლებით ss ან s), millisecond – მილიწამი (შემოკლებით ms),
microsecond – მილიწამი (შემოკლებით mcs), nanosecond – მილიწამი (შემოკლებით ns) და სხვა;
25
@@IDLE - განსაზღვრავს მილიწამების რაოდენობას, რომელიც გავიდა MS SQL Server ბოლო
გაშვების დროდან;
NewID() - აგენერირებს UniqueIdentifier ტიპის ახალ მნიშვნელობას;
Permissions ([ObjectID[, ‗column‘]]) - აბრუნებს მიმდინარე მომხმარებლისათვის წვდომის
უფლებებზე ინფორმაციას. ObjectID არგუმენტი მიუთითებს მონაცემთა ბაზის ობიექტის
იდენტიფიკაციის ნომერს. მისი სახელით ობიექტის იდენტიფიკაციის ნომერის მიღებისათვის
გამოიყენება Object_ID ('სახელი‘') ფუნქცია;
მოცემული ფუნქციის შედეგი არის 32-ბიტიანი მნიშვნელობა, რომლის თითოეული ბიტი
შეესაბამება წვდომის ამა თუ იმ წესს. თუ ამ ბიტის მნიშვნელიბა ტოლია 1-ის, მაშინ ობიექტზე
წვდომა ნებადართულია.
იმისათვის, რომ შეამოწმოთ რომელიმე ცხრილის ველზე წვდომა, აუცილებელია
მიუთითოთ ამ ცხრილის მონაცემთა იდენტიფიკაციის ნომერი და ‗column‘ არგუმენტში
მიუთითოთ ამ ველის სახელი.
26
სურ.2.1. Management Studio-ში გამართვის ფანჯარა.
ყვითელი ისარი მიუთითებს მიმდინარე გამოყენებულ სტრიქონს;
წითელი ბურთულა - გაჩერების წერტილს.
27
ლექცია №4
28
2. სამომხმარებლო ფაილების ჯგუფი. ეს ნებისმიერი ჯგუფია, რომლებიც
მომხმარებლის მიერ იქნა შექმნილი მონაცემთა ბაზაში.
ჟურნალის ფაილები არ შედის არცერთ ფაილურ ჯგუფში, ისინი მუშავდება ცალკე
ჩვეულებრივი ფაილებისაგან.
ამრიგად, თითოეული მონაცემთა ბაზა მინიმუმ ორი ფაილისაგან შედგება: ერთი
მონაცემთა ბაზისათვის და ერთი ტრანზაქციების ჟურნალისათვის.
მონაცემთა ბაზის ყველა ფაილის ზომა შეიძლება ავტომატურად გაიზარდოს. ეს
შესაძლებლობა ფაილის შექმნის დროს განისაზღვრება.
მონაცემთა ბაზაში გამოყენებულ თითოეულ ფაილს ორი სახელი აქვს:
1. ფაილის ლოგიკური სახელი (Logical File Name). ის გამოიყენება Transact-SQL
ბრძანებებში კონკრეტულ ფაილთან მიმართვისათვის.
2. ფაილის სახელი ოპერაციულ სისტემაში (OS File Name). ეს არის ფაილის ფიზიკური
სახელი. ამ სახელით ინახება ფაილი დისკზე.
მონაცემთა ბაზის შექმნა შეიძლება Microsoft SQL Server Management Studio უტილიტის
ინსტრუმენტის (ან Transact-SQL შესაბამისი კოდის) საშუალებით.
სერვერთან მუშაობის დასაწყებად და Management Studio საშუალებით ახალი მონაცემთა
ბაზის შექმნისათვის, მონაცემთა ბაზაზე სახელის შეცვლისათვის და მონაცემთა ბაზის
წაშლისათვის საჭიროა:
1. შეასრულეთ StartAll ProgramsMicrosoft SQL Server 2008Microsoft SQL Server
Management Studio ბრძანება. გაიხსნება Microsoft SQL Server Management Studio ფანჯარა (სურ.3.1).
Server name ველში ჩანს სერვერის სახელი. საჭიროების შემთხვევაში შეგაქვთ სხვა სერვერის
სახელი. Authentication ველში ჩანს Windows-ის აუტენტიფიცირების რეჟიმი - Windows
Authentication. საჭიროების შემთხვევაში ირჩევთ SQL სერვერის აუტენტიფიცირების რეჟიმს –
Microsoft SQL Server Authentication (Login ველში შეგაქვთ მომხმარებლის სახელი, Password ველში
კი - პაროლი). შემდეგ, მაუსი დააწკაპუნეთ Connect ღილაკზე. ეკრანზე გამოვა Management Studio
ფანჯარა (სურ.3.1). ამ ფანჯარაში წარმოდგენილია: ფანჯრის მენიუ, ინსტრუმენტთა პანელი,
29
―Object Explorer‖ (ობიექტთა მიმომხილველი ანუ გადასვლების (ნავიგაციის) პანელი) და სამუშაო
არე;
2. Management Studio ფანჯრის გადასვლების პანელში Databases ფოლდერზე (სურ.3.1)
დააწკაპუნეთ მაუსის მარჯვენა ღილაკზე და წარმოდგენილ მენიუში აირჩიეთ New Database
პუნქტი. ეკრანზე გამოსული ფანჯრის (ეკრანის) ზედა ნაწილში განლაგებულია ორი პარამეტრი
(სურ.3.1): Database name (მბ სახელი) და Owner (მფლობელი). Database name ველში შეიტანეთ
ახალი მონაცემთა ბაზის სახელი (მაგალითად, Students). Owner პარამეტრი დატოვეთ
შეუცვლელად. აქვეა შესაძლებელი ახალი მონაცემთა ბაზის (New Database) ფაილის
პარამეტრების გაწყობა. კერძოდ, ფანჯრის მარცხენა მხარეს მოცემულია Selecs a page სია. ეს სია
გაწყობათა ჯგუფებს შორის გადართვის საშუალებას იძლევა. მთავარი გაწყობის არჩევისათვის
აუცილებელია General პუნქტზე დაწკაპუნება.
30
გაადვილების მიზნით უმჯობესია ფაილები ჯგუფებში მოათავსოთ. არსებობს ფაილების
შემდეგი ტიპის ჯგუფები: ფაილების ძირითადი ჯგუფი (Primary File Group), მომხმარებლების
მიერ შექმნილი ფაილების ჯგუფი (User-defined File Group) და ფაილების ნაგულისხმევი ჯგუფი
(Default File Group). ნებისმიერი ფაილი შეიძლება ჩართული იყოს ფაილების მხოლოდ ერთ
ჯგუფში. არ შეიძლება ფაილების ჯგუფის განსაზღვრა ტრანზაქციების ჟურნალის
ფაილებისთვის. თუ მონაცემთა ბაზაში არ იქმნება ფაილების ჯგუფები, მაშინ ყველა ობიექტი
მოთავსდება ფაილების ძირითად ჯგუფში, რომელიც ავტომატურად იქმნება. ფაილთა ჯგუფის
გაწყობა შეიძლება Filegroup გაწყობათა ჯგუფში.
Initial size (MB) - მონაცემთა ფაილის საწყისი ზომა და ტრანზაქციის ჟურნალი
მეგაბაიტებში;
Autogrowth - ფაილის ზომის ავტომატური გაზრდა, როგორც კი ფაილში ჩაიწერება
ინფორმაცია, მისი ზომა ავტომატურად იზრდება იმ სიდიდით, რომელიც მითითებული იყო
Autogrowth პარამეტრში. გაზრდა შეიძლება მისცეთ, როგორც მეგაბაიტებში, ისე პროცენტებში.
ასევე შეიძლება მისცეთ ფაილს მაქსიმალური ზომა. ამ პარამეტრის ცვლილება შეიძლება, <<...>>
ღილაკზე დაწკაპუნებით. მოცემულ შემთხვევაში ფაილის ზომა (სურ.3.1) არაა შემოსაზღვრული.
მონაცემთა ფაილი იზრდება 1 მეგაბაიტით, ხოლო ტრანზაქციის ჟურნალის ფაილი 10 %-ით;
Path - გზა ფოლდერისაკენ, სადაც ინახება ფაილები. ამ პარამეტრის ცვლილება შეიძლება
<<...>> ღილაკზე დაწკაპუნებით;
File Name - ფაილის სახელი. გულისხმობით ფაილის სახელი ანალოგიურია მისი
ლოგიკური სახელისა, მაგრამ მონაცემთა ფაილს აქვს mdf გაფართოება.
მოცემულ შემთხვევაში ყველა პარამეტრი დატოვეთ უცვლელი.
31
სურ.3.2. მონაცემთა ფაილის და ტრანზაქციის ჟურნალის პარამეტრების არჩევის ფანჯარა
32
სურ.3.3. მონაცემთა ფაილის და ტრანზაქციის ჟურნალის პარამეტრების არჩევის ფანჯარა
მონაცემთა ბაზის მართვის სისტემა MS SQL Server საშუალებით შესაძლოა ცხრილის შექმნის
ორი ვარიანტი: გრაფიკული ინტერფეისის Managament studio–ს ან SQL ბრძანების გამოყენებით
(ეს უკანასკნელი განხილული იქნება მოგვიანებით).
თქვენს მიერ შექმნილი მონაცემთა ბაზის (მაგალითად, Students) ყველა ცხრილი ინახება ამ
მონაცემთა ბაზის Tables ქვეფოლდერში, რომლის ნახვაც შეგიძლიათ ობიექტთა მიმომხილველში
(სურ.3.4).
33
სურ.3.4. ობიექტთა მიმომხილველი (გადასვლების პანელი)
34
შევიშვნა: ველის განსაზღვრის ცხრილის ქვემოთ მოთავსებულია მონიშნული ველის
თვისებების (Column Properties) ცხრილი. მოცემულ ცხრილში შესაძლებელია ველის თვისებების
შეცვლა.
3. ველთა განსაზღვრის ცხრილში შეიტანეთ Column Name, Data Type და Allow Nulls
სვეტების მნიშვნელობები ისე, როგორც ეს 3.6–ე სურათზეა მოცემული. Studentis_Id ველს
მიანიჭეთ გასაღები (მონიშნეთ ეს ველი და ინსტრუმენტთა პანელზე მაუსი დააწკაპუნეთ
გასაღების ღილაკზე ან შეასრულეთ Table Designer მენიუს Set Primary Key ბრძანება).
35
Gvari სახელის ნაცვლად შეგიძლიათ შეიტანოთ N'გვარი', Saxeli სახელის ნაცვლად შეგიძლიათ
შეიტანოთ N'სახელი' და ა.შ.
36
სურ.3.8. ახალი ცხრილის ველების შექმნის ფანჯარის ფრაგმენტი
Id, I, II, III, gamocda და krediti ველების ტიპი რიცხვითია. Id ველს მიანიჭეთ გასაღები. Id
ველი, რომ გახადოთ მთვლელად, ამისათვის მონიშნეთ ეს ველი. ცხრილის თვისებებში
გამოჩნდება Id ველის თვისებები. გაშალეთ Identily Specification ჯგუფის თვისებები. (Is Identity)
თვისებაში დააყენეთ Yes მნიშვნელობა. შეიტანეთ Identity და Identity seed თვისებებში ერთი
(სურ.3.9). ეს თვისება გიჩვენებთ, რომ Id ველის მნიშვნელობა დაიწყება 1, 2 და ა.შ.;
37
სურ.3.10. Studentebi ცხრილში შეტანილიმონაცემების ფრაგმენტი
38
მონაცემების გაცვლა
39
სურ.4.1. Access სისტემიდან SQL სერვერზე მონაცემების იმპორტის დაწყების ფანჯარა
სურ.4.2. Access სისტემიდან SQL სერვერზე მონაცემების იმპორტის მომდევნო საფეხურის ფანჯარა
სურ.4.3. Access სისტემიდან SQL სერვერზე მონაცემების იმპორტის მომდევნო საფეხურის ფანჯარა
40
(სურ.4.4) ირჩევთ Copy data from one or more tables or views გადამრთველს და მაუსი დააწკაპუნეთ
Next ღილაკზე. გახსნილ ფანჯარაში გამოჩნდება University.mdb მონაცემთა ბაზის ობიექტები,
კერძოდ ცხრილები.
სურ.4.4. Access სისტემიდან SQL სერვერზე მონაცემების იმპორტის მომდევნო საფეხურის ფანჯარა
სურ.4.5. Access სისტემიდან SQL სერვერზე მონაცემების იმპორტის მომდევნო საფეხურის ფანჯარა
სურ.4.6. Access სისტემიდან SQL სერვერზე მონაცემების იმპორტის მომდევნო საფეხურის ფანჯარა
41
სურ.4.7. Access სისტემიდან SQL სერვერზე მონაცემების იმპორტის მომდევნო საფეხურის ფანჯარა
42
(სურ.4.9) ირჩევთ მონაცემების წყაროს, საიდანაც უნდა შესრულედეს მონაცემების გადაწერა.
Database ველში ჩანს Studentebi მონაცემთა ბაზა, საიდანაც შესრულდება ცხრილების გადაწერა.
ირჩევთ აუტენტიფიცირების რეჟიმს და მაუსი დააწკაპუნეთ Next ღილაკზე. მომდევნო
ფანჯარაში (სურ.4.10) ირჩევთ მონაცემების მიმღებს. Destination სიიდან ირჩევთ Microsoft Access
ელემენტს. Browse ღილაკით ირჩევთ საჭირო ფაილს (ფაილებს). Next ღილაკზე მაუსის
დააწკაპუნების შემდეგ გაიხსნება სურ.4.11-ზე ნაჩვენები ფანჯარა. ამ ფანჯარაში გამოჩნდება
Studentebi მონაცემთა ბაზის ობიექტების სია. მონიშნეთ სასურველი ცხრილები. ისევ მაუსი
დააწკაპუნეთ Next ღილაკზე. Finish ღილაკზე მაუსის დაწკაპუნებით დაიწყება მონაცემების
ექსპორტი. ექსპორტის შემდეგ გახსნათ Studentebi.mdb ფაილი. Tables განყოფილებაში დაინახავთ
ორივე გადაწერილ ცხრილს.
43
სურ.4.11. SQL სერვერიდან Access სისტემაში მონაცემების ექსპორტის ფანჯარა
44
ლექცია №5
45
სურ.5.1. მოთხოვნის ჩაწერის ფანჯარა
ვარსკვლავი.
AS საკვანძო სიტყვა საშუალებას იძლევა საშედეგო მონაცემთა ნაკრებში ველის
ჩვეულებრივი სახელი შეცვალოთ ფსევდონიმით. ფსევდონიმის სახელი უნდა აკმაყოფილებდეს
ობიექტზე სახელის დარქმევის წესებს. თუ აუცილებელია დაუშვებელი სიმბოლოების
46
გამოყენება (ჰარის ან ნაციონალური ალფაბეტი), მაშინ ფსევდონიმის სახელი ჩაისმება
კვადრატულ ფრჩხილებში.
ამრიგად, SELECT გამოსახულება-მოთხოვნაში აუცილებელ საკვანძო სიტყვას წარმოადგენს
სიტყვა FROM (დან). FROM საკვანძო სიტყვის შემდეგ მითითებულია იმ ცხრილთა სახელები,
რომლებიდან ხდება ინფორმაციის ამორჩევა. ცხრილთა ველთა სახელები ერთმანეთისაგან
გამოიყოფა მძიმით.
მაგალითები:
SELECT *
FROM [students].[dbo].[studentebi]
47
სურ.5.4. მოთხოვნის შედეგი
48
SELECT TOP 10 Gvari, Saxeli, Safexuri
FROM [students].[dbo].[studentebi]
49
თ) დაწერეთ მოთხოვნა, რომლის შედეგად მიიღებთ ცხრილს, რომელშიც იქნება
სტუდენტების პირადი ნომრები (kodi) და შეფასებების (ქულათა) ჯამი:
50
შენიშვნა: N'ბერიძე' ჩანაწერში N სიმბოლო იწერება ნაციონალური ალფაბეტის
(მაგალითად, ქართულის) გამოყენების გამო.
51
FROM students.dbo.studentebi
52
სურ.5.17. მოთხოვნის შედეგი
53
ROUND(2975.733, -2) AS [დამრგვალება წერტილამდე]
54
სურ.5.24. მოთხოვნის შედეგი
55
სურ.5.28. მოთხოვნის შედეგი
56
სურ.5.32. მოთხოვნის შედეგი
ი) მოცემულია ორი ფრაზა (სტრიქონი): batumi და kargi qalaqia batumi (მეორე სტრიქონში
მეორდება პირველი სტრიქონი). დაწერეთ მოთხოვნა, რომელიც გამოიტანს მეორე სტიქონში
პირველი სტრიქონის პირველი სიმბოლოს რიგითობის ნომრს:
კ) მოცემულია ორი ფრაზა (სტრიქონი): batumi და batumi kargi qalaqia batumi. მეორე
სტრიქონში მეორდება პირველი სტრიქონი. დაწერეთ მოთხოვნა, რომელიც ძებნის დაწყების
რიგითობის ნომრის მითითებით გამოიტანს მეორე სტიქონში პირველი სტრიქონის პირველი
სიმბოლოს რიგითობის ნომრს:
57
სურ.5.35. მოთხოვნის შედეგი
მ) მოცემულია სამი ფრაზა (სტრიქონი): batumi kargi qalaqia, batumi და gori. დაწერეთ
მოთხოვნა, რომელიც პირველ სტრიქონში არსებულ ფრაზას იმ შემთხვევაში შეცვლის მესამე
სტრიქონში არსებული ფრაზით, თუ მეორე სტრიქონის ფრაზის ნაწილი ემთხვევა პირველი
სტრიქონის ფრაზას:
58
სურ.5.39. მოთხოვნის შედეგი
FROM [students].[dbo].[studentebi]
SELECT STR(32634.78795, 9, 3)
59
კ) დაწერეთ მოთხოვნა, რომელიც შეცვლის სასურველ ფრაზას:
60
ო) დაწერეთ მოთხოვნა, რომელიც მოცემული ფრაზის (სტრიქონის) სიგრძეს (სიმბოლოთა
რაოდენობას) დაადგენს და გამოიტანს მოცემული მნიშვნელობის უნიკოდ-სიმბოლოს:
61
ველის მნიშვნელობასთან ერთად. ხოლო ამ ველების მნიშვნელობებს შორის შეიტანეთ
სპეციალური სიმბოლო (მაგალითად, „წერტილი―):
მაგალითები
63
სურ.5.54. მოთხოვნის შედეგი
IF ISDATE('2013-03-04 10:23:45.133')=1
PRINT N'სწორია'
ELSE
PRINT N'არ არის სწორი'
64
სურ.5.58. მოთხოვნის შედეგი
65
სურ.5.62. მოთხოვნის შედეგი
66
სურ.5.65. მოთხოვნის შედეგი
SET DATEFIRST 4
SELECT @@DATEFIRST AS 'პირველი დღე',
DATEPART(dw, GETDATE()) AS 'დღევანდელი დღე'
67
5.1.5. კონფიგურირების ფუნქციებთან მუშაობის მაგალითები
68
FROM students.dbo.studentebi
70
ა) დაწერეთ მოთხოვნა, რომელიც shefaseba ცხრილში „საკმარისს― მიანიჭებს ცხრილის იმ
ჩანაწერებს, რომლებსაც გამოცდაში მიღებული აქვთ 20-დან 25 ქულა, „კარგს― მიანიჭებს
ცხრილის იმ ჩანაწერებს, რომლებსაც გამოცდაში მიღებული აქვთ 30-დან 40 ქულა. ხოლო
„დამაკმაყოფილებელს― მიანიჭებს ცხრილის დანარჩენ ჩანაწერებს:
SELECT *, CASE
71
სურ.5.81. მოთხოვნის შედეგი
SELECT CASE
WHEN EXISTS (SELECT * FROM students.dbo.studentebi) THEN N'არის ჩანაწერი'
ELSE
N'არ არის ჩანაწერი'
END N'კომენტარი'
72
NOT IN პირობა არის ჭეშმარიტი, თუ ველის მნიშვნელობა, რომლის სახელიც
მითითებულია NOT IN-ის მარცხნივ, თუ ველის მნიშვნელობა არ ემთხვევა არც ერთ იმ
მნიშვნელობას, რომლებიც ჩამოთვლილია სიაში და მითითებულია ფრჩხილებში NOT IN-ის
მარჯვნივ.
მაგალითები:
SELECT *
FROM [students].[dbo].[shefaseba]
WHERE I+II+III+Gamocda IN (51,61,71,81,91)
SELECT *
FROM [students].[dbo].[shefaseba]
WHERE I+II+III+Gamocda NOT IN (51,61,71,81,91)
73
სურ.5.84. მოთხოვნის შედეგი
SELECT *
FROM [students].[dbo].[shefaseba]
WHERE I+II+III+Gamocda BETWEEN 51 AND 100
SELECT *
FROM [students].[dbo].[shefaseba]
WHERE I+II+III+Gamocda NOT BETWEEN 51 AND 100
74
მოთხოვნის შესრულების შედეგად მიიღება ცხრილი (სურ.5.86):
75
სურ.5.87. მოთხოვნის შედეგი
შენიშვნა: შედარების ოპერატორები „=, <, >, <=, >=, <>― და IN, BETWEEN, LIKE ოპერატორები
არანაირად არ შეიძლება გამოყენებული იყოს ველის ცარიელი მნიშვნელობის შესამოწმებლად. ამ
მიზნით გამოიყენება სპეციალური ოპერატორები is NULL (არის ცარიელი) და is NOT NULL (არ
არის ცარიელი).
76
Count ([all | distinct] გამოსახულება|*) - სიაში მნიშვნელობების რაოდენობა, რომელიც არ
შეიცავს NULL-ს. * სიმბოლოს გამოყენებისას დაითვლება ჩანაწერთა რაოდენობა, რომელშიც
შედის NULL მნიშვნელობაც ან განმეორებული მნიშვნელობები;
Sum ([all |distinct] გამოსახულება) - სიის ყველა მნიშვნელობის ჯამი;
Max ([all |distinct) - მაქსიმალური მნიშვნელობა;
Min ([all |distinct] გამოსახულება) - მინიმალური მნიშვნელობა.
ALL საკვანძო სიტყვის გამოყენებით მონაცემთა რეზულტირებულ ნაკრებში ყველა
ჩანაწერზე სრულდება აგრეგირება, ხოლო distinct - მხოლოდ უნიკალურ ჩანაწერებზე,
გულისხმობით გამოიყენება ALL.
აგრეგირებული ფუნქციის შესრულება ხორციელდება ცხრილის რომელიმე ველის
მნიშვნელობის ან ჩანაწერთა ნაწილის გაერთიანება, რომლის შემდეგაც სრულდება
მითითებული აგრეგირება.
აგრეგირებული ფუნქცია აბრუნებს ერთადერთ მნიშვნელობას, ამიტომ ამოსარჩევ სიაში
ველების სხვა სახელებით გამოყენება აკრძალულია.
მაშასადამე, აგრეგირებული ფუნქციები საშუალებას იძლევა ცხრილიდან მიიღოთ ის
ინფორმაცია, რომელიც ცხრილის სტრიქონთა ჯგუფზე ოპერაციით სრულდება.
მაგალითები:
78
ლექცია №6
79
მოთხოვნის შესრულების შედეგად მიიღება ცხრილი (სურ.5.92):
80
საკვანძო სიტყვის შემდეგ უნდა იყოს ყველა არჩეული სვეტი, გარდა იმ სვეტისა, რომელიც
მითითებულია ფუნქციის არგუმენტში.
HAVING განყოფილება გამოიყენება ძებნის პირობის მისათითებლად ჯგუფისთვის. მისი
სინტაქსია:
HAVING<ძებნის_პირობა>
81
5.5. გამოსატანი ველების დალაგება
SELECT Sagani
FROM [students].[dbo].[shefaseba]
ORDER BY Sagani
SELECT Sagani
FROM [students].[dbo].[shefaseba]
ORDER BY Sagani DESC
SELECT *
FROM [students].[dbo].[studentebi]
82
ORDER BY Gvari DESC
SELECT *
FROM [students].[dbo].[studentebi]
ORDER BY Gvari, Saxeli
სვეტთა დალაგებისას მისი დასახელების ერთად შეიძლება მიუთითოთ მისი ნომერი, იმის
გათვალიწინებით, რომ მოცემულ შემთხვევაში ეს – სვეტის ნომერია, რომელც განსაზღვრავს არა
ცხრილში სვეტების ნომერს, არემედ მოთხოვნაში გამოსატანი სვეტის მონაცემებს. ველი 1
ნომრით არის პირველი ველი, მითითებული ORDER BY ფრაზაში, რომელიც დამოკიდებული
არაა მის მდებარეობაზე ცხრილში.
84
სურ.5.99. მოთხოვნის შედეგი
86
სურ.5.101. მოთხოვნის შედეგი
87
ლექცია №7
SELECT *
FROM [students].[dbo].[shefaseba]
WHERE kodi IN
(SELECT kodi
FROM [students].[dbo].[studentebi]
WHERE gvari =N'ხარაძე')
88
ეს მოთხოვნა მუშაობს შემდეგი თანმიმდევრობით:
o თავდაპირველად ცხრილიდან ამოირჩევა სტრიქონი, რომლის სახელიც
მითითებულია გარე მოთხოვნაში;
o სრულდება ქვემოთხოვნა და მიღებული შედეგის მნიშვნელობის ანალიზი ხდება ამ
სტრიქონისათვის გარე მოთხოვნის WHERE პირობის საშუალებით;
o ამ პირობის შეფასების შედეგით მიიღება გადაწყვეტილება გამოსატან მონაცემებში
შევიდეს თუ არ შევიდეს ეს სტრიქონი;
o პროცედურა მეორდება ცხრილის შემდეგი სტრიქონისათვის გარე მოთხოვნაში.
მოთხოვნის შესრულების შედეგად მიიღება ცხრილი (სურ.5.102):
90
მოთხოვნის შესრულების შედეგად მიიღება ცხრილი (სურ.5.104):
91
მოთხოვნაში st და sh გამოიყენება, როგორც ფსევდონიმები. კერძოდ, ისინი გამოიყენება
[students].[dbo].[studentebi] და [students].[dbo].[shefaseba] სახელების ნაცვლად.
შეიძლება გამოიყენოთ ქვემოთხოვნა, ცხრილის დაკავშირებისა საკუთარ (ამ ცხრილის)
ასლთან.
EXISTS (ქვემოთხოვნა)
94
დ) დაწერეთ მოთხოვნა, რომელიც studentebi ცხრილიდან გამოიტანს იმ მეორე კურსელი
სტუდენტების მონაცემებს, რომლებსაც ჩაბარებული აქვთ ერთ სასწავლო საგანზე მეტი:
SELECT *
FROM [students].[dbo].[studentebi] A
WHERE kursi=2 AND EXISTS
(SELECT kodi
FROM [students].[dbo].[shefaseba] B
GROUP BY kodi
HAVING COUNT(sagani)>1 AND A.kodi=B.kodi )
95
> ALL, >= ALL მეტია (მეტია ან ტოლი) ყველა მიღებულ რიცხვზე. ექვივალენტურია > ან >=
თვით უდიდეს მიღებულ რიცხვზე.
< ALL, <= ALL ნაკლებია (ნაკლებია ან ტოლი) ყველა მიღებულ რიცხვზე. ექვივალენტურია <
ან <= თვით უმცირეს მიღებულ რიცხვზე.
მაგალითები:
96
SELECT kodi
FROM [students].[dbo].[shefaseba]
WHERE I+II+III+gamocda >ANY
(SELECT I+II+III+gamocda
FROM [students].[dbo].[shefaseba]
WHERE tarigi='29/01/2009')
97
დ) დაწერეთ მოთხოვნა, რომელიც studentebi ცხრილიდან გამოიტანს იმ სტუდენტების
სახელსა და გვარს, რომელთა საბოლოო შეფასება ყველა იმ საბოლოო შეფასებაზე ნაკლებია,
რომელიც მათ მიღებული აქვთ 2009 წლის 29 იანვარს:
98
UNION ოპერატორი გამოიყენება ორი ან მეტი SQL–მოთხოვნით გამოსატანი (რამდენიმე
სვეტი და სტრიქონი) მონაცემების გაერთიანებისათვის.
UNION ოპერატორის გამოყენება შესაძლებელია მხოლოდ ისეთი მოთხოვნების
გაერთანებისათვის, რომელთა შესაბამისი სვეტები თანხვედრაშია (ერთნაირია)
გაერთიანებისათვის. მაშასადამე, შესაბამისი რიცხვითი ველი ზუსტად უნდა ემთხვეოდეს
მონაცემთა ტიპს და ზომას, ხოლო სიმბოლური ველი ზუსტად უნდა ემთხვეოდეს სიმბოლოთა
რაოდენობას. თუ NULL–მნიშვნელობა აკრძალულია გამაერთიანებელი მოთხოვნის ერთი
რომელიმე სვეტისათვის, მაშინ ის აკრძალული იქნება ყველა შესაბამისი სვეტისათვის სხვა
გამაერთიანებელ ქვემოთხოვნებში.
ჩვეულებრივი მოთხოვნისაგან განსხვავებით UNION ავტომატურად გამორიცხავს
გამოსატანი მონაცემებიდან დუბლირებულ სტრიქონებს.
მაგალითები:
99
ბ) დაწერეთ მოთხოვნა, რომლითაც მიიღება ცხრილი, რომელშიც გაერთიანებული იქნება
studentebi და studentebi_2 ცხრილებში არსებული ორი ველის ყველა ჩანაწერი: saxeli და gvari:
100
სურ.5.117. მოთხოვნის შედეგი
თუ SELECT ოპერატორში საკვანძო სიტყვა FROM–ში მითითებულია არა ერთი, არამედ ორი
ცხრილი, მაშინ ასეთი მოთხოვნის შესრულებისას, რომელშიც არაა WHERE ფრაზა, პირველი
ცხრილის თითოეული სტრიქონი შეუერთდება მეორე ცხრილის შესაბამის სტრიქონს. ასეთ
ოპერაციას უწოდებენ მონაცემთა ბაზის ცხრილების სრულ (CROSS) შეერთებას (დეკარტული
ნამრავლი). ცხრილების შეერთებას მაშინ აქვს აზრი, როცა შესაერთებელია საწყისი ცხრილის არა
ყველა სტრიქონი, არამედ მომხმარებლის მიერ არჩეული.
მოთხოვნაში INNER საკვანძო სიტყვა შეიძლება გამოტოვოთ, რადგანაც JOIN ოპერატორში
ის მოქმედებს გულისხმობის პრინციპით.
მაგალითები:
102
SELECT students.dbo. studentebi.gvari, students.dbo. studentebi.saxeli,
students.dbo. shefaseba.I, students.dbo. shefaseba.II, students.dbo. shefaseba.III,
students.dbo. shefaseba.gamocda
FROM students.dbo. studentebi RIGHT OUTER JOIN students.dbo. shefaseba
ON students.dbo. studentebi.kodi = students.dbo. shefaseba.kodi
ან
103
შენიშვნა: ცხრილების შიგა (INNER) შეერთების გამოყენებისას, შეერთდება მხოლოდ და
მხოლოდ ის სტრიქონთა ველების მნიშვნელობები, რომელიც მითითებულია მოთხოვნის
WHERE ფრაზაში. მაგრამ ამან შეიძლება გარკვეული სახის ინფორმაციის დაკარგვა გამოიწვიოს.
ხშირად მონაცემთა ბაზიდან ინფორმაციის მისაღებად აუცილებელია ცხრილის შეერთება
საკუთარ ასლთან.
104
ლექცია №8
105
2. ველთა წარმოდგენის ცხრილი. Column სვეტში ჩანს ცხრილებიდან არჩეული
ველები. Alias სვეტი საშუალებას იძლევა ველებს მისცეთ ფსევდონიმები. Sort Tupe სვეტი
საშუალებას იძლევა დალაგების ტიპის არჩევას ერთი ან რამდენიმე ველის მიხედვით. Sort Order
სვეტი საშუალებას იძლევა დალაგების თანმიმდევრობის მიცემას. Filter და Or სვეტები
საშუალებას იძლევა ფილტრებში ჩანაწერთა პირობის მიცემას. ასევე ეს პანელი საშუალებას -
იძლევა მოთხოვნაში ველთა თანმიმდევრობას შეცვლის. ამ პანელის ჩართვა და გამორთვა
ხორციელდება ინსტრუმენტთა პანელის ღილაკის საშუალებით;
3. SQL კოდი - T–SQL ენაზე შექმნილი მოთხოვნის კოდი, ამ პანელის ჩართვა და
გამორთვა ხორციელდება ინსტრუმენტთა პანელის ღილაკის საშუალებით;
4. შედეგი - გიჩვენებთ მოთხოვნის შესრულების შედეგს. ამ პანელის ჩართვა და
გამორთვა ხორციელდება ინსტრუმენტთა პანელის ღილაკის საშუალებით.
შენიშვნა: თუ გსურთ ცხრილის ყველა ველის წარმოდგენა მოთხოვნის შედეგში, მაშინ ALL
Columns პუნქტის მარცხნივ მდებარე ცარიელ კვადრატში ჩასვით ნიშანი.
ეკრანზე გამოვა Choose Name ფანჯარა (სურ.6.4). ამ ფანჯარაში შეიტანეთ ახალი მოთხოვნის
სახელი (მაგალითად, „მოთხოვნა studentebi+shefaseba‖) და დააწკაპუნეთ OK ღილაკზე. მოთხოვნა
გამოჩნდება students მონაცემთა ბაზის Views ფოლდერში.
107
შექმნილი მოთხოვნის გაშვება შეიძლება აგრეთვე თუ ამ მოთხოვნის – „მოთხოვნა
studentebi+shefaseba‖ კონტექსტურ მენიუში შეასრულებთ Select top 1000 rows ბრძანებას.
როგორც ცნობილია ნებისმიერი მოთხოვნის შექმნისას ხშირად საჭიროა მონაცემების
გარკვეული ამორჩევის კრიტერიუმით გაფილტვრა და/ან დალაგება. ამ მიზნის მიღწევისათვის
ველთა წარმოდგენის ცხრილის არეში საჭიროა Sort Order, Filter და Or სვეტების საჭიროების
მიხედვით შევსება.
მაგალითები:
ა) შექმენით მოთხოვნა, რომელიც გამოიტანს იმ სტუდენტების სახელსა და გვარს,
რომლებიც სწავლობენ ბაკალავრიატის მეორე კურსზე.
ამ მოთხოვნის შექმნისათვის საჭიროა სურ.6.5–ზე წარმოდგენილი ნიმუშის მიხედვით
შეადგინოთ მოთხოვნა. კერძოდ, თავდაპირველად ჩვეულებრივი წესით შექმნენით მოთხოვნა,
რომელშიც ოთხი (gvari, saxeli, safexuri და kursi) ველი იქნება. ველთა წარმოდგენის ცხრილის Sort
Order სვეტში აირჩიეთ (ჩამოშლად მენიუში აირჩიეთ 1) ზრდადობით დალაგება. Filter სვეტში
safexuri და kursi სტრიქონების შესაბამის სტრიქონში შეიტანეთ =N'ბაკალავრიატი' და =2
მონაცემთა ამორჩევის კრიტერიუმები, რომლითაც მოხდება გამოსატან მონაცემთა ფილტრაცია.
თუ მოთხოვნის შედეგში გსურთ არ გამოჩნდეს safexuri და kursi სვეტები, ამისათვის Output
სვეტში წაშალეთ ნიშანი.
მონაცემთა სქემის არეში გამოჩნდება თუ რომელი ველის მიმართ გამოიყენება დალაგების
ბრძანება და რომელი ველების მიმართ გამოყენებულია ფილტრი.
108
ბ) შექმენით მოთხოვნა, რომელიც გამოიტანს იმ სტუდენტების სახელს, გვარს და საბოლოო
შეფასებას, რომლებიც სწავლობენ ბაკალავრიატის მეორე კურსზე.
109
ლექცია №9
შენახული პროცედურები
110
დროებითი შენახული პროცედურები - წვდომადია მხოლოდ აქტიური შეერთებისას.
შეერთების დახურვის შემდეგ ის ავტომატურად წაიშლება. ასეთი პროცედურების სახელები
უნდა იწყებოდეს # სიმბოლოსაგან.
შენახულ პროცედურებთან მუშაობისათვის განკუთვნილია შემდეგი სისტემური შენახული
პროცედურები:
sp_helptext პროცედურის_სახელი - გამოიტანს მითითებული შენახული პროცედურის
კოდს;
sp_help პროცედურის_სახელი - მითითებული პროცედურისათვის გამოიტანს
პარამეტრების სიას და მათ მონაცემთა ტიპებს;
sp_stored_procedures - აბრუნებს მიმდინარე მონაცემთა ბაზის შენახული პროცედურების
სიას.
როგორც MS SQL Server უმრავლესი ობიექტი შენახული პროცედურის შექმნა შეიძლება
Transact_SQL საშუალების დახმარებით ან Managament studio-ს გრაფიკული ინტერფეისის
გამოყენებით.
შენახული პროცედურის შექმნისათვის აუცილებელია შემდეგი თავისებურებების
გათვალისწინება:
პროცედურა შეიძლება შეიცავდეს შემოუსაზღვრავ ოპერატორთა რაოდენობას, გარდა იმ
ოპერატორებისა, რომლებითაც იქმნება შემდეგი ობიექტები: პროცედურა, წარმოდგენა და სხვა.
პოროცედურის შექმნა შეიძლება შეასრულოს sysadmin, bd_owner როლის, ან db_ddladmin
მომხმარებელმა, აგრეთვე უფლება აქვს GREATE PROC ბრძანების შესრულებისა.
პარამეტრების რაოდენობა არ უნდა აღემატებოდეს 2100.
111
[FOR REPLICATION]
AS
<code> | EXTERNAL NAME<assembly name>.<assembly class>.<method>
პარამეტრების აღწერა:
პროცედურის სახელი უნდა აკმაყოფილებდეს MS SQL Server ობიექტებზე სახელის
დარქმევის წესებს;
Parameter name განსაზღვრავს პარამეტრის სახელს (ის უნდა იწყებოიდეს @ სიმბოლოთი),
რომელიც გამოიყენება შესატანი ან გამოსატანი მონაცემების გადაცემისათვის (OUTPUT საკვანძო
სიტყვის მითითებით);
data type მიუთითებს თუ რომელ მონაცემთა ტიპს მიეკუთვნება პარამეტრის მნიშვნელობა;
default value - საშუალებას იძლევა გულისხმობით განსაზღვროს მნიშვნელობა, თუ
პროცედურის გამოძახებისას პარამეტრი არაა მითითებული;
READONLY ჭდე შექმნის პარამეტრს მხოლოდ წაკითხვისათვის, თუ პარამეტრს აქვს teble
ტიპი, მაშინ READONLY მითითება აუცილებელია;
WITH ENCRYPTION რეჟიმი კრძალავს შენახული პროცედურის მიერ შექმნილი კოდის
შემდგომ ნახვას, მისი დაშიფრვის გაკეთებით;
RECOMPILE რეჟიმი მიუთითებს, რომ სერვერი არ ქეშირებს პროცედურის გამოყენების
გეგმაზე და პროცედურა კომპილირდება მხოლოდ შესრულების დროს.
საკვანძო სიტყვის შემდეგ AS მოდის ან Transact_SQL ბრძანებები რომლებიც შეადგენენ
პროცედურის ტანს ან აღწერილია მითითებული აგებულების .Net Framework მეთოდი.
დაშიფრვით შენახული პროცედურის შექმნის მაგალითი:
112
შესრულების შედეგად მიიღება:
EXEC[UTE]
[@დაბრუნების_სტატუსი =] პროცედურის_სახელი
[[@პარამეტრი=] {მნიშვნელობა | გამოსახულება} [OUTPUT] ] [,...]
ცვლილება
არსებული პროცედურის ცვლილებებისას გამოიყენება ALTER PROC ოპერატორი. ამ
ბრძანების პარამეტრები ანალოგიურია პროცედურის შექმნის ბძანებებისა.
სახელის შეცვლა
ამისათვის აუცილებელია გამოიყენოთ სპეციალური სისტემური შენახული პროცედურა:
113
წაშლა
შენახული პროცედურის წაშლისათვის გამოიყენება Transact_SQL ბრძანება:
მაგალითები:
ა) შექმენით პროცედურა, რომელიც გამოითვლის სამი რიცხვის საშუალოს. ახალი შენახული
პროცედურის შექმნისათვის Stored Procedures ფოლდერის კონტექსტურ მენიუში შეასრულეთ NewStored
Procedures ბრძანება. ეკრანზე გამოვა ახალი შენახული პროცედურის კოდი (სურ.7.2)
5
114
სურ.7.2. შენახული პროცედურის ფანჯარა
შენიშვნა: კოდში მწვანე ფერით გამოყოფილია კომენტარები. ისინი სერვერის მიერ არ დამუშავდება
და ასრულებს კოდის გარჩევის ფუნქციას. კომენტარების სტრიქონი იწყება ‘‘—‘‘ ქვესტრიქონით.
შემდგომში კოდში სასურველია არ გამოსახოთ კომენტარები, ანუ ისინი ჩაკეცეთ. კომენტარების მარცხენა
მხარეს არის + ნიშანი, რომელზეც მაუსის დაწკაპუნებით შეგიძლიათ გახსნათ კომენტარი.
აკრიფეთ პროცედურის კოდი, რომელიც გამოითვლის სამი რიცხვის საშუალოს, ისე როგორც ეს
სურათ 7.3-ზეა ნაჩვენები
115
მოცემული პროცედურის კოდი შეიცავს (სურ.7.3):
1. GREATE PROCEDURE [sami ricxvis sashualo] - განსაზღვრავს შესაქმნელი პროცედურის
სახელს, როგორც ‖ სამი რიცხვის საშუალო ‖;
2. @Value1 Real=0, @Value2 Real=0, @Value3 Real=0 - განსაზღვრავს პროცედურის სამ Value1,
Value2, და Value3 პარამეტრს. მოცემულ პარამეტრს შეიძლება მისცეთ წილადური რიცხვი (Real ტიპის
მონაცემი), გულისხმობით მნიშვნელობა 0-ის ტოლია.
3. SELECT 'sashualo mnishvneloba'=(@Value1+@Value2+@Value3)/3 - ითვლის საშუალო
მნიშვნელობას და გამოიტანს შედეგს წარწერით ‘‘საშუალო მნიშვნელობა‘‘.
კოდის დანარჩენი ფრაგმენტი განხილული იყო ადრე (სურ.7.2).
პროცედურის შექმნისათვის, ზემოთ აღნიშნული კოდის შესრულება, რისთვისაც ინსტრუმენტთა
პანელზე მაუსი დააწკაპუნეთ !Execute ღილაკზე. ფანჯრის ქვედა ნაწილში გამოჩნდება ―Command(s)
completed successfully.‘‘ შეტყობინება. დახურეთ კოდის შემცველი ფანჯარა (x ღილაკი).
ახალი შენახული პროცედურის გაშვებისათვის, რომლითაც შემოწმდება შექმნილი შენახული
პროცედურის მუშაობა, აუცილებელია ახალი ცარიელი მოთხოვნის შექმნა, რისთვისაც ინსტრუმენტთა
პანელზე მაუსი დააწკაპუნეთ New Query ღილაკზე. წარმოდგენილ ფანჯარაში ცარიელი მოთხოვნით
შეიტანეთ EXEC [sami ricxvis sashualo] 2, 3, 9 ბრძანება და ინსტრუმენტთა პანელზე მაუსი დააწკაპუნეთ
!Execute ღილაკზე (სურ.7.4).
ფანჯრის ქვედა ნაწილში გამოჩნდება ახალი შენახული პროცედურის შედეგი: ―საშუალო
მნიშვნელობა‖ 4, 66667 (სურ.7.4).
116
1
117
სურ.7.6. სტუდენტის სახელი და გვარი
შეასრულეთ ზემოთ აღწერილი კოდი და დახურეთ ფანჯარა, როგორც ეს ზემოთ იყო აღწერილი. ამ
მოთხოვნის შესამოწმებლად შექმენით ახალი მოთხოვნა, რომელშიც შეიტანეთ EXEC [studentebis
warmodgena sashualo qulit] 70 ბრძანება და შეასრულეთ იგი. ფანჯრის ქვედა ნაწილში გამოჩნდება
შენახული პროცედურის შესრულების შედეგი (სურ.7.9).
118
სურ.7.9. იმ სტუდენტების kodi, რომლებსაც 70 ქულაზე მეტი აქვთ
დ) შექმენით შენახული პროცედურა, რომელიც გამოიტანს თქვენს მიერ წინასწარ მიცემულ ასაკზე
მეტი ასაკის სტუდენტებს. თანაც ასაკი ავტომატურად გამოითვლება დაბადების თარიღზე
დამოკიდებულებით.
შექმენით ახალი შენახული პროცედურა და შეიტანეთ ახალი პროცედურის კოდი, როგორც ეს 7.10
სურათზეა წარმოდგენილი.
119
სტუდენტის ასაკი, რომელის Age პარამეტრი მეტია განსაზღვრულ პარამეტრებზე (DATEDIFF(yy),
[studentebi+].[dabadebis tarigi], GETDATE ())>@Age).
120
ახალი შენახული პროცედურის გაშვებისათვის, რომლითაც შემოწმდება შექმნილი
შენახული პროცედურის მუშაობა, აუცილებელია ახალი ცარიელი მოთხოვნის შექმნა,
რისთვისაც ინსტრუმენტთა პანელზე მაუსი დააწკაპუნეთ New Query ღილაკზე. წარმოდგენილ
ფანჯარაში ცარიელი მოთხოვნით შეიტანეთ კოდი – Test და ინსტრუმენტთა პანელზე მაუსი
დააწკაპუნეთ !Execute ღილაკზე.
ვ) Transact_SQL საშუალებით შექმენით შენახული პროცედურა, რომელიც მოქმედების
ნაცვლად ღებულობს რიცხვს და OUTPUT პარამეტრის საშუალებით მასში აბრუნებს ციფრთა
რაოდენობას. ამისათვის ახალი ცარიელი მოთხოვნის არეში შეიტანეთ შემდეგი კოდი:
121
SELECT @cnt
122
ლექცია №10
წარმოდგენები
შესავალი. წარმოდგენა (View) არის კიდევ ერთი ობიექტი, რომელიც შედის ნებისმიერი
მონაცემთა ბაზის ლოგიკური სტრუქტურის შემადგენლობაში. წარმოდგენა ბოლო
მომხმარებლისათვის ჩანს როგორც ცხრილი, მაგრამ ის არ შეიცავს მონაცემებს, მხოლოდ
წარმოადგენს მათ. ფიზიკურად წარმოდგენილი მონაცემები განაწილებულია მონაცემთა ბაზის
სხვადასხვა ცხრილებში.
წარმოდგენა რეალიზდება შენახული მოთხოვნის სახით, რომლის საფუძველზეც
მიმდინარეობს სხვადასხვა მონაცემთა ბაზის ცხრილებიდან მონაცემთა ამორჩევა.
წარმოდგენას გააჩნია შემდეგი უპირატესობები:
უზრუნველყოს ინფორმაციის კონფედენციალურობას, ვინაიდან გამოაქვს მხოლოდ
აუცილებელი ინფორმაცია, ხოლო განსაზღვრულ ველებს მალავს;
მონაცემთა წარმოდგენის სიმარტივე, ვინაიდან მომხმარებელი წარმოდგენასთან მუშაობს
როგორც ერთიან ცხრილთან, რომელიც შექმნილია რამდენიმე ცხრილიდან მონაცემთა
ამორჩევის საფუძველზე;
მონაცემზე წვდომის წესების მართავა, მაგალითად, ცხრილის განსაზღვრული
ველებისათვის მოთხოვნის შესრულებაზე უფლების მიცემის ნაცვლად, ადვილია მოთხოვნის
შესრულება წარმოდგენით.
MS SQL Server წარმოგვიდგენს სხვადასხვა ხერხებს წარმოდგენების შექმნის: Transact_SQL
საშუალების დახმარებით და Managament studio ადმინისტრირების უტილიტით.
123
წარმოდგენის_სახელის მითითებით აუცილებელია შეინარჩუნოთ ადრე განსაზღვრული
წესები ობიექტების დასათაურების, ასევე ეს სახელი არ უნდა ემთხვეოდეს მონაცემთა ბაზაში
ადრე არსებულ ცხრილის სახელს. WITH ENCRYPTION პარამეტრი განსაზღვრავს მოთხოვნის
კოდის დაშიფრვას და გენერირდება ისე, რომ მომხმარებელს არ შეუძლია მისი ნახვა და
გამოყენება.
მოთხოვნა_ამორჩევა წარმოადგენს თავად SELECT ოპერატორს, რომლის პარამეტრიც
განსაზღვრავს წარმოდგენის შინაარსს. წარმოდგენის ველის სახელები მოიცემა ან ამორჩევის
ოპერატორში ფსევდონიმის დახმარებით ან მიეთითება ველი პარამეტრში.
მაგალითად, შექმენით წარმოდგენა, რომელიც studentebi ცხრილიდან იქნება ისეთი
ინფორმაციები (ველები), როგორიცაა: სახელი, გვარი და კურსი.
ან
ბ) CREATE VIEW ST_2 ([studentis saxeli], [studentis gvari], [kursi]) AS
SELECT saxeli, gvari, kursi
FROM [students].[dbo].[studentebi]
124
WHERE kursi=2
მაგალითად:
126
ლექცია №11
მომხმარებლის ფუნქციები
პარამეტრების აღწერა:
ფუნქციის სახელი - შესაქმნელი მომხმარებლის ფუნქციის სახელი;
პარამეტრი1, პარამეტრი 2, .... - ფუნქციაზე გადაცემული პარამეტრები;
მნიშვნელობა 1, მნიშვნელობა 2, .... - გულისხმობით პარამეტრების მნიშვნელობა;
ტიპი 1, ტიპი 2, .... - პარამეტრების მონაცემთა ტიპები.
127
RETURN საკვანძო სიტყვის შემდეგ სკალურ ფუნქციაში შეიტანება შედეგის მონაცემთა
ტიპი, რომელიც აბრუნებს სკალურ ფუნქციას, ან შეიტანება ცხრილ ფუნქციაში საკვანძო სიტყვა
TABLE.
RETURN საკვანძო სიტყვის შემდეგ შეიტანება თვით ფუნქციის SQL ბრძანება.
მაგალითები:
ა) სამი რიცხვის საშუალოს გამოთვლის ფუნქცია (სკალარული მომხმარებლის ფუნქცია):
შენიშვნა: DECLARE ბრძანება ქმნის Res ცვლადს მნიშვნელობათა შესანახად (Real მონაცემთა
ტიპი).
შედეგად მიიღება სტუდენტების სია, მათ ასაკთან ერთდ 2012 წლის 19 ოქტომბრის
მდგომარეობით.
Microsoft SQL Server 2008-ში მომხმარებლის ყველა ფუნქცია არის functions ფოლდერში,
რომელიც თავის მხრივ არის ობიექტთა მიმომხილველის programmability ფოლდერში (სურ. 9.1).
129
ახალ სკალურ მომხმარებლის ფუნქციის შექმნისათვის შეასრულეთ functions ფოლდერის
კონტექსტური მენიუს New/Scalar–valued function... ბრძანება. ეკრანზე გამოვა ახალი სკალარული
მომხმარებლის ფუნქცია (სურ. 9.2).
130
RETURN @ <ცვლადის სახელი შედეგით>
ცვლადს უნდა ჰქონდეს იგივე ტიპი, რაც მითითებულია მესამე პუნქტში.
მაგალითები:
ა) შექმენით სკალარული მომხმარებლის ფუნქცია, რომელიც გამოითვლის სამი რიცხვის
საშუალოს. ამისათვის ახალი მომხმარებლის ფუნქციის ფანჯარაში შეიტანეთ კოდი, ისე როგორც
ეს სურ.9.3–ზე არის ნაჩვენები.
1
131
ფუნქციის შექმნისათვის, ანუ ზემოთ აღწერილი კოდის შესრულებისათვის, ინსტრუმენტთა
პანელზე მაუსი დააწკაპუნებთ !Execute ღილაკზე. ფანჯრის ქვედა ნაწილში გამოჩნდება command
(s) completed successtully შეტყობინება. დახურეთ ფანჯარა.
სკალარული მომხმარებლის ფუნქციის შესამოწმებლად აუცილებელია ახალი ცარიელი
მოთხოვნა შექმნათ. ამ მოთხოვნაში შეიტანეთ SELECT dbo.[funqcia sami ricxvis sashualo](3, 5, 4)
ბრძანება და შეასრულეთ მოთხოვნა. ფანჯრის ქვედა ნაწილში მიიღებთ სკალური მომხმარებლის
ფუნქციის შედეგს: 4 (სურ.9.4).
132
სურ.9.5. სკალარული მომხმარებლის ფუნქციის – „თვის ბოლო დღის― შექმნის ფანჯარა
133
DECLARE @Result DateTime შედეგის შენახვისათვის აცხადებს Result ცვლადს - თვის ბოლო
დღის თარიღი (DateTime მონაცემთა ტიპი);
5. SET @Year=DatePart (yy, MyDate), SET@Month =DatePart(mm, MyDate), SET
@Day=DatePart (dd, MyDate) - განისაზღვრება შეტანილი თარიღის ნაწილი და შეიტანება @Year,
@Month და @Day ცვლადები. თარიღის ნაწილის განსაზღვრისათვის გამოიყენება DatePart
ფუნქცია, რომელსაც აქვს შემდეგი სინტაქსი: DatePart (<თარიღის ნაწილი>, <თარიღი>). აქ
„თარიღის ნაწილი― არის სპეციალურად კოდირებული სიმბოლოები, რომლებითაც
განისაზღვრება თარიღის ნაწილი (yy - წელი, mm – თვე, dd – დღე), „თარიღი―– არის თარიღი,
რომლის ნაწილებიც განისაზღვრება.
6. IF@Month =12
BEGIN
SET@Month =1
SET@Year=@Year +1
END
ELSE
BEGIN
SET@Month = @Month +1
END
ზემოთ აღნიშნული კოდი ასრულებს შემდეგ მოქმედებას: თუ თვის ნომერი ტოლია 12-ის,
მაშინ დააყენოს თვის ნომრად (@Month) ერთის ტოლად და გაზარდოს წელი (@ Year) ერთით,
თუ არადა გაზარდოს თვე ერთით.
7. SET @TmpDate = Convert (Varchar, @Month) +'/01/' + Convert(Varchar, @ Year), SET
@Result=Convert(DateTime, @TmpDate) - თარიღის რიცხვითი მნიშვნელობა გადაყავს
სტრიქონულ ფორმატში და ჩაიწერება ის @TmpDate ცვლადში. შემდეგ თარიღი გადაყავს
სტრიქონულ ფორმატში. თარიღისა და დროის მონაცემთა ტიპი შეიტანება @Result ცვლადში.
კონვერტაციისათვის გამოიყენება Convert ფუნქცია, რომელსაც აქვს შემდეგი სინტაქსი:
Convert(<მონაცემთა ტიპი>, <მნიშვნელობა>), აქ „მონაცემთა ტიპი― არის ის მონაცემთა ტიპი,
რომელშიც გადაიყვანება „მნიშვნელობა―;
8. SET @Result=DateAdd(dd, -1, @Reuslt) - თარიღიდან, რომელიც ინახება @Reuslt
ცვლადში, გამოაკლდება ერთი დღე. ამისათვის გამოიყენება DateAdd ფუნქცია (იხ. DatePart
ფუნქცია);
134
9. RETURN @Result - აბრუნებს მნიშვნელობას, რომელიც ინახება @Result ცვლადში.
ფუნქციის შექმნისათვის, ზემოთ აღწერილი კოდის შესრულებისათვის, მაუსი დააწკაპუნეთ
!Execute ღილაკზე. ეკრანზე გამოვა Command (s) completed successfully შეტყობინება. დახურეთ
ფანჯარა.
[tvis bolo dge] ფუნქციის მუშაობის შემოწმებისათვის შექმენით ახალი მოთხოვნა და მასში
შეიტანეთ SELECT dbo.[tvis bolo dge] ('05/17/2012') ბრძანება და მაუსი დააწკაპუნეთ !Execute
ღილაკზე (სურ.9.6). ეკრანზე გამოჩნდება ახალი სკალარული მომხმარებლის ფუნქციის შედეგი:
2012-05-31.
136
ახალი ცხრილური მომხმარებლის ფუნქციის მუშაობის შემოწმებისათვის შექმენით ახალი
მოთხოვნა და მასში შეიტანეთ შემდეგი ბრძანება SELECT * FROM dbo.[asakit amorchevis funqcia] ()
და მაუსი დააწკაპუნეთ !Exicute ღილაკზე. ეკრანის ქვედა ნაწილში გამოვა სტუდენტების სახელი,
გვარი და დაბადების თარიღი და ასაკი (სურ.9.8).
137
ლექცია №12
დიაგრამები
Microsoft SQL Server 2008-ში ყველა დიაგრამა ინახება Database Diagrams ფოლდერში
(სურ.10.1).
138
გადაიტანეთ students ცხრილის kodi ველზე. ეკრანზე გამოჩნდება ცხრილებს შორის კავშირის
შექმნის Tables and Columus ფანჯარა (სურ.10.3).
139
სურ.10.5. ცხრილებს შორის კავშირი
140
სურ.10.8. დიაგრამის შენახვის ფანჯარა
141
ლექცია №13
მონაცემების მართვა
პარამეტრების აღწერა:
ცხრილის_სახელი – ცხრილი, რომელშიც შეგყავთ მონაცემები:
ველების_სია – ველების სია, სადაც შეგყავ მონაცემები, თუ არაა მითითებული, მაშინ
იგულისხმება ყველა ველის შევსება, ველების სია–ში ველები ერთმანეთისაგან გამოყოფილია
მძიმით;
ველის_მნიშვნელობა – ველების მნიშვნელობები მძიმის შემდეგ.
მნიშვნელობის ნაცვლად შეიძლება მიუთითოთ Default კონსტანტა, ანუ შეიტანება
მნიშვნელობა გულისხმობით, ან შეიძლება SELECT ოპერატორით ჩანაცვლება.
142
ასეთი ბრძანება შეიძლება შესრულდეს იმ შემთხვევაში, თუ ცხრილში გამოყენებული
ველის სახელები (studentebi) შექმნილია CREATE TABLE (ცხრილის შექმნა) ბრძანებით.
სადაც studentebi2 ცხრილი უნდა იყოს შექმნილი CREATE TABLE ბრძანებით და უნდა
ჰქონდეს იდენტური სტრუქტურა studentebi ცხრილის შესაბამისად.
ცხრილიდან სტრიქონის წასაშლელად გამოიყენება DELETE ბრძანება. უმარტივეს
შემთხვევაში მას აქვს შემდეგი სახე:
პარამეტრების აღწერა:
ცხრილის_სახელი – წასაშლელი ცხრილის სახელი;
143
პირობა – პირობა, რომელსაც აკმაყოფილებს წასაშლელი ჩანაწერი, თუ პირობა არაა
მითითებული, მაშინ წაიშლება ცხრილის ყველა სვეტი. თუ პირობა მითითებულია, მაშინ
წაიშლება იმ ველის ჩანაწერები, რომელსაც შეესაბამება პირობა.
შედეგად ცხრილი იქნება ცარიელი (რომლის წაშლაც შეიძლება DROP TABLE ბრძანებით).
UPDATE <ცხრილის_სახელი>
SET
<ველის_სახელი1>= <გამოსახულება1>,
<ველის_სახელი2>= <გამოსახულება>,
…
[WHERE<პირობა>]
პარამეტრების აღწერა:
ველის_სახელი1, ველის_სახელი2 – შესაცვლელი ველის სახელები;
გამოსახულება1, გამოსახულება2 – კონრეტული მნიშვნელობა ან NULL, ან SELECT
ოპერატორი. აქ SELECT ოპერატორი გამოიყენება როგორც ფუნქცია;
144
პირობა – პირობა, რომელიც შეესაბამება ჩანაწერს, ველი რომელიც იცვლება.
UPDATE [students].dbo.studentebi
SET stipendia = 100
ი) შეცვალეთ studentebi ცხრილში ყველა მეორე კურსის სტუდენტის სტიპენდია 200 ლარით
(UPDATE ბრძანებაში შეიძლება გამოიყენოთ პრედიკატი მითითებული WHERE ფრაზაში):
UPDATE [students].dbo.studentebi
SET stipendia = 200
WHERE kursi = 2
UPDATE [students].dbo.studentebi
SET stipendia = 400, dabadebis_tarigi='12/08/1995'
WHERE kodi = 610832453679
UPDATE [students].dbo.studentebi
SET stipendia = stipendia *2
145
ამოიღებს სხვა ცხრილიდან. ამავე დროს სვეტთა რაოდენობა და ტიპი ორივე ცხრილში უნდა
იყოს ერთნაირი.
146
ლექცია №14
ტრიგერები
147
12.1. Transact_SQL საშუალებით ტრიგერის შექმნა
პარამეტრების აღწერა:
ტრიგერის სახელი - ეს შესაქმნელი ტრიგერის სახელია;
ცხრილის სახელი - ცხრილის სახელი, რომლისთვისაც იქმნება ტრიგერი;
თუ გამოიყენება ALTER პარამეტრი, მაშინ ტრიგერი სრულდება მოვლენის (ცვლილების)
შემდეგ, თუ გამოიყენება INSTEAD OF პარამეტრი, მაშინ სრულდება ცვლილების ერთად;
INSERT, UPDATE და DELETE პარამეტრები განსაზღვრავენ მოვლენას (ცვლილებას),
რომლითაც სრულდება ტრიგერი;
WITH ENCRYPTION პარამეტრი - ის განკუთვნილია ტრიგერის შესრულებისას მონაცემთა
დაშიფრვის ჩართვისათვის;
SQL ბრძანებები - ეს SQL ბრძანებებია, რომელიც სრულდება ტრიგერის აქტივობის დროს.
პაკეტში CREATE TRIGGER ბრძანება უნდა იყოს პირველი და უნდა გამოიყენებოდეს
მხოლოდ ერთი ცხრილის მიმართ. ტრიგერები შეიძლება შეიქმნას მხოლოდ მიმდინარე
მონაცემთა ბაზაში, მაგრამ ტრიგერის შიგნით დასაშვებია სხვა მონაცემთა ბაზებთან მიმართვა,
მათ შორის დაშორებულ სერვერზე მოთავსებულ მონაცემთა ბაზასთან.
მაგალითები:
UPDATE [students].dbo.studentebi
SET stipendia = 150
WHERE kursi = 2
149
თუ studentebi ცხრილიდან გსურთ წაშალოთ ნებისმიერი სტუდენტის მონაცემი, ამისათვის
შექმენით ცარიელი მოთხოვნა და მასში შეიტანეთ შემდეგი ბრძანება:
150
შენიშვნა: ტრიგერის შესაცვლელად გამოიყენება ALTER TRIGGER, ხოლო – წასაშლელად
DROP TRIGGER ბრძანება.
მაგალითები:
ა) შექმენით ტრიგერი, რომელიც გამოიტანს შეტყობინებას ‘‘ჩანაწერი დამატებულია‘‘ იმ
შემთხვევაში, როცა studentebi ცხრილს დაემატება ჩანაწერი. შექმენით ახალი ტრიგერი,
ამისათვის Triggers ფოლდერის კონტექსტურ მენიუში შეასრულეთ New Triggers ბრძანება.
ეკრანზე გამოვა ფანჯარა ახალი ტრიგერით (სურ.12.2).
151
1
152
სურ.12.3-დან ჩანს, რომ შესაქმნელი ტრიგერი [damatebis indikatori] შესრულდება studentebi
ცხრილში (on dbo.studentebi) ჩანაწერის დამატების შემდეგ (ALTER INSERT). ჩანაწერის
დამატების შემდეგ ტრიგერი ეკრანზე გამოიტანს შეტყობინებას ‘‘ჩანაწერი დამატებულია‘‘
(PRINT N'ჩანაწერი დამატებულია').
შეტანილი კოდის შესრულებისათვის მაუსი დააწკაპუნეთ !Execute ღილაკზე. ეკრანის ქვედა
ნაწილში გამოვა შეტყობინება Command(s) completed successfully.
ახალი ტრიგერის მუშაობის შემოწმებისათვის შექმენით ცარიელი მოთხოვნა და მასში
შეიტანეთ ბრძანება, რომელიც წარმოდგენილია სურ.12.4-ზე.
153
ბ) შექმენით ტრიგერი, რომელიც გამოიტანს შეტყობინებას ‘‘ჩანაწერი შეცვლილია‘‘.
შექმენით ახალი ტრიგერი, ისე როგორც ზემოთ იყო აღწერილი. მიღებულ ფანჯარაში შეიტანეთ
შემდეგი კოდი (სურ.12.6).
როგორც სურ.12.6-დან ჩანს, რომ ახალი ტრიგერი [shecvlis indikatori] სრულდება studentebi
ცხრილში (ON [studentebi].dbo.studentebi) ჩანაწერის ცვლილების შემდეგ (AFTER UPDATE).
ჩანაწერის ცვლილების შემდეგ ეკრანზე გამოვა შეტყობინება ‘‘ჩანაწერი შეცვლილია‘‘ (PRINT
N'ჩანაწერი შეცვლილია'). შეასრულეთ შეტანილი კოდი. ფანჯრის ქვედა ნაწილში გამოვა
შეტყობინება command(s) compledted successtully.
შექმნილი ტრიგერის მუშაობის შემოწმებისათვის შექმენით ახალი მოთხოვნა და მასში
შეიტანეთ სურ. 12.7-ზე წარმოდგენილი ბრძანება.
154
სურ.12.8. ახალი ტრიგერის - [washlis indikatori]–ის შექმნის ფანჯარა
155
სურ.12.10. ახალი ტრიგერის - [studentis washla]–ის შექმნის ფანჯარა
DELETE [students].dbo.shefaseba
FROM deleted
WHERE Deleted.kodi=[students].dbo.shefaseba.kodi
DELETE [students].dbo.studentebi
FROM deleted
WHERE Deleted.kodi=[students].dbo.studentebi.kodi
157
ლექცია №15
ახალი მონაცემთა ბაზა წარმოადგენს model მონაცემთა ბაზის ასლს, რომლის ყველა
პარამეტრები დაკოპირდება ახალ მონაცემთა ბაზაში. გულისხმობით მონაცემთა ბაზა შეუძლია
შექმნას მხოლოდ იმ მომხმარებელმა, რომლებსაც დანიშნული აქვთ sysadmin და dbcreator
როლები.
მონაცემთა ბაზის შექმნა ხორციელდება შემდეგი ბრძანებით:
CREATE DATABASE<მონაცემთა_ბაზის_სახელი>
[ON [PRIMARY] (NAME = '<ფაილის_ლოგიკური_სახელი>',
FILENAME = '<ფაილის_ფიზიკური_სახელი>'
[, SIZE = <ზომა>]
[, MAXSIZE = {<მაქსიმალური_ზომა> | UNLIMITED} ]
[, FILEGROWTH = <ზომის_ ნაზრდის_ბიჯი> [Mb | Kb | %] )
[ {FILEGROUP<ფაილთა_ ჯგუფის_სახელი>} ]
[, ...n ]
[LOG ON (NAME = '<ფაილის_ლოგიკური_სახელი>',
FILENAME = '<ფაილის_ფიზიკური_სახელი>'
[, SIZE = <ზომა>]
[, MAXSIZE = {<მაქსიმალური_ზომა>| UNLIMITED} ]
[, FILEGROWTH = <ზომის_ნაზრდის_ბიჯი>[Mb | Kb | %] )
[, ...n ]
პარამეტრების აღწერა:
158
PRIMARY - განსაზღვრავს როგორც პირველად ფაილს, ან როგორც პირველად ფაილურ
ჯგუფის წევრს, თუ ეს პარამეტრი მოხსნილია, მაშინ ოპერატორში მთავარი ფაილი იქნება
პირველი ფაილი და შენახვისათვის გამოიყენება პირველადი ფაილური ჯგუფი;
NAME - განსაზღვრავს ფაილის ლოგიკურ სახელს. გულისხმობით ემთხვევა ფაილის
ფიზიკურ სახელს, რომელიც განსაზღვრულია FILENAME ოპერატორში;
FILENAME - მიუთითებს ფაილის სრულ გზას და ფიზიკურ სახელს;
SIZE - მიუთითებს ფაილის ზომას: მეგაბაიტებში და კილობაიტებში. მინიმალური
შესაძლო მნიშვნელობაა 512 კბაიტი. გულისხმობით მთავარი ფაილის ზომა ტოლია model
მონაცემთა ბაზის ზომის. გულისხმობით მონაცემთა დამატებითი ფაილების და ჟურნალის ზომა
ტოლია 1 მგბაიტის;
MAXSIZE - მიუთითებს მაქსიმალურ ზომას, სადამდეც შეუძლია გაიზარდოს ფაილმა. თუ
ეს პარამეტრი არაა მითითებული, მაშინ დადგება UNLIMITED მნიშვნელობა, რომლის
საშუალებითაც ფაილის ზომა შეიძლება გაიზარდოს შეუზღუდვადაც;
FILEGROWTH - აძლევს ფაილის გაზრდის ბიჯს, თანაც ნული ნიშნავს ზომის გაზრდის
აკრძალვას: მნიშვნელობა მითითებულია მეგაბაიტებში, კილობაიტებში, ან პროცენტებში
გულისხმობით. ნაზრდი - 10%, თუ არაა მითითებული ერთეული, მაშინ რიცხვი აღდგება
მეგაბაიტებში;
FILEGROUP - განსაზღვრავს ფაილების ჯგუფის სახელს, რომელშიც ინახება ფაილი.
მონაცემთა ბაზის შესახებ ინფორმაციის ნახვისათვის, ფაილების და ფაილთა ჯგუფისათვის
გამოიყენება შემდეგი შენახული პროცედურები;
sp_helpdb [მონაცემთა ბაზა] - ინფორმაცია, მონაცემთა ბაზისა და მისი გაწყობის შესახებ;
sp_helpfile ['სახელი'] - ინფორმაცია ფაილების შესახებ, რომლებიც მიეკუთვნებიან
მიმდინარე მონაცემთა ბაზას. თუ ფაილის სახელი არაა მითითებული, მაშინ გამოჩნდება ამ
მონაცემთა ბაზის ყველა ფაილის შესახებ ინფორმაცია;
sp_helpfilegroup [‗სახელი‘] - მიმდინარე მონაცემთა ბაზაში ყველა ფაილთა ჯგუფის შესახებ
ინფორმაცია. თუ მითითებულია ფაილთა ჯგუფის სახელი, მაშინ გამოიტანება თითოეულ
ფაილთა ჯგუფის შესახებ ინფორმაცია;
sp_spaceused ['ობიექტი'] - ცნობები დისკური არის შესახებ, რომელსაც მითითებული
ობიექტები იყენებენ.
მონაცემთა ბაზას ზემოთ ჩამოთვლილი ფიზიკური პარამეტრების გარდა აქვს აგრეთვე
ლოგიკური პარამეტრები. მხოლოდ მფლობელს და სისტემურ ადმინისტრატორს აქვს უფლება
159
შეცვალოს ეს პარამეტრები. პარამეტრების მართვისათვის გამოიყენება სისტემური შენახული
sp_dboption პროცედურა:
sp_helpdb students5
160
სურ.13.1. მონაცემთა ბაზის შექმნის შედეგი
შედეგად წაიშლება ყველა ფაილი, რომელსაც მონაცემთა ბაზა იყენებს. მონაცემთა ბაზის
წაშლის უფლება აქვს მონაცემთა ბაზის და sysadmin მომხმარებლის როლის მფლობელს. ეს
უფლება არ შეიძლება გადაეცეს სხვა სააღრიცხვო ჩანაწერს.
მონაცემთა ბაზის მფლობელის შეცვლა ხორციელდება სპეციალური შენახული
პროცედურით. მფლობელად შეიძლება გახდეს ნებისმიერი სააღრიცხვო ჩანაწერი, რომელიც
მიმდინარე მომენტში არ წარმოადგენს ბაზის მომხმარებელს, მაგალითად:
161
| MODIFYFILE GROUP ჯგუფის_სახელი}
სადაც <მითითება_ფაილზე> =
(NAME = 'ფაილის_ლოგიკური_ტიპი',
FILENAME = 'ფაილის_ფიზიკური_ტიპი'
[, SIZE = ზომა]
[, MAXSIXE = {მაქსიმალური_ზომა | UNLIMITED} ]
[, FILEGROWTH = ზომის_ნაზრდის_ბიჯი [Mb| Kb | %] )
162
მთლიანი მონაცემთა ბაზის არა ავტომატურად შეკუმშვა ხორციელდება შემდეგი ბრძანების
გამოყენებით:
პარამეტრების აღწერა:
მბ_სახელი - მონაცემთა ბაზის სახელი, რომელიც აუცილებელია შეკუმშოთ;
პროცენტი - თავისუფალი არის პროცენტული რაოდენობა, რომელიც სასურველია
შეკუმშვის შემდეგ დატოვოთ;
NOTRUNCATE - კრებსითი არე არ უბრუნდება ოპერაციულ სისტემას, რეზერვირდება
ფაილად, ანუ მონაცემთა ბაზის ფიზიკური ზომა არ მცირდება;
TRUNCATEONLY - თავისუფალი არე წაიშლება ფაილში ექსტენტის (მეხსიერების უწყვეტი
არე) ბოლო გამოყენებისას, ამ შემთხვევაში მონაცემები არ გადაადგილდება, ხოლო პროცენტი
პარამეტრი იგნორირდება.
მონაცემთა ბაზის შეკუმშვის უფლება გაცემულია მხოლოდ sysadmin როლის წევრებისათვის
და მონაცემთა ბაზის მფლობელისათვის. მონაცემთა ბაზის შეკუმშვის შემდეგ გამოდის
ანგარიშგება, რომელშიც მითითებულია:
გვერდების რაოდენობა, რომელამდეც იკუმშება ფაილი;
გამოთვლადი გვერდის რაოდენობა, რომელშიც მოთავსდება ფაილის ყველა მონაცემი;
გვერდების რაოდენობა, რომელიც შეიცავს მონაცემებს;
გვერდების რაოდენობა, რომელამდეც ფაილს შეუძლია შეიკუმშოს.
არ შეიძლება მონაცემთა ბაზის შეკუმშვა თავდაპირველ ზომაზე ნაკლებად.
მონაცემთა ბაზის შეკუმშვა შეიძლება განხორციელდეს, აგრეთვე, მისი თითოეული ფაილის
შეკუმშვის გზით შემდეგი ბრძანების დახმარებით:
პარამეტრების აღწერა:
ფაილის_სახელი - ფაილის ლოგიკური სახელი, რომელიც აუცილებელია შეიკუმშოს;
საბოლოო_ზომა - სასურველი ზომა (მთელი რიცხვი მეგაბაიტებში), რომელიც უნდა
ჰქონდეს ფაილს შეკუმშვის შემდეგ. თუ ეს პარამეტრი არაა მითითებული ან მცირე მინიმალური
შესაძლო ზომაზე, მაშინ ფაილი იკუმშება მინიმალურ შესაძლო ზომამდე;
163
EMPTYFILE - ფაილთა ჯგუფში სრულდება მონაცემთა ერთი ფაილიდან მეორეში
გადატანა;
NOTRUNCATE - გათავისუფლებული ადგილი არ უბრუნდება ოპერატიულ მეხსიერებას,
ანუ ფაილის ზომა არ მცირდება. ამ შემთხვევაში მონაცემი კომპაქტურად განლაგდება და შეერევა
ფაილის დასაწყისს;
TRUNCATEONLY - ხდება ფაილზე ჩამოჭრა, რომელიც იწყება ბოლო გამოყენებული
გვერდიდან. არავითარი მონაცემთა გადატანა არ მიმდინარეობს.
164
პარამეტრის აღწერა:
მოწყობილობათა_ტიპი - მოწყობილობის სახელი სარეზერვო კოპირებისათვის.
დაშვებული მნიშვნელობა: TAPE (მაგნიტური ლენტა), DICK (მაგნიტური დისკი);
ლოგიკური_სახელი და ფიზიკური_სახელი - შესაბამისად მოწყობილობის სარეზერვო
კოპირების ლოგიკური და ფიზიკური სახელი.
მონაცემთა ბაზის სარეზერვო კოპირების, ტრანზაქციის ჟურნალის, ფაილების და ფაილთა
ჯგუფების შექმნისათვის აუცილებელია გამოიყენოთ ბრძანება:
პარამეტრის აღწერა:
DIFERENTIAL - მონაცემთა ბაზის დიფერენციული ასლის შექმნა;
EXPIREDATE - განისაზღვრება დრო, რომლის გასვლის შემდეგ სარეზერვო ასლი ითვლება
მოძველებულად და შეიძლება თავიდან ჩაიწეროს;
INITINOINIT - სისტემა ახორციელებს, ან არ ახორციელებს მოწყობილობის
ინიციალირებას.
მაგალითი. შექმენით students5 მონაცემთა ბაზის სარეზერვო კოპირება. ამისათვის ჯერ
შექმენით სარეზერვო მოწყობილობა:
165
სურ.13.2. მონაცემთა ბაზის სარეზერვო კოპირების შექმნის შედეგი
პარამეტრის აღწერა:
DBO ONLY - აღდგენილ მონაცემთა ბაზაზე შეუძლია წვდომა მხოლოდ მის მფლობელს;
MOVE - მიუთითებს, თუ რომელი ფიზიკური სახელი შეესაბამება აღსადგენ ფაილს.
გულისხმობით ფაილი აღდგება იგივე ფიზიკური სახელით, რომელიც მას განსაზღვრული
ჰქონდა სარეზერვო ასლის შექმნამდე.
166
თითოეული სვეტისთვის განსაზღვრული უნდა იყოს ტიპი და ზომა. თითოეულ შესაქმნელ
ცხრილს უნდა ჰქონდეს ერთი სვეტი მაინც.
ცხრილის შექმნისათვის SQL Server–ში პირველ რიგში აუცილებელია აქტიური გახადოთ ის
მონაცემთა ბაზა, რომელშიც გსურთ ცხრილის შექმნა. ამისათვის ახალი მოთხოვნის ჩანართში
შეიტანეთ ბრძანება: USE<ბაზის_სახელი>, ან ინსტრუმენტთა პანელზე, ჩამოშლად სიაში,
აირჩიოთ სამუშაო მონაცემთა ბაზა. მონაცემთა ბაზის არჩევის შემდეგ შეიძლება ცხრილის შექმნა.
ცხრილი იქმნება ბრძანებით, რომელსაც აქვს შემდეგი სინტაქსი:
პარამეტრის აღწერა:
ცხრილის_სახელი – შესაქმნელი ცხრილის სახელი;
ტიპი – ველის ტიპი;
IDENTITY NULL|NOTNULL – მთვლელი ველი.
მაგალითები:
ა) შექმენით students1 ცხრილი, რომელიც შეიცავს შემდეგ ველებს: studentis_ID (კავშირის
პირველადი ველი, მთვლელი), saxeli, gvari, misamarti, specialobis_ID ((კავშირის მეორადი ველი).
ამისათვის ახალი მოთხოვნის ჩანართში შეიტანეთ ბრძანება:
ზემოთ განხილული იყო შეზღუდვა, როცა შესატანი მონაცემის ტიპი და ზომა ისეთივე
უნდა ყოფოლოყო, როგორც ეს შესატან სვეტებში თავდაპირველად იყო. ცხრილების აღწერისას
შეიძლება მასზე დაედოს უფრო რთული შეზღუდვები, რომელიც დაედება იმ მნიშვნელიბებს,
რომლებიც შეიტანება სვეტში ან სვეტების ჯგუფში. შეზღუდავა (CONSTRAINTS) წარმოადგენს
ცხრილის განსაზღვრის ნაწილს.
ცხრილის შექმნისას (ცვლილებისას) შესაძლებელია განისაზღვროს შესატან
მნიშვნელობებზე შეზღუდვები. ამ შემთხვევაში SQL უკუაგდებს ყველა იმ შეზღუდვას, რომელიც
არ შეესაბამება მიცემულ კრიტერიუმს. შეზღუდვა შეიძლება იყოს სტატისტიკური, შეზღუდული
მნიშვნელობით ან მნიშვნელობათა დიაპაზონით, რომელიც შეიტანება სვეტში (CHECH, NOT
NULL). მათ აქვთ კავშირები სვეტის ყველა მნიშვნელობასთან, შეზღუდული ახალი სტრიქონის
მნიშვნელობებით, რომლებიც სვეტები ან მათ ნაკრები არ შეიცავს (უნიკალური მნიშვნელობა,
170
პირველადი გასაღები). შეზღუდვა აგრეთვე განისაზღვრება იმ მონაცემთან კავშირით, რომლებიც
მდებარეობენ სხვა ცხრილში. დაუშვათ, მაგალითად, სვეტში მხოლოდ იმ მნიშვნელობების ჩასმაა
საჭირო, რომლებიც მოცემულ მომენტში, ამ ან სხვა ცხრილის, სხვა სვეტში (გარე გასაღები)
იმყოფება. ეს შეზღუდვები ატარებენ დინამიურ თავისებურებებს.
არსებობს შეზღუდვის ორი მთავარი ტიპი – შეზღუდვა სვეტებზე და შეზღუდვა ცხრილზე.
სვეტებზე შეზღუდვა (COLUMN CONSTRAINTS) გამოიყენება მხოლოდ ცალკეულ სვეტებზე,
ხოლო ცხრილზე შეზღუდვა (TABLE CONSTRAINTS) გამოიყენება ჯგუფზე, რომელიც შედგება
ერთ ან რამდენიმე სვეტისაგან. სვეტზე შეზღუდვა ემატება სვეტის განსაზღვრის ბოლოში
მონაცემთა ტიპის მითითების შემდეგ და ბოლო სვეტის განსაზღვრის შემდეგ, სვეტის აღწერის
დამთავრების წინ. გაფართოებული შეზღუდვით CREATE TABLE ბრძანების სინტაქსს აქვს
შემდეგი სახე:
171
უსაფრთხოების სისტემები მონაცემთა ბაზებში
173
15.2. სერვერის როლები
<option_list1> ::=
PASSWORD = { 'password' | hashed_password HASHED } [ MUST_CHANGE ]
[ , <option_list2> [ ,... ] ]
<option_list2> ::=
SID = sid
| DEFAULT_DATABASE = database
| DEFAULT_LANGUAGE = language
| CHECK_EXPIRATION = { ON | OFF}
| CHECK_POLICY = { ON | OFF}
| CREDENTIAL = credential_name
<sources> ::=
WINDOWS [ WITH <windows_options> [ ,... ] ]
| CERTIFICATE certname
| ASYMMETRIC KEY asym_key_name
<windows_options> ::=
DEFAULT_DATABASE = database
| DEFAULT_LANGUAGE = language
177
4. სააღრიცხვო ჩანაწერის წაშლისათვის გამოიყენება შემდეგი შენახული პროცედურა:
მაგალითად:
EXEC sp_addsrrolemember 'Corporate\Helens', 'sysadmin'
მაგალითად:
EXECsp_dropsrvrolemember'Jacko', 'sysadmin'
178
ჩანაწერს ექნება სხვადასხვა უფლებამოსილება, რომელიც დამოკიდებულია თუ რომელ
მონაცემთა ბაზასთან ხორციელდება მუშაობა. არსებობს მონაცემთა ბაზის 10 ჩაშენებული როლი:
db_awner - მასში შედის უფლება მონაცემთა ბაზის ყველა დანარჩენ როლებზე.
მომხმარებელი ღებულობს ბაზის ფლობის უფლებას;
dp_accessadmin - მსგავსია securityadmin სერვერული როლის, იმის გამორიცხვით, რომ
ერთი მონაცემთა ბაზით არის შეზღუდვა. ის საშუალებას არ იძლევა MS SQL Server ახალი
ლოგინის შექმნის, მაგრამ შეუძლია მონაცემთა ბაზას დაამატოს ახალი მომხმარებელი;
db_datareader - შესაძლებელია მონაცემთა ბაზის ყველა ცხრილისათვის SELECT
ოპერატორის შესრულება;
db_datawriter - შესაძლებელია მონაცემთა ბაზის ყველა ცხრილისათვის, INSERT, UPDATE
და DELETE ოპერატორების შესრულება;
db_ddladmin - შესაძლებელია მონაცემთა ბაზაში ობიექტების დამატება, წაშლა და შეცვლა;
db_securityadmin - კიდევ ერთი როლი, რომელიც securityadmin სერვერის როლის მსგავსია.
db_accessadmin-გან განსხვავებით მას არ შეუძლია ბაზაში ახალი მომხმარებლის შექმნის, მაგრამ
უფლება აქვს როლების მართვის და როლის წევრობის, აგრეთვე, მონაცემთა ბაზის ობიექტების
წვდომის უფლება;
db_dackupoperator - შესაძლებელია მონაცემთა ბაზის სარეზერვო ასლის შექმნა;
db_denydatareader - მონაცემთა ბაზის ყველა ცხრილისათვის SELECT ოპერატორის
შესრულების აკრძალვა;
db_denydatawriter - მონაცემთა ბაზის ყველა ცხრილისათვის INSERT, UPDATE და DELETE
ბრძანებების შესრულების აკრძალვა.
მონაცემთა ბაზის როლების შესახებ ინფორმაციის ნახვა (როგორც ჩაშენებულის, ისე
მომხმარებლის მიერ განსაზღვრული) შესაძლებელია sp_holprole შენახული პროცედურის
საშუალებით, მონაცემთა ბაზის როლების წევრების ნახვა - sp_helprolemember.
შენიშვნა: ნებისმიერ მონაცემთა ბაზაში არის სპეციალური public როლი. არ შეიძლება მისი
წაშლა. მონაცემთა ბაზის ნებისმიერი მომხმარებელი არის ამ როლის წევრი. ყოველთვის ეს
როლი გამოიყენება მოცემული სერვერის ყველა მომხმარებლისათვის გარკვეული სახის
უფლებების მისაცემად.
179
გულისხმობით MS SQL Server მონაცემთა ბაზაში აქვს მომხმარებლის სპეციალური
სააღრიცხვო ჩანაწერი: მონაცემთა ბაზის მფლობელი (dbo – data bese owner). მონაცემთა ბაზის
მფლობელს აქვს მონაცემთა ბაზაზე ყველა შესაძლო უფლებები. მონაცემთა ბაზის მფლობელი
ავტომატურად ხდება ის, ვინც შექმნა ეს მონაცემთა ბაზა.
1. მომხმარებლის მიერ მონაცემთა ბაზის შესაქმნელად გამოიყენება შემდეგი
პროცედურა:
პარამეტრების აღწერა:
User_name - მონაცემთა ბაზაში მომხმარებლის სახელი, რომლის სიგრძეც შეიძლება იყოს
128 სიმბოლომდე;
180
LOGIN login_name - მიუთითებს თუ რომელ ლოგინთან ასოცირდება მოცემული
მომხმარებელი;
CERTIFICATE cert_name - მიუთითებს სერთიფიკატს, რომლითაც აუცილებელია
მოცემული მომხმარებლის ასოცირება;
ASYMETRIC KEY asum_key_name - მიუთითებს გასაღებს, რომლითაც აუცილებელია
მოცემული მომხმარებლის ასოცირება;
WITH DEFAULT_SCHEMA=schema_name - გულისხმობით იძლევა სქემას
მომხმარებლისათვის. ობიექტების ძებნისას ის დასაწყისში იძებნება ამ სქემაში;
WITHOUT LOGEN - მიუთითებს, რომ მომხმარებელი არსებული ლოგინით არ უნდა
ასოცირდებოდეს.
181
6. სერვერის უსაფრთხოების სისტემის ადმინისტრირების გამარტივების მიზნით
ადმინისტრატორს შესაძლებლობა აქვს მონაცემთა ბაზის როლის შექმნის და მისთვის
გარკვეული უფლებების მიცემის.
ამისათვის გამოიყენება შენახული პროცედურა:
182
სურ.15.3. ახალი სააღრიცხვო ჩანაწერის შექმნის ფანჯარა
183
15.7. სერვერის როლების მართვა
184
GRANT ბრძანება გამოიყენება მონაცემთა ბაზის ობიექტებთან მომხმარებლის მიმართვის
უფლებების მართვისათვის. მისი სინტაქსია:
GRANT
{ ნებართვა [,...n] }{ ONცხრილი | warmodgena [(veli[,...n])]
| ON [შენახული პროცედურა[,...n] }
TOსააღრიცხვო ჩანაწერი[,...n][WITH GRANT OPTION]
პარამეტრების აღწერა:
ნებართვა - ნებართვების სია წარდგენილი მომხმარებლისთვის. თუ წარმოდგენილია
რამდენიმე ნებართვა ერთდროულად, მაშინ ისინი გაყოფილები იქნება მძიმით;
ცხრილი, წარმოდგენა, შენახული პროცედურა - მიუთითებს მიმდინარე მონაცემთა ბაზის
კონკრეტული ობიექტების სახელებს, რომლისთვისაც აუცილებელია წვდომის წარმოდგენა. MS
SQL Server აქვს შესაძლებლობა განსაზღვროს წვდომაზე უფლება არა მარტო ცხრილის დონეზე,
არამედ ველების დონეზეც;
სააღრიცხვო ჩანაწერი - მითითებულია უსაფრთხოების სისტემის ობიექტის სახელი,
რომელზეც გაცემულია უფლება. ობიექტის როლში შეიძლება იყოს როგორც მომხმარებლის
სააღრიცხვო ჩანაწერი ასევე მათი ჯგუფები;
WITH GRANT OPTION - მომხმარებლისათვის შესაძლებელია, რომელზეც გაცემულია
უფლება, მათი დანიშვნის და სხვა მომხმარებლისათვის. მაგალითად, შემდეგი ბრძანების
დახმარებით students მონაცემთა ბაზის TestUser მომხმარებლისათვის ამორჩევის უფლების
გადაცემა და იგივე მონაცემთა ბაზის studentebi ცხრილის მონაცემების ცვლილება:
185
DENY
{ ნებართვა [,...n] }{ ONცხრილი | წარმოდგენა[(ველი[,...n])]
| ON[შენახული პროცედურა[,...n] }
TOსააღრიცხვო ჩანაწერი [,...n][CASCADE]
186
შიძლება მხოლოდ ზუსტად მისი წარმოდგენით, როცა სხვა დონეზე არ არის წვდომაზე
აკრძალვა, თუ წვდობა ზუსტად არაა წარმოდგენილი, მაშინ მომხმარებელს არ შეუძლია
მონაცემებთან მუშაობა.
187