Configuring Database Options
هر Database در SQL Server داراي چندين Option است كه يكسري از رفتار هاي
Database را كنترل مي كند اين Option ها به چندين بخش تقسيم مي شوند
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 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 استفاده كنيم :
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 خود را تغيير دهيد .
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 دسترسي داشته باشند
Recovery
Auto Options
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
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
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 }
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 نخواهد بود
برگرفته از سایت آشیانه
+ نوشته شده در سه شنبه نهم خرداد ۱۳۹۱ ساعت 17:57 توسط احمد داس زرین
|