واحد پشتیبانی نرم افزار

آموزش SQLserver (بخش دوم)

مهر ۴م, ۱۳۸۸ دسته : متفرقه | بدون دیدگاه »

خلاصه سازی داده ها

هنگامی که دو جدول در یک پیوند یک به چند سهیم هستند. وسیله محرک Query مقادیری از سطر را از یک طرف برای ارتباط دادن سطرها در طرفهای دیگری تکرار می کند. بعضی مواقع آن دقیقاً چیزی است که شما می خواهید، اما اغلب شما می خواهید تکرار کردن سطرها را از چندین طریق دسته بندی یا خلاصه سازید. در این درس، ما به دو روش برای انجام آن که عبارتند از کلید واژه DISTINCT و شرط GROUP BY نگاه خواهیم کرد.

شناختن SELECT DISTINCT
یکی از اهداف طرح پایگاه داده ارتباطی برداشتن وابستگی داده ها می باشد. اما بیشتر پایگاه داده به طور ضروری مقادیر واقعی در چندین سطر را شامل خواهد شد. یک جدولی که شامل اطلاعات آدرس مشتری می باشد برای مثال احتمالاً کد ایالتی و کشوری برای چندین سطر خواهد داشت که نه اشتباه و نه تکراری می باشد. نظر به اینکه هر کد ایالتی نسبتی از یک مشتری می باشد. به همین نحو یک جدول از چندین جهت از یک ارتباط یک به چند ممکن است هر مقدار کلید خارجی معلوم که چندین بار تکرار شده را داشته باشد. آن برای یک ارتباط یکپارچه از پایگاه داده لازم می باشد. اگر چه این تکرار می تواند بعضی مواقع نتایج Query را نامطلوب سازد. یک جدول مشتری با ۱۰۰۰ سطر با ۹۰ درصد مشتری از کالیفرنیا، Query زیر کد CA را ۹۰۰۰ بار خواهد باز گرداند که اصلاً یک نتیجه مفیدی نمی باشد.
SELECT State From Customer
کلید واژه Distinct در این موقعیت شما را کمک می کند. Distinct که درست بعد از SELECT قرار می گیرد به SQL Server دستور داده که سطرهایی چندگانه در قرارگیری نتایج را حذف نماید. بنابراین Query زیر هر کد ایالتی را فقط یک بار باز می گرداند به طور وضوح لیستی که شما جستجو می کنید.
SELECT DISTINCT State From Customer
راهنمایی: همتای کلید واژه Distinct ، All می باشد که SQL Server را برای بازگرداندن همه سطرها آگاه می سازد خواه آن واحد باشد یا خیر. از موقعی که این یک عملکرد پیش فرض از یک عبارت SELECT می باشد All به طور معمول استفاده نمی گردد. اما شما ممکن تصمیم بگیرید به در برداشتن آن اگر ساختار دستور Query را بیشتر قابل فهم سازید.

استفاده کردن از SELECT DISTINCT
کلید واژه Distinct می تواند در عبارت SQL از Query Distinct یا به وسیله تنظیمات Properties از Query مشخص گردد.

ایجاد کردن Distinct Query با استفاده از قاب دیاگرام
۱- Query Designer را برای جدول Oils به وسیله کلیک راست کردن نام جدول در قاب Details باز کرده روی جدول Open رفته و همه سطرهای بازگشتی را انتخاب می کنیم.
۲- قاب دیاگرام را به وسیله کلیک کردن روی دکمه قاب دیاگرام در نوار ابزار Query Designer نشان می دهیم.
۳- دکمه Add Table را کلیک می کنیم. Query Designer کادر محاوره ای Add Table را نشان می دهد.
۴- Plantparts را در لیست جدول انتخاب می کنیم و سپس Add را کلیک می کنیم. Query Designer جدول را به Query اضافه می کند.
۵- Close را برای بستن کادر محاوره ای کلیک می کنیم.
۶- دکمه قاب SQL را در نوار ابزار Query Designer کلیک می کنیم. قاب SQL ، Query Designer را نشان می دهد.
۷- علامت * بعد از کلید واژه SELECT را حذف می کنیم.

۸- دکمه قاب SQL را در نوار ابزار Query Designer کلیک می کنیم (OK را اگر Query Designer یک متن خطا درباره ساختار دستور عبارت SELECT نشان می دهد کلیک می کنیم). Query Designer قاب SQL را پنهان می سازد.
مهم: زمانی که شما Query Designer را باز می کنید حالت SQL پیش فرض معمولاً SELECT* می باشد. ستون ویژه در قاب دیاگرام به سبب اینکه آنها به لیست ستون اضافه می شوند انتخاب می گردند. مایکروسافت این را یک ویژگی در نظر می گیرد.
۹- در قاب دیاگرام فقط ستون Plantpart را از جدول Plantparts برای نشان دادن انتخاب می کنیم.

۱۰- دکمه Run را برای اجرای مجدد Query کلیک می کنیم. Query Designer هر مقدار Plantpart را چندین بار لیست می کند.

۱۱- در یک ناحیه خالی از قاب دیاگرام کلیک راست کرده و Properties را انتخاب می کنیم. Query Designer کادر محاوره ای Properties را نشان می دهد.

۱۲- گزینه مقادیر Distinct را انتخاب می کنیم.

۱۳- Close را برای بستن کادر محاوره ای کلیک می کنیم.
۱۴- دکمه Run را برای اجرای مجدد Query کلیک می کنیم. Query Designer هر مقدار را فقط یک بار نشان می دهد.

ایجاد کردن یک SELECT DISTINCT با استفاده از قاب SQL
1- قاب دیاگرام را پنهان ساخته و قاب SQL را نشان می دهیم.
۲- عبارت SELECT موجود را با متن زیر جایگزین می کنیم.
SELECT DISTINCT Plant Types Plant Type
FROM Oils INNER Join
Plant Types ON Oils Plant Type ID=Plant Types Plant Type ID

3- دکمه Run را برای اجرا مجدد Query کلیک می کنیم. Query Designer مقدار PlantType متمایز که به وسیله جدول Oils بازگشت شده را نشان می دهد.

شناختن GROUP BY
کلید واژه Distinct امر می کند. SQL Server را به بازگرداندن سطرهای واحد نظر به اینکه شرط GROUP BY ، SQL Server را به ترکیب سطرها با مقادیر یکسان در ستون یا ستونهای مشخص شده در شرط در داخل سطر تکی امر می کند.
مهم: هر ستونی که در شرط GROUP BY شامل می باشد باید در خروجی Query شامل گردد.
شرط GROUP BY اغلب با یک aggregate Function استفاده می گردد. یک aggregate Function محاسبات در مجموعه از مقادیر را به انجام می رساند و یک نتیجه تک مقداری را باز می گرداند. رایج ترین گزینه های به هم پیوسته استفاده شده در پرس و جوهایGROUP BY ، MIN می باشد که کوچکترین مقادیر را در مجموعه باز می گرداند. MAX که بزرگترین مقادیر در مجموعه را باز می گرداند و COUNT که تعدادی از مقادیر را در یک مجموعه باز می گرداند.

استفاده کردن از GROUP BY
شرط GROUP BY می تواند مشخص شود با استفاده کردن از هر یک از قابها در Query Designer ، اما قابهای SQL و Grid بیشترین کنترل را فراهم می سازد.

ایجاد کردن یک GROUP BY Query با استفاده از قاب Grid
1- قاب SQL را پنهان ساخته و قاب Grid را نشان می دهیم.

۲- ستون OilName را برای Query اضافه می کنیم.

۳- دکمه Group By را در نوار ابزار Query Designer کلیک می کنیم. Query Designer یک ستون Group By برای شبکه اضافه می کند و هر دوی مقادیر را برای Group By قرار می دهد.

۴- سل Group By را برای تغییر دادن سطر OilName به Count تغییر می دهیم.

۵- دکمه Run را برای اجرا مجدد Query کلیک می کنیم. Query Designer تعدادی از Oils را برای هر PlantType نشان می دهد.

ایجاد کردن یک Group By Query با استفاده از قاب SQL
1- قاب شبکه را پنهان ساخته و قاب SQL را نشان می دهیم.

۲- عبارت SELECT موجود را با متن زیر جایگزین می کنیم.
SELECT Plant parts Plant part Count (Oils Oil Name) As Number Of Oils
FROM Oils INNER Join
Plant parts ON Oils Plant part ID=Plant parts Plant part ID
GROUP BY Plant parts Plant part

3- دکمه Run را برای اجرای مجدد Query کلیک می کنیم. Query Designer مقدار oils برای هر Plantpart نشان می دهد.

استفاده کردن از شرط HAVING
شرط Having سطرهای بازگردانده شده به وسیله شرط GROUP BY را از همان راهی که یک شرط Where سطرهای بازگردانده شده را به وسیله شرط SELECT محدود می سازد. هر دو شرط Where و Having می تواند در یک عبارت SELECT شامل شود که شرط Where قبل از گروه بندی علمیات و شرط Having بعد از آن به کار برده می شود. ساختار دستور شرط Having همانند شرط Where می باشد به استثنای اینکه شرط Having می تواند شامل یکی از توابعهای به هم پیوسته باشد که در لیست ستونها از شرط SELECT قرار می گیرد. اگر چه شما باید توابع به هم پیوسته را تکرار کنید. برای مثال شرط Having که در حالت زیر استفاده شده صحیح می باشد.
SELECT Plant parts Plant part Count (Oils Oil Name) As Number Of Oils
FROM Oils INNER Join
Plant parts ON Oils Plant part ID=Plant Parts Plant part ID
GROUP BY Plant parts Plant part
HAVING Count (Oils Oil Name)>3
اگر چه شما نمی توانید از اسم مستعار برای تابع Count در شرط Having استفاده کنید. بنابراین شرط Having زیر درست نخواهد بود.
HAVING Number Of Oils>3

ایجاد کردن یک Query با استفاده از HAVING در قاب Grid
1- قاب SQL را پنهان ساخته و قاب Grid را نمایش می دهیم.

۲- ۵Add> را برای سل مورد نظر از ستون oil Name قرار می دهیم.

۳- دکمه Run در نوار ابزار Query Designer را برای اجرای مجدد Query کلیک می کنیم.

ایجاد کردن یک Query با استفاده از HAVING در قاب SQL
1- قاب Grid را پنهان ساخته و قاب SQL را نشان می دهیم.

۲- شرط Having را برای HAVING (Count (Oils Oil Name)<5) تغییر می دهیم.

۳- دکمه Run در نوار ابزار Query Designer را برای اجرای مجدد Query کلیک می کنیم. Query Designer فقط آن Plantparts که Oils اشتراکی کمتر از ۵ دارد را نشان می دهد.

آموزش SQLserver – قسمت اول

مهر ۴م, ۱۳۸۸ دسته : متفرقه | بدون دیدگاه »

مجموعه مقالات آموزشی فوق از سایت http://www.iritn.com گرفته شده است.

توسط SQL میتوان درون یک بانک اطلاعاتی پرس و جو کرده (Query) و نتیجه را برگرداند. بانک اطلاعاتی شامل آبجکتی به نام جدول (Table) میباشد.
رکوردها در بانکهای اطلاعات در جداول ذخیره میگردند.
جدول شامل سطر و ستون میباشند.
در زیر میتوان یک جدول را مشاهده کرد :
Last Name First Name Address City
مثال:
Select Last name from persons
پر کاربرد ترین دستورات SQL شامل موارد زیر است :
SELECT استخراج یک داده از بانک اطلاعاتی
UPDATE به روز رسانی یک داده درون بانک
DELETE پاک کردن یک داده از بانک اطلاعاتی
INSERT وارد کردن یک داده جدید به بانک اطلاعاتی
همچنین در SQL میتوان داده هایی نیز تعریف کرد :
CREATE TABLE ایجاد یک جدول جدید
ALTER TABLE تغییر دادن یک جدول
DROP TABLE پاک کردن یک جدول
CREATE INDEX ایجاد یک اندیس
(کلید جستجو) DROP INDEX پاک کردن یک اندیس

SQL و Active Server Pages – ASP :
SQL یکی از قسمتهای خیلی مهم ASP میباشد زیرا در ASP برای کار با بانکهای اطلاعاتی از SQL استفاده میشود. و توسط تکنولوژی ADO میتوان از SQL در ASP استفاده کرد.
دستور SELECT :
SELECT column-name(s) FROM table-name
مثال :
نام جدول Persons است
Last Name First Name Address City
Hasani Ali Esfahan

دستور Select همراه با شرط

SELECT column FROM table WHERE column condition value
عملگر ها در SQL:
عملگر مفهوم
= معادل بودن
<> برابر نبودن
> بزرگتر

دستور DISTINCT (جداسازی) :

SELECT DISTINCT column-name(s) FROM table-name
مثال :
نام جدول Order است Company Order Number
sega 3412

——————————————————————————–
دستور Order By :

برای مرتب کردن سطرها
نام جدول Order است Company Order Number
sega 3412
ABS Shop 5678
w3s 3212
W3S 6778
مثال :
SELECT Company , OrderNumber

دستور Insert :

INSERT INTO Table-Name ( Column1 , Column2) VALUES

مثال :
DELETE FROM Person WHERE Lastname=’hasani’ نام جدول Persons است last name First name Adress city
alian hasani NO 40 Esfahan
Hasani Ali No 15 Tehran
نتیجه :
last name First name Adress city
alian hasani NO 40 Esfahan
SEGA
W3S
Trio

——————————————————————————–
دسترسی به یک پایگاه داده از یک صفحه ASP :

١-ایجاد یک ADO Connection به یک پایگاه داده
۲-باز کردن Connection پایگاه داده
۳-ایجاد یک
ADO Record Set 4-باز کردن
Record set 5-گرفتن داده هایی که نیاز داریم از
Record Set 6-بستن
Record Set 7-بستن
Connection

——————————————————————————–
1-ایجاد یک ADO Connection به یک پایگاه داده

١-۱- روش DSN-LESS C:/InetPub/wwwroot/nor.mdb مسیر فایل نمونه
< % var conn=Server. CreateObject ( “ADODB.
Connection”) Conn. Provider=” Microsoft . Jet . OLEDB.4.0” Conn.Open
(“C:/InetPub/wwwroot/nor.mdb”) % >

——————————————————————————–
2- روش ODBC

-2- روش ODBC : در این روش ابتدا باید یک ODBD Connection به Data Base ایجاد کنیم و سپس از طریق ADO به فایل DSN به طریق زیر Connect کنیم.
< % var conn=Server. CreateObject

——————————————————————————–

ایجاد یک ODBC Connection به پایگاه داده MS Access :

١- وارد شدن به ODBC از Control Panel
2- انتخاب
System DSN 3- کلیک کردن روی دکمه ADD
4- انتخاب Microsoft Access Driver و کلیک کردن روی دکمه
Finish 5- در مرحله بعد کلیک کردن بر روی دکمه Select و تعیین محل پایگاه داده
۶- دادن یک نام در قسمت
Data Source Name 7- کلیک کردن روی دکمه OK برای اینکه قادر باشیم اطلاعات یک پایگاه داده را بخوانیم اطلاعات باید ابتدا در Record Set ، Load شوند. بنابر این بعد از ساختن یک Connection باید یک Record Set ایجاد کنیم.
مثال :
نام Data Base = nor.mdb
نام جدول =
Customer C:/Inetpub/wwwroot/nor.mdb Data Base مسیر فایل < % conn= Server. CreateObject ( “ADODB.Connection”)
Connection ایجاد
conn.Provider=”Micrisoft.Jet.OLEDB.4.0” conn . Open (“C:/WebData/ nor.mdb”) Connection بازکردن rs=Server. CreateObject (“ADODB.Recordset”)
Record Set ایجاد rs. Open(“Customer”, conn) Record Set بازکردن % > در این مثال تمام محتویات جدول Customer به rs ریخته میشود.
حال میخواهیم در انتخاب محتویاتی از Customer که میخواهند به rs انتقال داده شوند از دستور SQL استفاده کنیم.

——————————————————————————–

ساختن یک Connection و Record Set و به کار بردن SQL :

< % set conn=Server. CreateObject (“ADODB .Connection”
conn. Provider=”Microsoft.jet.OLEDB.4.0” conn.
Open ( “C:/Inetpub/wwwroot/nor.mdb”) (Record Se

——————————————————————————–

گرفتن داده هایی که نیاز داریم از Record Set :

بعد از اینکه Record Set را باز کردیم میتوانیم به داده هایی که نیاز داریم دسترسی داشته باشیم.
مثال :
دسترسی به فیلد name از جدول rs rs(name

——————————————————————————–

چاپ داده ها :

مثال : چاپ فیلد name از جدول rs Response.write(rs(n

بستن Recordset و Connection :

- برای بستن Recordset
rs.close() – برای بستن Connection

نگاهی به نحوه‌ی نگهداری کلمات عبور در Microsoft SQL Server

مهر ۱م, ۱۳۸۸ دسته : متفرقه | بدون دیدگاه »

یکی از قوی‌ترین ابزارهای مدیریت بانک‌های اطلاعاتی [۱] ، محصول شرکت Microsoft به نام Microsoft SQL Server® است. درسال ۱۹۹۵ شرکت Microsoft امتیاز تولید مشترک پروژه‌ی SQL Server را از Sybase®خرید و محصول خود را با نام Microsoft SQL Server به بازار معرفی کرد.

اولین نسخه از سری MSSQL Server با نگارش ۶ به بازار آمد و این درحالی بود که حتا تا چند سال پس از آن، هرگاه صحبت از محلی برای نگه‌داری اطلاعات به میان می‌آمد، همه‌ی نگاه‌ها به Oracle®معطوف می‌شد. تا این‌که Microsoft نگارش ۷ از سری MSSQL Server را پس از یک مهندسی مجدد در ساختار این برنامه ارایه کرد. با ارائه‌ی این نگارش Microsoft فصل نوینی را در زمینه‌ی تولید سیستم‌های مدیریت بانک اطلاعاتی آغاز کرد و توانست اکثریت این بازار را تحت پوشش خود قرار دهد. تا جایی‌‌که در پایان سال ۲۰۰ بیش از۶۰% تمام بانک‌های اطلاعاتی وب و ۷۰% از تمام بانک‌های اطلاعاتی تحت سیستم عامل Windows® ، MS SQL بوده اند.

امنیت ، به‌طور یقین یکی از مواردی‌ست که کاربران این‌گونه سیستم‌ها به آن بهای زیادی می‌دهند. در این مقاله به دور از اظهار نظر درمورد قدرت یا ضعف برنامه‌ی MSSQL Server در این زمینه، قصد بررسی وضعیت نگه‌داری کلمات عبور کاربران در آن را داریم.

چگونه MSSQLServer® کلمات عبور را نگه‌داری می‌کند؟

SQL Serverاز یک تابع مستند نشده – ()PWDencrypt – برای مخلوط کردن [۲] کلمات عبور کاربران، که در جدول SysxLogins در بانک اطلاعاتی Master نگه‌داری می‌شود، استفاده می‌کند. جزییات تابع PWDencrypt()تاکنون منتشر نشده است.

مخلوط کلمه‌ی عبور در MSSQL Server شبیه چیست؟

دستورات زیر را در Query Analyzer یا هر برنامه‌ی دلخواه خود تایپ کنید:

Select Password from Master.dbo.sysxlogins where name = ’sa’

چیزی شبیه به این را خواهید یافت:

۰×۰۱۰۰DF4C0B1E72BB7F9B3DB61DA3648B716FA8956FB20D12 6A751CABC25790961AB6EF9E86D59CFC0D5108272FFF

این مخلوط کلمه‌ی عبور برای کاربر ‘SA’ در دستگاه من است.

چه می‌توانیم از PWDencrypt() بیرون بکشیم؟

دستور زیر را وارد کنید:

Select PWDencrypt(’abc’)

نتیجه:

۰×۰۱۰۰EC02A44A2181C888A7B431778FBF2E4C1A620ABDEAAD 3A6698979F269A93E2871DDC0A65DC48015C9E5B1A55

چند ثانیه‌ی بعد مجدداً آن را اجرا کنید:

۰×۰۱۰۰D003A945B84B42D6CB19060453CD906BE04BC9610BB0 F54D40227748F3CE571C5762BBA61A9E7F03267071B3

دو مخلوط متفاوتند درحالی که ورودی ما( ‘abc’ ) ثابت بود. پس زمان نقش مهمی را در روند تهیه و نگه‌داری مخلوط‌ها بازی می‌کند. دلیل آن هم این است که اگر دو نفر از یک کلمه‌ی عبور استفاده کنند، مخلوط کلمات عبورشان متفاوت خواهد بود و درنتیجه یکسان بودن آن‌ها را نمی‌توان فهمید.

بزرگی و کوچکی حروف

دستور زیر را اجرا کنید:

Select PWDencrypt(’AABBCCDD’)

تنیجه:

۰×۰۱۰۰۱F09D27F363FD03442CFC83D00BFFC185D656591541B 006D363FD03442CFC83D00BFFC185D656591541B006D

با کمی جابجایی داریم:

۰×۰۱۰۰

۱F09D27F

363FD03442CFC83D00BFFC185D656591541B006D

363FD03442CFC83D00BFFC185D656591541B006D

همان‌طور که می‌بینید، ۴۰نویسه‌ی [۳] آخر با ۴۰تای یکی مانده به آخر برابر است. با چند آزمایش نظیر می‌توان دریافت که کلمات عبور درواقع ۲بار نگه‌داری می‌شوند. یک‌بار به‌حالت عادی و یک‌بار هم به صورت حروف بزرگ. حال اگر برنامه‌ای بخواهد از روش سعی و خطا برای به دست آوردن کلمات عبور استفاده کند، می‌تواند به جای امتحان کردن تمام حروف، یک‌بار به صورت کوچک و یک‌بار به صورت بزرگ، تنها حالت بزرگ را امتحان کند و این تعداد حروف را کمتر و کار را راحت‌تر می‌کند.

نقش زمان

دریافتیم که تغییر زمان باعث تغییر مخلوط می‌شود. نیز می‌دانیم که باید داده‌ای از آن زمان همواره در دست باشد تا وقتی کاربری اقدام به ورود به MSSQL Server می‌کند، بتوان کلمه‌ی وارد شده توسط او را با کلمه‌ی عبور مخلوط شده مقایسه کرد. آن داده بخش اول از مخلوط است (هشت نویسه‌ی قبل از دو دسته‌ی ۴۰تایی). درمثال بالا داشتیم:

۰×۰۱۰۰

۱F09D27F

363FD03442CFC83D00BFFC185D656591541B006D

363FD03442CFC83D00BFFC185D656591541B006D

اطلاعات مورد نظر ما ۱F09D27F است و اتفاقی که می‌افتد از این قرار است:

ابتدا تابع Time() –در زبان C – فراخوانده شده و نتیجه‌ی آن به عنوان ورودی تابع SRand() استفاده می‌گردد. حاصل این تابع یک نقطه‌ی آغاز برای تهیه‌ی اعدادی دروغین خواهد بود. حال تابع Rand() فراخوانی می‌شود. عدد برگردانده شده به صورت رشته(نه عدد) نگه‌داری می‌شود. این عدد را i1 درنظر بگیرید. یک‌بار دیگر تابع Rand() فراخوانی شده عدد کاذب دیگری برایمان فراهم می‌کند. این عدد را نیز i2 می‌نامیم. حال اعداد i1 و i2 کنارهم قرار می‌گیرند( :i1:i1 ) و یک عدد واقعی را می‌سازند. به صورتی که i1 بخش پرارزش و i2 بخش کم ارزش آن عدد است.

مخلوط کلمه‌ی عبور

کلمه‌ی عبور کاربران به فرم UNICODE تبدیل می‌شود- اگر نبود- سپس عدد ساخته شده در بخش قبل به انتهای آن اضافه می‌شود و حاصل به تابع Crypt در Advapi32.dll ارسال می‌شود تا به‌کمک الگوریتم “مخلوط سازی امن [۴] ” یا SHA یک مخلوط از آن ساخته شود. سپس کلمه‌ی عبور به حالت بزرگ تبدیل می‌شود، یکبار دیگر عدد ساخته شده به انتهای آن اضافه می‌شود و یک مخلوط دیگر به دست می‌آید:

۰×۰۱۰۰ یک مقدار ثابت

۱F09D27F Rand () عدد ساخته شده توسط

۳۶۳FD03442CFC83D00BFFC185D656591541B006D مخلوط کلمه‌ی عبور

۳۶۳FD03442CFC83D00BFFC185D656591541B006D مخلوط حالت بزرگ کلمه‌ی عبور

روند تصدیق کلمه‌ی عبور کاربران.

هنگامی که یک کاربر سعی در وارد شدن به MSSQLServer دارد، ابتدا SQL Server بخش مربوط به زمان (و مربوط به این کاربر) را از داخل جدول Master.dbo.sysxlogins خارج می‌کند. سپس آن را یک‌بار به انتهای کلمه‌ی عبور وارد شده‌ی کاربر و بار دیگر به انتهار کلمه‌ی عبور وارد شده باحروف بزرگ می‌چسباند و با الگوریتم گفته شده یک مخلوط ساخته می‌شود. اگر این مخلوط با مخلوط موجود در جدول یکسان بود، کاربر می‍‌تواند وارد شود. درغیر این صورت کلمه‌ی عبور او اشتباه است.

منابع:

Microsoft SQL Server Passwords (Cracking the password hashes) by David Litchfield 24th June 2002 www.ngssoftware.com

Designing SQL Server 2000 Databases for .Net™ Enterprise Servers by Robert Patton, Jennifer Ogle

——————————————————————————–

[1] RDBMS: Relational Database management System
[2] Hashing
[3] Character
[4] Secure Hashing Algorithms

نویسنده : آزاد کمالی روستا
ناشر : سایت همکاران سیستم