هر 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 نخواهد بود

برگرفته از سایت آشیانه