SQL Server: GRANT
Statement
إنشاء مستخدم:
عند إنشاء مستخدم جديد باستخدام CREATE LOGIN
أو CREATE USER
، لا يحصل على أي امتيازات افتراضيًا.
يمكنك استخدام GRANT
لمنح الامتيازات المطلوبة.
صيغة الأمر GRANT
:
GRANT permission [, permission]...
ON object
TO user_or_role
WITH GRANT OPTION;
الشرح:
- الـ
permission
: نوع الصلاحية (مثلSELECT
,INSERT
,UPDATE
,EXECUTE
). - الـ
object
: الكائن المستهدف (جدول، عرض، قاعدة بيانات…). - الـ
user_or_role
: المستخدم أو الدور الذي يحصل على الامتياز. - الـ
WITH GRANT OPTION
: يسمح للمستخدم بمنح نفس الامتيازات لآخرين.
أنواع الامتيازات:
1. الامتيازات العامة (Global Privileges):
تنطبق على الخادم بالكامل باستخدام ON *.*
:
GRANT CONTROL SERVER TO [username];
2. امتيازات على قاعدة بيانات محددة:
GRANT SELECT, INSERT
ON DATABASE::DatabaseName
TO [username];
3. امتيازات على جدول محدد:
GRANT SELECT, UPDATE
ON OBJECT::dbo.TableName
TO [username];
4. امتيازات على إجراء مخزن:
GRANT EXECUTE
ON OBJECT::dbo.StoredProcedureName
TO [username];
عرض الامتيازات:
SELECT *
FROM sys.database_permissions
WHERE grantee_principal_id = USER_ID('username');
امتيازات شائعة في SQL Server:
الصلاحية | الوصف | المستوى |
---|---|---|
SELECT | قراءة البيانات. | جدول / قاعدة بيانات |
INSERT | إدخال البيانات. | جدول |
UPDATE | تحديث البيانات. | جدول / أعمدة |
DELETE | حذف البيانات. | جدول |
EXECUTE | تنفيذ الإجراءات المخزنة. | إجراء مخزن |
ALTER | تعديل الكائن (جداول، قواعد بيانات). | جدول / قاعدة بيانات |
CONTROL | التحكم الكامل في قاعدة بيانات أو جدول. | جدول / قاعدة بيانات |
VIEW DEFINITION | عرض تعريف الكائنات. | جدول / إجراء مخزن |
مثال عملي:
إنشاء مستخدم ومنح امتيازات:
CREATE LOGIN John WITH PASSWORD = 'Password123';
CREATE USER John FOR LOGIN John;
GRANT SELECT, INSERT
ON OBJECT::dbo.Employees
TO John;
GRANT EXECUTE
ON OBJECT::dbo.GetEmployeeDetails
TO John;
ملاحظات:
-
استخدم
DENY
لإلغاء الامتيازات بدلاً منREVOKE
إذا كنت تريد منع الوصول صراحةً. -
لتطبيق الامتيازات مباشرةً، تأكد من تحديث الإعدادات باستخدام:
RECONFIGURE;