‏إظهار الرسائل ذات التسميات SQL. إظهار كافة الرسائل
‏إظهار الرسائل ذات التسميات SQL. إظهار كافة الرسائل

السبت، 19 يوليو 2014

ما هي الصلاحيات التي املكها؟

ما هي الصلاحيات التي املكها؟

What Permissions I have on Database?

أول شئ تفعلة عند الحصول علي أتصال بقاعدة بيانات بسيرفير جديد - التحقق ما هي الصلاحيات المختلفة التي لديك المتعلقة بقاعدة البيانات المتصال عليها في الحقيقة هي أن معظم الاستشاريين consultants ومدير قاعدة بيانات administrator  تريد أن تعرف ما هي الصلاحيات مختلفة التي لديهم في قاعدة البيانات عندما الحصول على أي نظام جديد.

أنا شخصيا أرغب في امتلاك الصلاحيات فقط التي تساعدني على إنجاز عملي، وليس صلاحية واحدة أكثر أو أقل. إذا كان لدي المزيد من  الصلاحيات اطلب من فريق العمل أخذ هذه الصلاحيات لكي لا اجعل هناك احتمال للخطأ.

هنا هو السيناريو الذي يمكن ان تنفذه للحصول على قائمة بالصلاحيات على قواعد البيانات.
SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
GO



هنا هو مجموعة نتائج الاستعلام أعلاه عند تشغيلة executed  بتسجيل دخول ال sa أو admin.



الخميس، 17 يوليو 2014

الفرق بين الدخول Login و المستخدم User

الفرق بين الدخول Login و المستخدم User
Difference Between Login and User

توثيق الدخول Login for Authentication
صلاحيات المستخدم User for Authorization

-  Loginللدخول علي خادم قواعد البيانات Database Server.
- User للتعامل علي قواعد البيانات.


أولاً: إنشاء Login, من خلال فلدر Security و بالضغط علي فلدر Login ثم New Login.


تظهر شاشة Login – New, نقوم بادخال Login Name: مثلا ليكن الاسم NewLogin, ثم ادخال Password و Confirm password, ثم OK.


نلاحظ تم إنشاء NewLogin.



ثانياُ: إنشاء User, نختار قاعدة بيانات اي قاعدة بيانات موجودة لدينا ولتكن Sample ثم فتح فلدر Security وعلي فلدر Users نختار New User


تظهر شاشة Database User, في خانة User Name: نكتب اسم المستخدم وليكن علي سبيل المثال NewUser, ثم اختيار ال Login Name: بالضغط علي الزرار المجاور للخانة أو كتابة اسم المستخدم الذي انشأناه سابقاً NewLogin. ثم في خانة ال Default schema: نختار أو نكتب dbo, ثم OK.


نقوم بإعادة الاتصال باستخدام تسجيل الدخول Login الجديد الذي انشأناه, نكتب اسم الدخول الجديد في خانة الLogin  , نكتب NewLogin, ونكتب ال Password ثم Connect.


الأن نحن متصلين باستخدام NewLogin.


نقوم بفتح واستعراض Folder قواعد البيانات ونستعرض قاعدة بيانات ReportServer, نلاحظ ظهور رسالة خطأ. وذلك لاننا لم نقم بإنشاء اي User Authorization لهذه القاعدة.


بعد ذلك نقوم باستعراض Folder الجداول Tables بقاعدة بيانات Sample. نلاحظ عدم ظهور اي جداول. وذلك لان المستخدم الجديد ليس لديه صلاحيه التفاعل مع اي كائن Database Object.

الآن لنذهب إلىFolder  ال Security الموجود داخل قاعدة بيانات Sample ثم Folder ال Users, ثم اختيار ال NewUser الذي قمنا بإنشائه, ثم تغيير الخصائص Properties.


تظهر شاشة











الثلاثاء، 8 يوليو 2014

Rtrim() Function

Rtrim() Function
تعمل الدالة Rtrim() Function على حذف المسافات من الجهة اليمنى للنص.


الجدول التالي الاسماء توجد قبلها وبعدها مسافات كما بالصورة.


SELECT FirstName  + ' ' + SecondName + ' ' + LastName AS FullName FROM dbo.tblEmployee

هنا قمنا بدمج جميل Columns في  Columnواحد FullName.


استخدمنا Rtrim و Ltrim لحذف المسافات.

SELECT  LTRIM(RTRIM(FirstName)) + ' ' + LTRIM(RTRIM(SecondName)) + ' '
        + LTRIM(RTRIM(LastName)) AS FullName
FROM    dbo.tblEmployee






Ltrim() Function

Ltrim() Function
نستخدم الدالة  Ltrim() Function لحذف المسافات من الجهه اليسرا للنص.
SELECT '                                      iPhone'

SELECT LTRIM('                         iPhone')


في الجدول التالي Name Column به اسماء ولكن كل اسم قبلة مسافات ونريد عرض الاسماء بدون هذه المسافات.

جدول tblPerson:


SELECT  ID ,
        LTRIM(Name) ,
        Email
FROM    dbo.tblPerson



CHAR()Function

String Function

CHAR()Function
تستخدم في تحويل  Convertsمن ال ASCII Cod  إلى Character حرف.
SELECT CHAR(65)
النتيجة Result :

A


مثال لطباعة جميع الحروف من A إلى Z .
DECLARE @Start INT
SET @Start = 65

WHILE ( @Start <= 90 )
    BEGIN
        PRINT CHAR(@Start)
        SET @Start = @Start + 1
    END


تبدأ الحروف الإنجليزية الكبيرة Capital من الرقم 65. و تبدأ الحروف الإنجليزية الصغيرة Small من 97. مثال.

SELECT ASCII('a')












مثال لطباعة جميع الحروف من a إلى z .

أولاً تبدأ الحروف الCapital  من الرقم 97 نجمع عليهم 26 عدد العروف الإنجليزية يصبح الرقم 123. ونبدأ التكرار
While من الرقم 122.
DECLARE @Start INT
SET @Start = 97

WHILE ( @Start <= 122 )
    BEGIN
        PRINT CHAR(@Start)
        SET @Start = @Start + 1
    END




لطباعة الأرقام من الرقم 0 إلى الرقم 9. نقوم  بإرجاع رقم الصفر 0 من خلال الدالة .ASCII() FUNCTION
سوف تكون النتيجة 48, ونقوم بجمع 48 + 9 = 57.
SELECT ASCII(0)
النتيجة Result :
48

DECLARE @Start INT
SET @Start = 48

WHILE ( @Start <= 57 )
    BEGIN
        PRINT CHAR(@Start)
        SET @Start = @Start + 1
    END




ASCII() Function

String Function

ASCII() Function



ASCII() Function
 تستخدم في إرجاع ال ASCII Code  لاي حرف.كل حرف يوجد له رقم ASCII  مثال.
SELECT ASCII('A')
النتيجة Result :
65
تبدأ الحروف الإنجليزية الكبيرة Capital من الرقم 65.



السبت، 5 يوليو 2014

Stored Procedure - Output Parameter

Stored Procedure - Output Parameter
تستخدم الكلمة Out  أو Output  لتعريف Parameter  من نوع Out.

نقوم الأن بإنشاء Stored Procedure باسم spGetEmployeeCount ونقوم بتعريف Parameters الأول وهو Gender والثاني EmployeeCount .

جدول tblEmployee:



إنشاء Stored Procedure:
CREATE PROCEDURE spGetEmployeeCount
    @Gender NVARCHAR(6) ,
    @EmployeeCount INT OUT
AS
    BEGIN
        SELECT  @EmployeeCount = COUNT(ID)
        FROM    dbo.tblEmployee
        WHERE   Gender = @Gender
    END


تنفيذ:


DECLARE @Total INT
EXECUTE spGetEmployeeCount 'Male',@Total OUT
PRINT @Total




يمكن استخدام SELECT بدلاُ من PRINT كالتالي:
DECLARE @Total INT
EXECUTE spGetEmployeeCount 'Male',@Total OUT
SELECT @Total AS [Total Value]


للحصول علي معلومات عن كائن  Object نستخدم ال System Stored sp_help  كالتالي:
هنا مع اسم جدول.
sp_help tblEmployee



هنا مع اسم Stored Procedure.

sp_help spGetEmployeeCount



ايضا يمكن الحصول علي الكائنات Objects التي يعتمد عليها ال Stored Procedure  باستخدام sp_depends

sp_depends spGetEmployeeCount