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;