هر Database در SQL Server داراي چندين Option است كه يكسري از رفتار هاي
Database را كنترل مي كند اين Option ها به چندين بخش تقسيم مي شوند
Recovery
Auto Options
Recovery Options
Recovery Options رفتار Transaction Log را تعيين مي كند و همچنين چگونگي Handle , Page هاي آسيب ديده
Recovery Models
هر Database در داخل SQL Server داراي يك سري خصوصياتي است كه Recovery
Model ناميده مي شود . Recovery Model انواع Backup هايي كه ما مي توانيم
از يك Database را بگيريم مشخص مي كند .
چند نوع Recovery Model در SQL Server 2008 وجود دارد :
Full
Bulk-Logged
Simple
Full Recovery Model
زماني كه مدل Full Recovery براي يك Database انتخاب مي شود , تمام تغييراتي كه توسط data manipulation
language (DML) و data defi nition language (DDL), رخ مي دهد در فايل Transaction Log ثبت مي شود
اين نوع Recovery بهترين نوع مي باشد زير تمام Log ها را ثبت مي كند و
اگر زماني اطلاعات شما از بين رفت مي توان توسط Transaction Log اطلاعات را
بازيابي نمود .
نكته : بهتر است براي Databaseهاي حائز اهميت از اين نوع Recovery استفاده
شود زيرا در صورت از بين رفتن اطلاعات شانس بازيابي نسبتا زياد است .
Bulk-Logged Recovery Model
در مورد Database هايي كه BULK INSERT هاي سنگيني دارند , اين نوع Recovery
مفيد خواهد بود زيرا در حالت Buli-Logged تمام جزئيات مربوط به BULK
INSERT ثبت نمي شود كه اين امر هم باعث بالا رفتن سرعت BULK INSERT مي شود و
هم Log File به صورت ناگهاني رشد نمي كند .
در مورد موارد زير مي توانيم از Bulk-Logged Recovery Model استفاده كنيم :
BCP
BULK INSERT
SELECT. . .INTO
CREATE INDEX
ALTER INDEX. . .REBUILD
Simple Recovery Model
سومين نوع Recovery , Simple است , كه عمليات ثبت Log ها در داخل
Transaction Log را دقيقا مانند Full Recovery Model انجام مي دهد , ولي
فقط Transactionها ي Live و يا تازه رو ثبت مي كند. SQL , Transcation
هايي كه با موفقيت به پايان رسيده اند را در يك فاصله زماني مشخص پاك مي
كند به همين دليل هيچ وقت تمام Transaction ها ثبت نمي شوند
نكته: زماني كه ما Simple Recovery Model استفاده مي كنيم , نمي توانيم از
Transaction Log Backup استفاده كنيم , زيرا تمام Log ها در فايل
Transaction Log ثبت نمي شود
Recovery Model يكي از خصوصيات Database است كه شما مي توانيد با استفاده
از دستور زير نوع Recovery Model مربوط به Database خود را تغيير دهيد .
ALTER DATABASE database_name
SET RECOVERY { FULL | BULK_LOGGED | SIMPLE }
Auto Options
هر بانك اطلاعاتي جديدي كه در SQL Server ايجاد مي شود , براساس بانك
اطلاعاتي Model ساخته مي شود , گاهي اوقات مي بايست براي بالا رفتن
Performance , Database بعضي از اين گذينه ها را تغيير داد .
چندين Option براي هر Database در SQL Server وجود دارد :
Auto Close
وقتي كاربري به يك DB وصل مي شود آن DB*مي بايست باز شود , وقتي يك DB* باز
است از منابع سيستم مثل Ramو Cpu استفاده مي كند , زماني كه اين گذينه
True باشد , زماني كه آخرين كاربر ارتباطش با DB قطع شد , DB*بسته مي شود
Auto Create Statistic
در SQL به محض اينكه يك Query*اجرا مي شود , Query Analiyzer به منظور
تعيين بهترين روش براي برگرداندن نتايج عمل مي كند كه اين كار رو با خوندن
يك سري آمار در باره هر كدام از ستون هاي مطرح در دستور Select انجام مي
دهد, زماني كه اين گذينه True باشد خود SQL به صورت خودكار اين آمار را
براي هر ستون آماده مي كند .
Auto Update Statistic
زماني كه اين گذينه يه صورت True باشد خود SQL Server به صورت خودكار آمار ها را Update مي كند
Default Cursor
زماني كه مقدار local براي اين گذينه انتخاب شود , اين به اين معنا است كه
تنها پروسيجر ايجاد كننده هر Cursor مي تواند از آن استفاده كند .
مقدار Global به اين معتا است كه پروسيجر هاي ديگر نيز مي توانند ا اين
Cursor استفاده كنند , مثلا ما يك پروسيجر به نام test داريم كه در آن يك
cursor وجود دارد , در صورتي كه اجراي پروسيجر test موجب اجراي پروسيجر هاي
ديگر شود آن پروسيجر ها نيز مي توانند از cursor موجود در پروسيجر
test*استفاده كنند .
ANSI NULL Default
در SQL زماني كه يك جدول ايجاد مي كنيم مي توانيم مشخص كنيم كه Column هاي
ما مي توانند خالي و يا NULL باشند يا خير , اگر در هنگام ايجاد و يا تغيير
جدول , مشخص نكنيم كه ستون مي تواند خالي باشد و چنانچه مقدار اين گذينه
False باشد , در آن صورت تخصيص مقدار NULL به ستون مجاز نيست , اگر مقدار
اين گذينه True باشد و تخصيص مقدار NULL نيز در هنگام ايجاد و يا تغيير
جدول مجاز شده باشد در آن صورت ستون ها مي توانند مقدار NULL دريافت كنند .
ANSI NULL Enable
زماني كه مقدار اين گذينه True باشد , انجام هر گونه مقايسه با NULL منجر
به NULL مي شود ولي اگر مقدار False براي اين گذينه انتخاب شود , با
NULL*مانند صفر بر خورد مي شود
ANSI Padding Enable
اين گذينه روش ذخيره سازي مقادبر كوچكتر از هر ستون را مشخص مي كند , اگر
مقدار اين گذينه True باشد در آن صورت كاراكتر هايي به ستون هاي نوع
Char(n) Not Null , Char(n) Null , Char(n) , Binary(n) Null اضافه مي شود
ولي چيزي به ستون هاي نوع Varchar(n) وVarBinery(n) اضافه نمي شود و داده
هاي انتهايي نيز برش داده نمي شود
ANSI Warning Enable
اگر مقدار False براي اين گذينه انتخاب شود , اگر بخواهيم عددي را بر صفر
تقسيم كنيم و يا در يك عبارت رياضي از Null استفاده كنيم , SQL مقدار Null
رو برمي گردانه و خطا نمي دهد ولي اگر مقدار اين گذينه True باشد , SQL
يك پيغام نمايش مي دهد .
Arithmetic Abort Enable
اين گذينه براي SQL Server مشخص مي كند كه در هنگام خطاي سرريز يا تقسيم بر
صفر چگونه برخورد كند , اگر True انتخاب شود SQL كل Transaction را لغو
مي كند ولي اگر مقدار False براي اين كذينه انتخاب شود SQL دستور را اجرا
مي كند و در نهايت يك پيغام هشدار نمايش مي دهد .
Concatenate Null Yields Null
اين گذينه مشخص مي كند كه در ادغام يك رشته به مقدار Null چطور برخورد كند ,
اگر اين گذينه True باشد , نتيجه Null مي باشد ولي زماني كه مقدار False
براي اين گذينه انتخاب شود با Null مانند صفر برخورد مي شود پس نتيجه ادغام
يك رشته با Null خود رشته مي شود .
Numeric Round Abort
اين گذينه مشخص مي كند كه SQL با خطاي گرد كردن چطور برخورد كند , اگر
مقدار اين گذينه True باشد SQL به محض از بين رفتن بخشي از دقت عدد خطايي
را اعلام مي كند ولي اگر اين گذينه False باشد هيچ خطايي نمايش داده نمي
شود
Parameterization
چنانچه مقدار اين گذينه Semple باشد , SQL هنگام تعيين پارامتر هاي Query
از رفتار هاي پيش فرض DB تبعيت مي كند , براي اينكه براي تمام Query هاي
DB از پارامتر ها استفاده شود بايد مقدار اين گذينه Forced شود .
Quoted Identifiers Enable
اگر بخواهيم در نام جدول از فاصله و يا كاراكتر ها رزرو شده استفاده كنيم
به صورت پيش فرض بايد نام را در بين دو [] بزاريم , اگر مقدار اين گذينه
True باشد مي تونيم از علائم نقل قول جفتي نيز استفاده كنيم .
Recursive Triggers Enable
چنانچه اين گذينه True باشد اگر اجراي يك Trigger موجب اجراي يك Trigger ديگر شود Trigger دوم نيز اجرا مي شود .
Page Verify
SQL در صورت خرابي سخت افزار و يا قطع برق ممكن است نوشتن داده ها در ديسك
را متوقف مي كند كه اين وضعيت خطاي I/O ناميده مي شود كه منجر به خراب شدن
DB مي شود , اين گذينه سه روش جهت برخورد با اين گونه مشكلات در اختيارمان
مي گذارد :
CheckSum
اين گذينه پيش فرض سبب ايجاد يك مقدار checksum براي كل data page ها مي
شود و آن رو در هنگام نوشتن محتواي page ديسك در هدر صفحه ذخيره مي كند ,
وقتي در آينده آن page خوانده ميشود اين مقدار دوباره محاسبه شده و با
مقدار ذخيره شده در هدر مقايسه مي شود اگر دو مقدار يكي بودند محتواي صفحه
قابل اطمينان مي باشد.
TornPageDetection
وقتي صفحه ايي در ديسك ذخيره مي شود اين گذينه بيتي را به صورت معكوس براي
هر سكتور 512 بايتي در هدر صفحه مي نويسد و وقتي صفحه در آينده خوانده مي
شود چنانچه اين بيت در وضعيت قبلي نباشد در آن صورت مشخص است كه محتواي
صفحه دچار مشكل شده است
Database Read Only
اين گذينه باعث مي شود كه DB به حالت فقط خواندني شود , در اين صورت هيچ
چيز در DB قابل نوشتن نخواهد بود , اين DB ها معمولا سريعتر از DB هاي
معولي هستند و معمولا براي DB هاي آرشيو از آنها استفاده مي شود
DataBase Status
اين گذينه غير قابل ويرايش مي باشد و وضعيت DB را مشخص كي كند كه داراي 5 گذينه زير مي باشد;
Emergency
DB در اين حالت فقط خواندني خواهد بود , برقراري ارتباط غير فعال مي شود و تنها مديران مي توانند به DB دستيابي داشته باشند
Inaccessible
اين مقدار مشخص مي كند كه Server محل نگهداري DB غير فعال شده و از طريق شبكه قابل دستيابي نيست .
Normal
اين گذينه مشخص مي كند كه همه چيز در حالت عادي قرار درد .
Offline
اين مقدار مشخص مي كند كه DB بسته شده و قابل تغيير نمي باشد .
Suspect
اين گذينه مشخص مي كند كه DB مشكل دارد و احتمالا DB بايد دوباره Restor شود .
Restrict Access
توسط اين گذينه مي توانيم كاربرانيكه به DB وصل مي شوند را كنترول كنيم كه داراي سه گذينه مي باشد
Multiple
اين مقدار پيش فرض امكان دسترسي تمامي كاربران به DB را فراهم مي كند
Single
اين گذينه در يك لحظه فقط به يك نفر امكان Connect شدن به DB را مي دهد
Restricted
با انتخاب اين گذينه تنها اعضاي db_owner و همچنين dbcreater و sysadmin مي توانند به DB دسترسي داشته باشند
نكته : ارتبا ط افرادي كه در حال كار هستند قطع نمي شود ولي هر كدام از
آنها به محض قطع شدن ارتباطش با بانك ديگر قادر به ارتباط با DB نخواهد بود
برگرفته از سایت آشیانه