تم الكتابة في جمادى الثانية 24, 1429 01:35

السلام عليكم ورحمة الله وبركاته ...

 اليوم سوف اتكلم عن مفهوم Membership و Role Management في بيئة ASP.NET...

كثير من الأحيان نحتاج في برامجنا إلى تحديد مستخدمين للنظام(Members)، و هاؤلاء المستخدمين سوف تكون لهم مجموعة من المهام (Roles) و كل مجموعة منهم سوف تكون لهم خصائص و صلاحيات معينة.

على سبيل المثال، يوجد لدينا نظام إدارة مكتب عقاري، سوف تكون هناك صفحات للمستخدم العادي لكي يبحث عن العروض و تفاصيلها و سوف تكون هناك صفحات أيضاً لمسؤول النظام لكي يعمل على إدارة النظام من خلاله "إضافة عروض" على سبيل المثال.

لابد أن نتأكد في برنامجنا من أن المستخدم العادي للنظام لا يستطيع الوصول إلى صفحات إدارة النظام.

هناك طريقتين لعمل ذلك: الأولى هي أن نقوم بهذه المهمة برمجياً و هي معرضه للأخطاء طبعاً. و الأخرى هي استخدام   ASP.NET Membership &  Roles.

في سبيل استخدام هذه الخصائص لابد لك من وسيلة تخزن فيها اسماء المستخدمين و معلوماتهم، و بالتأكيد سوف نستخدم MS SLQ Server.

في البداية، دعونا نقوم بانشاء قاعدة بيانات باسم MyNewDB "طبعاً لابد من استخدام اسم افضل، و انا استخدمت هذه الاسم لدواعي العرض فقط" كما في الصورة:

الآن لدينا قاعدة بيانات فارغة و نريد من ASP.NET بملئ هذه القاعدة بالجداول المطلوبه، و ذلك عن طريق الأداة aspnet_regsql تستطيع الوصول إليها عن طريق:

 Start ثم All programs  ثم  Microsoft Visual Studio 2005 ثم Visual Studio Tools ثم Visual Studio 2005 Command Prompt. كما في الصورة:

اضغط على الصورة لتكبيرها

 

الان سوف تفتح نافذة اكتب فيها aspnet_regsql كما في الصورة:

اضغط على الصورة لتكبيرها

 

الآن سوف تفتح إداة تكون الجداول كما في الصورة:

اضغط على الصورة لتكبيرها

 

اضغط next ثم اختر الخيار الأول للإضافة كما في الصورة:

اضغط على الصورة لتكبيرها

 

و بعد ذلك اضغط على next ثم ثم باختيار اسم سيرفر قواعد البيانات "إذا كانت قواعد البيانات في نفس الجهاز اكتب localhost" و اختر اسم قاعدة البيانات الفارغة التي قمنا بانشائها كما في الصورة:

اضغط على الصورة لتكبيرها

 

و هنا انا استخدمت توثيق  Windows و بالامكان استخدام توثيق SQL إذا رغبت.

بعد ذلك اضغط على next و في النافذة الأخيرة اضغط على Finish كما في الصورة:

اضغط على الصورة لتكبيرها

 

الآن لو تفحصت قاعدة البينات التي انشئتها سوف تجد جداول Tables و View و Stored Procedures قد تم انشائها و كل ذلك للتعامل مع Roles و الـ Members في ASP.NET. كما في الصورة:

 

اضغط على الصورة لتكبيرها

 

في التدوينة القادمة إن شاء الله سوف أتكلم عن استخدام تعريف الـ Roles و Memebership في ASP.NET.

 

بالتوفيق...

Del.icio.usDigg It!DZone It!Reddit


تم الكتابة في جمادى الثانية 14, 1429 08:50

 

السلام عليكم ورحمة الله وبركاته ...

كما هو في العنوان، نريد ان نبح عن جملة "String" في جدول معين، و لكن المشكلة هي أننا نريد البحث في جميع حقول هذا الجدول و ليس في حقل واحد ... لكي نجعل البحث عام بشكل أكبر ...

الحل هو استخدام الكود التالي، و هو ينشئ Stored Procedure داخل قاعدة البيانات Master باسم sp_FindStringInTable و تقوم هذه الدالة بالبحث عن جمله داخل جدول...

الدالة sp_FindStringInTable تأخذ ثلاثة متغيرات للبحث ... هي:

stringToFind و هي الجملة المراد البحث عنها ...

schema و هي الschema المراد البحث داخلها ...

table و هو الجدول المراد البحث داخله ...

سنقوم كما قلت بانشاء هذه الدالة داخل قاعدة البيانات Master لكي يمكن استخدامها في اي قاعدة بيانات تكون موجودة لديك ...

USE master
GO

CREATE PROCEDURE sp_FindStringInTable @stringToFind VARCHAR(100), @schema sysname, @table sysname
AS

DECLARE @sqlCommand VARCHAR(8000)
DECLARE @where VARCHAR(8000)
DECLARE @columnName sysname
DECLARE @cursor VARCHAR(8000)

BEGIN TRY
   SET @sqlCommand = 'SELECT * FROM ' + @schema + '.' + @table + ' WHERE'
   SET @where = ''

   SET @cursor = 'DECLARE col_cursor CURSOR FOR SELECT COLUMN_NAME
   FROM ' + DB_NAME() + '.INFORMATION_SCHEMA.COLUMNS
   WHERE TABLE_SCHEMA = ''' + @schema + '''
   AND TABLE_NAME = ''' + @table + '''
   AND DATA_TYPE IN (''char'',''nchar'',''ntext'',''nvarchar'',''text'',''varchar'')'

   EXEC (@cursor)

   OPEN col_cursor  
   FETCH NEXT FROM col_cursor INTO @columnName  

   WHILE @@FETCH_STATUS = 0  
   BEGIN  
       IF @where <> ''
           SET @where = @where + ' OR'

       SET @where = @where + ' ' + @columnName + ' LIKE ''' + @stringToFind + ''''
       FETCH NEXT FROM col_cursor INTO @columnName  
   END  

   CLOSE col_cursor  
   DEALLOCATE col_cursor

   SET @sqlCommand = @sqlCommand + @where
   --PRINT @sqlCommand
   EXEC (@sqlCommand)
END TRY
BEGIN CATCH
   PRINT 'There was an error'
   IF CURSOR_STATUS('variable', 'col_cursor') <> -3
   BEGIN
       CLOSE col_cursor  
       DEALLOCATE col_cursor
   END
END CATCH

الآن هذا الكو قام بانشاء الدالة sp_FindStringInTable .

و لكي نستخدمها من الممك ان نستخدم هذا الكود:

USE AdventureWorks
GO
EXEC sp_FindStringInTable '%land%', 'Person', 'Contact'

و لاحظ أننا استخدمنا علامة % و من الممكن أن نستخدم * أيضاً لتحديد البحث بشكل أكبر ...

 

أتمنىأن تكون هذه الدالة مفيدة ...

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

 

طلال الحضبي.

المصدر: MSSQLTips.com

Del.icio.usDigg It!DZone It!Reddit

التصنيف: SQL Server , قواعد البيانات
البطاقات: ,

تم الكتابة في جمادى الأولى 26, 1429 22:44

  

السلام عليكم ورحمة الله وبركاته ...

 وقعت بالصدفة قبل فترة على موقع VistaDB و الحقيقة فوجئت لما وجدت داخله ...

أولاً: ما هو VistaDB ؟

VistaDB هي قاعدة بيانات SQL ... مصممة خصيصاً لمطوري بيئة الدوت نت NET. تعمل على الـ Microsoft .NET Framework و على Compact Framework الخاصة بالأجهزة الكفية و على Mono على لينكس.

 

 

ثانياًُ: ماذا يميز VistaDB ؟

طبعاً من تعريف VistaDB السابق، نجد انها لم تقدم شيء جديد!! و لكن VistaDB هي قاعدة بيانات خفيفة جداً صغيرة الحجم (أقل من 1 ميقا). و هي ملف DLL واحد فقط. أي ان محرك قواعد البيانات ليس EXE و لكنه ملف DLL واحد فقط تستطيع إدراجه في مشروعك و هو كما قلت أقل من وحد ميقا.

و ما يميز VistaDB أيضاً هو ان قواعد البيانات الخاصة بها هي أيضاً ملف واحد و لا يوجد Log file و Data file و لكن يوجد ملف واحد امتداده VDB3. و تستطيع عمل نسخة إحتياطية لقاعدة بيانات بأمر XCopy أو نسخ الملف الموجود فقط و تستطيع استرجاع قاعدة البيانات بلصق الملف فقط.

VistaDB تستطيع تحمل حجم 4 تيرابايت لكل قاعدة بيانات. و 65,535 جدول لكل قاعدة بيانات و 65,535 عمود لكل جدول و 65,535 Index لكل جدول أيضاً.

تدعم VistaDB النسخة الثالثة SQL-99 و لمزيد من المعلومات عن ذلك يمكنك زيارة الموقع هنا.

كما أن VistaDB تدعم Unicode و ذلك لكتابة باللغة العربية على سبيل المثال.

تستطيع التعامل مع VistaDB عن طريق T-SQL بنفس الطريقة مع MS SQL Server 2005 و تستطيع استخدام CLR باستخدام السي# أو VB.net.

يوجد منها نسخة Exress مجانية و لمزيد من المعلومات عنها تفضل هنا.

كما أن VistaDB مطورة بالكامل باستخدام #C.

و توجد عدد من الأدوات للتطوير باستخدام VistaDB مثل Data Migration Wizard و ذلك لنقل بياناتك من MS Access أو MS SQL Server إلى VistaDB .

كما يوجد Data Builder و التي تعطيك شاشات للتعامل مع قواعد بيانات داخل VistaDB حيث تستطيع إنشاء أو تعديل او حذف جدول كما تستطيع انشاء indexes, triggers, constraints, columns. و تسطيع عمل database encryption من خلالها.

كما انه لا يوجد حد لعدد CPU أو RAM الذي يدعمها.

 

ثالثاً: كيف تعمل VistaDB ؟

كما قلت سابقاً، محرك قواعد بيانات VistaDB هو ملف DLL واحد فقط، و قاعدة البيانات هي عبارة عن ملف VDB3 واحد. و باستخدام اداة مثل ILMerge تستطيع ان تضمن ملف DLL داخل ملف EXE الخاص ببرنامج.

و الشكل أدناه يبين آلية عمل VistaDB و  البرنامج الذي تبنيه. كما يبين الشكل ان VistaDB ستكون جزءً من البرنامج أو الموقع الذي تبنيه.

 

 

 

و عند ذلك لا داعي أن نحمل محرك قواعد البيانات مثلاً MS SQL Server 2005 في جهاز العميل الذي يستخدم الموقع أو البرنامج. كما أنه عند البحث عن مستضيف موقعك الشخصي لن تقلق إذا كان يدعم MS SQL Server أم لا فكل ما تحتاجه هو NET. فقط لكي تعمل VistaDB .

 

اتمنى أن يكون طرحي مفيداً و موفقاً و سوف اختبر المنتج و أبدي لكم رأيي فيه متى ما سمحت الفرصة.

 

 ولمزيد من المعلومات يمكنكم زيارة الموقع الرسمي http://www.vistadb.net/

 

مع تحياتي ,,, طلال الحضبي.

Del.icio.usDigg It!DZone It!Reddit


تم الكتابة في ربيع الثاني 20, 1429 21:54

 

السلام عليكم ورحمة الله وبركاته ...

كنت قد وعدت في المرة السابقة بالتكلم عن بعض مهام مسؤول قواعد البيانات Database Administrator و اليوم إن شاء الله سوف نتكلم عنها...

كمسؤول قواعد بيانات في منظمتك Database Administrator  لابد لك من وضع قائمة تشييك "Check List" تقوم بالمرور عليها بشكل دوري.

هذه الـ Check List سوف يكون فيها عناصر تقوم بالمرور عليها بشكل يومي و منها ما هو أسبوعي و منها ما هو شهري و منها ما هو أيضاً سنوي.

كل مسؤول قواعد بيانات لديه الـ Check List الخاصة به. و تختلف هذه الـ Check List من مسؤول لأخر. عني أنا سوف أعرض اليوم الـ Check List الخاصة بي.

المهام اليومية:

  • التحقق من أخذ نسخة إحتياطية Backup.
  • مراجعة الـ Job History الخاصة بقواعد البيانات.
  • مراجعة الـ SQL Event Log.
  • مراجعة مساحة القرص الصلب في السيرفر.
  • مراجعة الـ Event Logs الخاصة بالسيرفر.

و منا المهام الأسبوعية:

  • مراجعة خصائص و تعريفات الـ Surface Area.
  • مراجعة الـ Security Access على السيرفر.

و من المهام الشهرية:

  • عمل Index  Rebuild
  • عمل Index Reorginize
  • عمل تجربة و التحقق من الـ DB Restore

 

و من المهام السنوية:

  • عمل نسخة إحتياطية كاملة للسيرفر الخاص بقاعدة البيانات.

 

و كما أهمس في أذن كل مسؤول قواعد بيانات:

لا تنسى أن تأخذ نسخة إحتياطية من ملف master.mdf و model.mdf تحسباً لا قدر الله لأي طارئ. Cool

 

تحياتي ...طلال السبيعي,,,

 

Del.icio.usDigg It!DZone It!Reddit

التصنيف: SQL Server , قواعد البيانات
البطاقات: ,

 

السلام عليكم ورحمة الله وبركاته ...

من أحدى الواجبات اليومية  لمسؤول قواعد البيانات Database Administrator هي التأكد من أخذ نسخة إحتياطية بشكل يومي ...

و عندما يكون لديك عدد كبير من قواعد الييانات في سيرفرات مختلفه، تصبح هذه العملية أصعب و تستهلك وقت من الممكن أن يستهلك في أمور أكثر أهمية. فلابد من الذهاب عن طريق الـ SQL Server Management Studio و الربط بالسيرفر المطلوب، و من ثم استعراض مجموعة قواعد البيانات الموجودة لديك، و من ثم بزر الفأرة اليمين و تختار خصائص "Properties" ... و تعمل هذه الطريقة لكل قاعدة بيانات موجودة.

و من خلال تجولي في الإنترنت وجدت كود كتبه أحد المهتمين بمجال الـ Database Adminstration بحيث يعرض لك اسم قاعدة البيانات الموجودة في الـ Instance و كم عدد الأيام منذ آخر نسخة إحتياطية تم أخذها، و تاريخ آخر نسخة إحتياطية لقاعدة البيانات، كما هو معروض في الشكل أدناه.

 

اضغط على الصورة لتكبيرها

 

و هذا هو الكود:

/*
usc_Show_Last_Backup.sql
Author: Joseph Sack (6/13/2000)
Edited By: Buck Woody
Purpose: Shows the last time the databases were backed up.
*/
SELECT B.name
as Database_Name,
ISNULL(STR(ABS(DATEDIFF(day, GetDate(), MAX(Backup_finish_date)))), 'NEVER')
as DaysSinceLastBackup,
ISNULL(Convert(char(10), MAX(backup_finish_date), 101), 'NEVER')
as LastBackupDate
FROM master.dbo.sysdatabases B
LEFT OUTER JOIN msdb.dbo.backupset A
ON A.database_name = B.name
AND A.type = 'D'
GROUP BY B.Name
ORDER BY B.name

أتمنى أن يكون هذا الموضوع مفيداً بالنسبة لك...

كما أعدكم إن شاء الله تعالى أن أتكلم عن المهام اليومية التي من المفترض أن يقوم بها مسؤول قواعد البيانات Database Administrator لأي منشأه.

 

مع تحياتي ... طلال السبيعي.

Del.icio.usDigg It!DZone It!Reddit

التصنيف: SQL Server , قواعد البيانات
البطاقات: , ,

البحث



إخلاء مسؤولية
جميع الآراء التي تم التعبير عنها هنا هي آرائي الشخصية وهذه الاّراء لا تمثل وجهة نظر عملي على أي حال.
© جميع الحقوق محفوظة 2008 مدونة طلال
Sign in