Skip to content
Λογότυπο GrCode Club σε μαύρο Λογότυπο GrCode Club σε λευκό GrCode Club

GrCode Club

Λογότυπο GrCode Club σε μαύρο Λογότυπο GrCode Club σε λευκό GrCode Club

GrCode Club

  • Αρχική
  • Προγραμματισμός
    • Developer
    • Web Development
    • Γλώσσες Προγραμματισμού
    • Docker
  • Δίκτυα
    • Βασικές Πληροφορίες
    • Πρωτόκολλα Δικτύων
    • Υπηρεσίες & Θύρες
    • Cloud Computing
  • Λειτουργικά Συστήματα
    • Βασικές Πληροφορίες
    • Linux: Οδηγός
    • Microsoft Windows
  • Κυβερνοασφάλεια
    • Βασικές Πληροφορίες
    • Κυβερνοεπιθέσεις
    • Εργαλεία Κυβερνοασφάλειας
  • Hardware
    • Βασικές Πληροφορίες
    • Εξαρτήματα Υπολογιστή
    • Οθόνες & Τηλεοράσεις
    • Υποστήριξη Υπολογιστή
    • Πιστοποίηση IP
  • Κινητά
    • Βασικές Πληροφορίες
    • Android
    • iPhone
  • Κοινότητα
    • Σύνδεση / Λογαριασμός
    • Μέλη
    • Γίνε Content Creator
    • Projects Μελών
    • Ξεκινήστε να Μαθαίνετε
  • Αρχική
  • Προγραμματισμός
    • Developer
    • Web Development
    • Γλώσσες Προγραμματισμού
    • Docker
  • Δίκτυα
    • Βασικές Πληροφορίες
    • Πρωτόκολλα Δικτύων
    • Υπηρεσίες & Θύρες
    • Cloud Computing
  • Λειτουργικά Συστήματα
    • Βασικές Πληροφορίες
    • Linux: Οδηγός
    • Microsoft Windows
  • Κυβερνοασφάλεια
    • Βασικές Πληροφορίες
    • Κυβερνοεπιθέσεις
    • Εργαλεία Κυβερνοασφάλειας
  • Hardware
    • Βασικές Πληροφορίες
    • Εξαρτήματα Υπολογιστή
    • Οθόνες & Τηλεοράσεις
    • Υποστήριξη Υπολογιστή
    • Πιστοποίηση IP
  • Κινητά
    • Βασικές Πληροφορίες
    • Android
    • iPhone
  • Κοινότητα
    • Σύνδεση / Λογαριασμός
    • Μέλη
    • Γίνε Content Creator
    • Projects Μελών
    • Ξεκινήστε να Μαθαίνετε

SQL Server: System Stored Procedures και Εκτέλεση Εντολών

Ο Microsoft SQL Server διαθέτει ενσωματωμένες System Stored Procedures, Extended Stored Procedures και μηχανισμούς που επιτρέπουν τη διαχείριση της βάσης δεδομένων και, υπό συγκεκριμένες προϋποθέσεις, την αλληλεπίδραση με εξωτερικές πηγές ή το λειτουργικό σύστημα. Σε αυτόν τον οδηγό θα δεις τις βασικές κατηγορίες, παραδείγματα και τις απαιτήσεις ασφαλείας τους.

Σημαντικό: Τα παραδείγματα αφορούν αποκλειστικά Microsoft SQL Server και δεν εκτελούνται αυτούσια σε MySQL, PostgreSQL ή SQLite. Ορισμένες εντολές απαιτούν αυξημένα δικαιώματα, ενώ κάποιες παλαιότερες ή μη τεκμηριωμένες δυνατότητες μπορεί να διαφέρουν ανά έκδοση.

1. System Stored Procedures

Οι System Stored Procedures είναι έτοιμες διαδικασίες που παρέχει ο SQL Server για διαχείριση και επιθεώρηση αντικειμένων, συνδέσεων και ρυθμίσεων. Πολλές έχουν πρόθεμα sp_.

ProcedureΧρήση
sp_helpΠληροφορίες για πίνακα, view ή άλλο αντικείμενο.
sp_helpdbΠληροφορίες για βάσεις δεδομένων.
sp_helpindexΠληροφορίες για indexes ενός πίνακα.
sp_helptextΕμφάνιση του ορισμού ενός procedure, view, trigger ή function.
sp_tablesΛίστα πινάκων και views.
sp_columnsΠληροφορίες για στήλες ενός πίνακα ή view.
sp_whoΠληροφορίες για ενεργές συνδέσεις και sessions.
sp_databasesΛίστα βάσεων δεδομένων που είναι ορατές στον χρήστη.

Παραδείγματα

-- Πληροφορίες για έναν πίνακα
EXEC sp_help 'dbo.Users';

-- Εμφάνιση indexes
EXEC sp_helpindex 'dbo.Users';

-- Λίστα βάσεων δεδομένων
EXEC sp_databases;

-- Εμφάνιση ενεργών sessions
EXEC sp_who;

2. Έλεγχος μέσω System Catalog Views

Για σύγχρονη και πιο ευέλικτη εξερεύνηση της βάσης, προτίμησε τα catalog views του SQL Server, όπως sys.databases, sys.tables, sys.columns και sys.objects.

-- Βάσεις δεδομένων
SELECT name, state_desc
FROM sys.databases;

-- Πίνακες της τρέχουσας βάσης
SELECT name, create_date
FROM sys.tables;

-- Αντικείμενα και τύποι αντικειμένων
SELECT name, type_desc
FROM sys.objects
ORDER BY type_desc, name;

-- Στήλες ενός συγκεκριμένου πίνακα
SELECT name, system_type_id, max_length, is_nullable
FROM sys.columns
WHERE object_id = OBJECT_ID('dbo.Users');

3. Extended Stored Procedures (xp_)

Οι Extended Stored Procedures είναι ειδικές επεκτάσεις του SQL Server. Ορισμένες έχουν πρόθεμα xp_ και μπορούν να παρέχουν λειτουργίες πέρα από το συνηθισμένο SQL. Δεν είναι όλες ισοδύναμες: κάποιες είναι τεκμηριωμένες, ενώ άλλες θεωρούνται παλαιότερες ή μη τεκμηριωμένες και δεν πρέπει να αποτελούν βάση νέων εφαρμογών.

ProcedureΠεριγραφήΣημείωση
xp_cmdshellΕκτελεί εντολή λειτουργικού συστήματος μέσω command shell.Υψηλού κινδύνου· απενεργοποιημένη από προεπιλογή.
xp_fileexistΕλέγχει αν υπάρχει αρχείο ή φάκελος.Μη τεκμηριωμένη· η συμπεριφορά/διαθεσιμότητα μπορεί να διαφέρει.
xp_dirtreeΕπιστρέφει καταχωρίσεις φακέλων και υποφακέλων.Μη τεκμηριωμένη.
xp_subdirsΕπιστρέφει υποφακέλους ενός φακέλου.Μη τεκμηριωμένη.
xp_fixeddrivesΕμφανίζει πληροφορίες ελεύθερου χώρου σε τοπικούς δίσκους.Μη τεκμηριωμένη.

Ασφαλή παραδείγματα επιθεώρησης

-- Έλεγχος ύπαρξης αρχείου (όπου υποστηρίζεται)
EXEC master.dbo.xp_fileexist 'C:\Windows\win.ini';

-- Εμφάνιση καταχωρίσεων φακέλων (όπου υποστηρίζεται)
EXEC master.dbo.xp_dirtree 'C:\Windows', 1, 1;

-- Πληροφορίες ελεύθερου χώρου δίσκων (όπου υποστηρίζεται)
EXEC master.dbo.xp_fixeddrives;

Οι παραπάνω διαδικασίες δεν αποτελούν φορητό ή εγγυημένα υποστηριζόμενο API. Για εφαρμογές παραγωγής προτίμησε τεκμηριωμένες δυνατότητες και εργαλεία διαχείρισης, με τα κατάλληλα δικαιώματα.

4. xp_cmdshell – Εκτέλεση εντολών λειτουργικού συστήματος

Η xp_cmdshell επιτρέπει στον SQL Server να ξεκινήσει διεργασία command shell και να εκτελέσει μια εντολή του λειτουργικού συστήματος. Δεν είναι SQL Function ούτε συνηθισμένη Stored Procedure· είναι Extended Stored Procedure.

-- Παραδείγματα διαγνωστικών εντολών Windows
EXEC master..xp_cmdshell 'whoami';
EXEC master..xp_cmdshell 'hostname';
EXEC master..xp_cmdshell 'ipconfig';
EXEC master..xp_cmdshell 'tasklist';

Η εντολή εκτελείται με το security context του SQL Server service account ή, όταν έχει ρυθμιστεί κατάλληλο proxy για μη sysadmin χρήστες, με τα δικαιώματα του proxy account. Συνεπώς, τα δικαιώματα που έχει η διεργασία στο λειτουργικό σύστημα καθορίζουν τι μπορεί να κάνει.

Ενεργοποίηση και απενεργοποίηση

Η xp_cmdshell είναι απενεργοποιημένη από προεπιλογή σε νέες εγκαταστάσεις. Η ενεργοποίηση απαιτεί κατάλληλα δικαιώματα διαχειριστή και πρέπει να γίνεται μόνο όταν υπάρχει τεκμηριωμένη επιχειρησιακή ανάγκη.

-- Ενεργοποίηση advanced options
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;

-- Ενεργοποίηση xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1;
RECONFIGURE;

-- Απενεργοποίηση μετά την ολοκλήρωση της εργασίας
EXEC sp_configure 'xp_cmdshell', 0;
RECONFIGURE;

-- Προαιρετικά, επαναφορά της εμφάνισης advanced options
EXEC sp_configure 'show advanced options', 0;
RECONFIGURE;

Προειδοποίηση ασφαλείας: Μην ενεργοποιείς την xp_cmdshell απλώς για δοκιμή σε παραγωγικό server. Περιόρισε την πρόσβαση σε έμπιστους διαχειριστές, χρησιμοποίησε λογαριασμό με τα ελάχιστα απαραίτητα δικαιώματα, εξέτασε τη χρήση proxy account και απενεργοποίησέ την όταν δεν χρειάζεται. Μην περνάς μη έμπιστη είσοδο χρήστη ως εντολή shell.

5. Dynamic SQL

Το Dynamic SQL επιτρέπει τη δημιουργία και εκτέλεση SQL ερωτημάτων κατά τη διάρκεια εκτέλεσης. Για παραμέτρους τιμών προτίμησε το sp_executesql, ώστε να αποφεύγεται η απευθείας συνένωση μη έμπιστων δεδομένων στο query.

DECLARE @sql nvarchar(max) =
    N'SELECT name FROM sys.databases WHERE database_id > @min_id;';

EXEC sys.sp_executesql
    @sql,
    N'@min_id int',
    @min_id = 4;

6. Πρόσβαση σε εξωτερικά δεδομένα

ΜηχανισμόςΧρήση
OPENROWSETΠρόσβαση σε εξωτερική πηγή δεδομένων μέσω provider ή ανάγνωση bulk δεδομένων, ανάλογα με τη μορφή.
OPENDATASOURCEAd hoc σύνδεση σε εξωτερική πηγή δεδομένων.
BULK INSERTΦόρτωση δεδομένων από αρχείο σε πίνακα.
OPENQUERYΕκτέλεση pass-through ερωτήματος σε συνδεδεμένο server.

Οι δυνατότητες αυτές εξαρτώνται από εγκατεστημένους providers, ρυθμίσεις server, δικαιώματα και πολιτικές ασφαλείας. Η πρόσβαση σε αρχεία γίνεται από το περιβάλλον και τα δικαιώματα του SQL Server, όχι απαραίτητα από τον συνδεδεμένο χρήστη των Windows.

7. SQL Server Agent – Αυτοματοποιημένες εργασίες

Ο SQL Server Agent εκτελεί προγραμματισμένες εργασίες (Jobs), όπως backups, συντήρηση και scripts. Η υπηρεσία και οι διαθέσιμες λειτουργίες εξαρτώνται από την έκδοση και την εγκατάσταση του SQL Server.

-- Λίστα εργασιών
EXEC msdb.dbo.sp_help_job;

-- Εκκίνηση συγκεκριμένης εργασίας
EXEC msdb.dbo.sp_start_job @job_name = N'MyJob';

-- Διακοπή συγκεκριμένης εργασίας
EXEC msdb.dbo.sp_stop_job @job_name = N'MyJob';

Αν χρησιμοποιείς SQL Server Express, λάβε υπόψη ότι δεν περιλαμβάνει SQL Server Agent. Για αυτοματοποίηση μπορεί να χρειαστεί εξωτερικός scheduler ή άλλη κατάλληλη λύση.

8. Functions, Stored Procedures και Extended Procedures

ΤύποςΣκοπόςΠαράδειγμα
SQL FunctionΕπιστρέφει τιμή ή πίνακα και χρησιμοποιείται σε expressions ή queries, σύμφωνα με τους κανόνες του SQL Server.GETDATE(), COUNT()
Stored ProcedureΕκτελεί μία ή περισσότερες ενέργειες στη βάση.sp_help, δική σου procedure
Extended Stored ProcedureΠαρέχει ειδική λειτουργία μέσω επέκτασης του SQL Server.xp_cmdshell
SQL Server Agent JobΕκτελεί προγραμματισμένες εργασίες.sp_start_job

9. Βασικές πρακτικές ασφαλείας

  • Εφάρμοζε την αρχή του ελάχιστου δικαιώματος (Least Privilege).
  • Μην ενεργοποιείς την xp_cmdshell χωρίς σαφή ανάγκη και έγκριση.
  • Μην εκτελείς shell commands που περιέχουν μη επικυρωμένη είσοδο χρήστη.
  • Προτίμησε τεκμηριωμένα catalog views αντί για μη τεκμηριωμένες extended procedures όπου είναι δυνατό.
  • Περιόρισε την πρόσβαση σε εξωτερικές πηγές και αρχεία.
  • Κατέγραψε και έλεγχε τις προνομιακές ενέργειες.
  • Δοκίμαζε αλλαγές σε απομονωμένο περιβάλλον πριν από παραγωγική χρήση.

10. Γρήγορη αναφορά (Cheat Sheet)

ΕνέργειαΕντολή / Μηχανισμός
Πληροφορίες αντικειμένουEXEC sp_help 'dbo.Users';
Λίστα βάσεωνSELECT name FROM sys.databases;
Ενεργά sessionsEXEC sp_who;
Δυναμικό SQL με παραμέτρουςsys.sp_executesql
Εντολή λειτουργικού συστήματοςxp_cmdshell (υψηλού κινδύνου)
Εξωτερικά δεδομέναOPENROWSET, OPENQUERY
Προγραμματισμένη εργασίαmsdb.dbo.sp_start_job

Για περισσότερες βασικές εντολές SQL, JOIN, συναρτήσεις, indexes και transactions, δες τον γενικό οδηγό SQL του GrCode Club.

Social Media

  • Facebook
  • X
  • Instagram
  • TikTok
  • YouTube
  • Linkedin
  • Discord
Email Επικοινωνίας

info@grcodeclub.gr

Για Τεχνικά Θέματα

support@grcodeclub.gr

Πολιτική Cookies (ΕΕ)

Πολιτική απορρήτου

Όροι και Προϋποθέσεις

GrCode Club by @dimitridedou
Διαχείριση Συγκατάθεσης
Για να παρέχουμε την καλύτερη εμπειρία, χρησιμοποιούμε τεχνολογίες όπως cookies για την αποθήκευση ή/και την πρόσβαση σε πληροφορίες συσκευών. Η συγκατάθεση για τις εν λόγω τεχνολογίες θα μας επιτρέψει να επεξεργαστούμε δεδομένα προσωπικού χαρακτήρα, όπως συμπεριφορά περιήγησης ή μοναδικά αναγνωριστικά σε αυτόν τον ιστότοπο. Η μη συγκατάθεση ή η ανάκληση της συγκατάθεσης, μπορεί να επηρεάσει αρνητικά ορισμένες λειτουργίες και δυνατότητες.
Λειτουργικά Πάντα ενεργό
Η τεχνική αποθήκευση ή πρόσβαση είναι απολύτως απαραίτητη για τον νόμιμο σκοπό της δυνατότητας χρήσης συγκεκριμένης υπηρεσίας που ζητείται ρητά από τον συνδρομητή ή τον χρήστη ή με αποκλειστικό σκοπό τη μετάδοση επικοινωνίας μέσω δικτύου ηλεκτρονικών επικοινωνιών.
Προτιμήσεις
Η τεχνική αποθήκευση ή πρόσβαση είναι απαραίτητη για τον νόμιμο σκοπό της αποθήκευσης προτιμήσεων που δεν ζητούνται από τον συνδρομητή ή τον χρήστη.
Στατιστικά
Η τεχνική αποθήκευση ή πρόσβαση που χρησιμοποιείται αποκλειστικά για στατιστικούς σκοπούς. Η τεχνική αποθήκευση ή πρόσβαση που χρησιμοποιείται αποκλειστικά για ανώνυμους στατιστικούς σκοπούς. Χωρίς κλήτευση, η εθελοντική συμμόρφωση εκ μέρους του Παρόχου Υπηρεσιών Διαδικτύου ή πρόσθετες καταγραφές από τρίτο μέρος, οι πληροφορίες που αποθηκεύονται ή ανακτώνται για το σκοπό αυτό από μόνες τους δεν μπορούν συνήθως να χρησιμοποιηθούν για την αναγνώρισή σας.
Εμπορικής Προώθησης
Η τεχνική αποθήκευση ή πρόσβαση απαιτείται για τη δημιουργία προφίλ χρηστών, για την αποστολή διαφημίσεων ή για την καταγραφή του χρήστη σε έναν ιστότοπο ή σε διάφορους ιστότοπους για παρόμοιους σκοπούς εμπορικής προώθησης.
  • Διαχείριση επιλογών
  • Διαχείριση υπηρεσιών
  • Manage {vendor_count} vendors
  • Διαβάστε περισσότερα για αυτούς τους σκοπούς
Προβολή προτιμήσεων
  • {title}
  • {title}
  • {title}