بنام خدا

با سلام

در اين مقاله چند رويه مفيد كه در برنامه نويسي با كمك SQL Server مي تونه مفيد باشه براتون توضيح مي دم لازم به ذكر است منبع اكثر رويه ها سايت www.SqlSeverCentral.com مي باشد و نويسنده رويه نيز در متن رويه هاي آمده است و من طي  كارهايي كه كردم اين رويه ها رو مفيد تشخيص دادم اميدوارم براي شما هم مفيد باشه.

  1. با كمك اين رويه مي تونيد يك پيغام را به كليه كاربراني كه در حال حاضر به SQL Server متصل هستند ارسال كنيد بطور مثال اگر بخواهيد SQL Server را Stop نماييد مي توانيد ابتدا يك پيغام به كليه كاربران ارسال و ساعت مشخصي را اعلام نماييد تا  كاربران در مدت باقيمانده از نرم افزارها خارج شوند.

 

CREATE PROC notify_users(@notification VARCHAR(100) = 'SQL Server shutting down') AS

 

BEGIN

 

/*******************************************************************************************************

Written by: Narayana Vyas Kondreddi

Date written: November 26th 2000

Purpose: To send NET SEND messages to all the connected SQL Server users in an NT Local Area Network

Input parameters:

Message to be sent

Tested on: SQL Server Version 7.0, SQL Server 2000

Email: answer_me@hotmail.com

*******************************************************************************************************/

SET NOCOUNT ON

 

DECLARE @msg VARCHAR(250)

DECLARE @hostname sysname

 

SELECT @hostname= min(RTRIM(hostname))

FROM

  master.dbo.sysprocesses (NOLOCK)

WHERE

  hostname <> ''

 

WHILE @hostname is not null

BEGIN

 set @msg='exec master.dbo.xp_cmdshell "net send ' + RTRIM(@hostname) + ' ' + RTRIM(@notification) + ' "'

EXEC (@msg)

    

SELECT @hostname= min(RTRIM(hostname))

FROM

              master.dbo.sysprocesses (NOLOCK)

WHERE

              hostname <> ''

              and hostname > @hostname

 END

SET NOCOUNT OFF

END

 

  1. با كمك اين رويه مي توانيد از داخل Stored Procedure ها ، Trigger ها و ... پيغام هايي دلخواه ايجاد شده را در داخل فايل متني ذخيره نماييد از اين رويه براي ايجاد يك مدير ثبت وقايع (Log Manager)   مي توانيد استفاده نماييد بطور مثال جهت ثبت ورود و خروج كاربران ، ويرايش اطلاعات(ايجاد ، اصلاح و حذف) و ... اين رويه كاربرد دارد.

 

CREATE PROC write_to_file

@msg VARCHAR(100),

@file VARCHAR(100),

@overwrite BIT = 0

AS

 

/*

  Written by: Narayana Vyas Kondreddi

  Date written: January 12th 2001

  Purpose: To log messages to text files from stored procedures/triggers/sql scripts

  Input parameters: message, file name, overwrite flag (1 to overwrite, 0 to append to file, 0 is the default)

  Example: EXEC write_to_file 'Duplicates found','C:\logfile.txt',0

  Tested on: SQL Server Version 7.0, 2000

  Remarks: You should have permissions required through access file system through xp_cmdshell

           See SQL Server Books Online for xp_cmdshell if you are having problems with this procedure

  Email: answer_me@hotmail.com

  Homepage: http://vyaskn.tripod.com

*/

 

BEGIN

          SET NOCOUNT ON

          DECLARE @execstr VARCHAR(255)

          SET @execstr = RTRIM('echo ' + COALESCE(LTRIM(@msg),'-') + CASE WHEN (@overwrite = 1) THEN ' > ' ELSE ' >> ' END + RTRIM(@file))

          EXEC master..xp_cmdshell @execstr

          SET NOCOUNT OFF

END

خوب دوستان اينم از اين مطلب – در قسمت هاي بعد رويه هاي مفيد ديگري رو باهم مرور مي كنيم.

اميدوارم از اين مطالب استفاده كنيد و براتون مفيد باشه لطفا نظرات اصلاحي و تكميلي خودتون رو در قسمت نظرات بگيد

و من ا... التوفيق – مدير سايت

 

 

بنام خدا

با سلام

يكي از مواردي كه هر شخص طراحي با اون در بانك اطلاعاتي درگيره ، انتقال يك بانك اطلاعاتي از يك دستگاه به دستگاه ديگر هست زيرا معمولا طراحي بانك بر روي دستگاه شخص صورت گرفته و نهايتا لازم است بعد از رسيدن به فاز پياده سازي بر روي سرور و در محيط مشتري نصب گردد كه در اين زمان لازم است بانك اطلاعاتي بنحوي بر روي دستگاه جديد آماده شود.

براي اينكار دو روش متداول وجود دارد:

  1. پشتيبان گيري و بازيابي Backup & Restore
  2. تهيه اسكريپت از ساختار بانك اطلاعاتي مبدا و اجراي آن بر روي كامپيوتر مقصد(SQL Script)

روش 1 : پشتيبان گيري و بازيابي اطلاعات : در اين روش شما لازم است از بانك اطلاعاتي مبدا يك پشتيبان كامل (Complete Backup) (البته هر تركيبي از پشتيبان ها كه قابل بازيابي باشد نيز قابل استفاده است و مي بايست عمل بازيابي نيز تناسب با آن صورت پذيرد) تهيه نموده و بر روي دستگاه جديد عمليات بازيابي را انجام دهيد ولي از آنجا در مقالات قبلي بصورت مفصل در خصوص پشتيبان گيري و بازيابي اطلاعات در MS SQL Server صحبت شد جهت اطلاعات بيشتر به مقالات مرتبط مراجعه نماييد.

نكته : از آنجاييكه با پشتيبان گيري علاوه بر ساختار بانك اطلاعاتي كليه اطلاعات موجود نيز در فايل پشتيبان ذخيره مي گردد لذا بعد از بازيابي نيز كليه اطلاعات موجود در بانك مبدا ، در بانك مقصد بازيابي مي گردد لذا اين روش براي حالتي كه مي بايست هم ساختار و هم داده ها منتقل شود مناسب مي باشد و در صورتي كه اطلاعات مورد نياز نباشد بهتر است از روش دوم كه توضيح داده خواهد شد استفاده شود و در صورت استفاده از اين روش مي بايد پس از بازيابي اطلاعات جداول را حذف نمود كه كار زمانبر و مشكلي مي باشد.

روش دوم : تهيه اسكريپت از ساختار بانك اطلاعاتي مبدا و اجراي آن بر روي كامپيوتر مقصد :

همانطور كه ذكر شد در اين روش تنها ساختار بانك اطلاعاتي منتقل شده (بانك اطلاعاتي بدون داده) كه با انتخاب گزينه هاي مناسب مي توان جداول ، ويوها.رويه هاي ذخيره شده ، ارتباطات.ايندكسها و ... را در بانك جديد ايجاد نمود.در اين روش با توجه به تنظيماتي كه شما در فرم مربوطه انجام مي دهيد دستورات T_SQL بصورت اتوماتيك تهيه مي شود.

نكته : از اين روش براي انتقال جزيي از ساختار بانك نيز مي توان استفاده نمود كه اين مورد به خصوص در خصوص بروزرساني و اضافه نمودن اشياء جديد بسيار مفيد مي باشد بطور مثال اگر شما چند جدول ، ويو و ... به بانك اطلاعاتي اضافه كرده باشيد و بخواهيد براي يكي از مشتريان ارسال نماييد اسكريپت را تنها براي اشياء جديد تهيه و ارسال مي نماييد.

 

جهت ايجاد يك اسكريپت از ساختار بانك اطلاعاتي مراحل ذيل را انجام دهيد :

ابتدا بر روي بانك اطلاعاتي مورد نظر كليك راست را فشرده و گزينه All TasksàGeneral sql script… را انتخاب نماييد تا فرم مربوط به ايجاد اسكريپت باز شود .شكل ذيل :

 

 

در فرم نمايش يافته سه Tab وجود دارد كه در General Tab اشياء مورد نظر را جهت ايجاد اسكريپت انتخاب مي نماييد ابتدا دكمه Show All را فشار دهيد تا ليست كليه اشياء موجود در بانك اطلاعاتي جاري در سمت چپ (Objects on Manufact) نمايش يابد حال مي توانيد از ليست مذكور اشياء مورد نظر خود را انتخاب (انتقال به سمت راست (Object to be scripted) ( نماييد در صورتي  كه هدف تهيه اسكريپت كامل باشد تنها لازم است گزينه script all obejcts را انتخاب نموده و يا بطور مثال اگر مي خواهيد تنها ويوها را منتقل نمايد تنها گزينه All Views را تيك بزنيد.

 

 

 

در تب دوم يا Formatting شما گزينه هاي ديگري را مي توانيد انتخاب نماييد كه مهمترين آنها عبارتند از :

دو گزينه اول كه بصورت پيش فرض نيز تيك خورده اند مرتبط با ايجاد دستورات ايجاد و حذف اشياء مي باشد ( بطور مثال اگر جدولي با عنوان Product داشته باشيد در اين حالت دستورات T- SQL مورد نياز جهت حذف Drop Table Product …  و سپس ايجاد با ساختار جديد Create Table Product … بصورت اتوماتيك ايجاد مي شود) طبيعي است در صورتي كه بخواهيد اسكريپت جهت بروز رساني ساختار يك بانك تهيه نماييد انتخاب اين گزينه هاي اجباري است زيرا لازم است ابتدا هر شي حذف و مجددا با ساختار جديد ايجاد شود.

 

 

گزينه مهم ديگر Generate scripts for all dependent objects مي باشد كه در صورتي كه تعدادي از اشيا را جهت تهيه اسكريپت انتخاب كرده باشيد با انتخاب اين گزينه تهيه اسكريپت هم براي خود اشيا انتخاب شده و هم براي اشيا مرتبط با آن صورت مي پذيرد لذا مي بايست در انتخاب اين گزينه در مواردي كه بانك اطلاعاتي داراي اطلاعات مي باشد دقت نماييد.

 

در تب سوم يا Options تنظيمات ديگري قابل انجام مي باشد كه مهمترين آنها در ذيل توضيح داده مي شود :

Script database : در اين صورت براي ايجاد بانك اطلاعاتي نيز دستورات T_SQL تهيه مي شود(Create Database Manufact ….)  كه جز در اولين سري نبايد اين گزينه را انتخاب نماييد وگرنه كل داده هاي شما از بين خواهد رفت.

 

 

Script index,scrip trigres,script Primary keys,… : از روي معناي اين سه گزينه مي توان فهميد كه چه عملي صورت مي پذيرد پس در بسياري از موارد لازم است اين سه گزينه را انتخاب نماييد تا ايندكس ها . كليد ها و ... و كلا اشيا مرتبط با جداول نيز در اسكريپت تهيه شده لحاظ گردد.

ايجاد ساختار بر روي دستگاه جديد : بعد از انجام مراحل فوق يك يا چند فايل با پسوند sql ساخته مي شود كه لازم است بر روي sql server دستگاه مقصد اجرا گردد جهت انجام اينكار در Enterprise Manager گزينه ToolsàSQL Query Analyzer را انتخاب نماييد تا محيط مربوطه نمايش يابد حال در قسمت بالا بانك اطلاعاتي مقصد را انتخاب نماييد (بصورت پيش فرض Master مي باشد) و سپس آيكن Open (در اينجا Load SQL Script) را كليك نموده و فايل sql كه مرحله قبل تهيه كرده ايد را انتخاب و باز نماييد در اينصورت دستورات T_SQL تهيه شده مشاهده مي گردد در اين حالت دكمه RUN (فلش سبز رنگ) را فشرده تا دستورات اجرا و ساختار مورد نظر ايجاد و يا بروزرساني گردد.لازم به ذكر است در صورت لزوم و تسط بر دستورات T_SQL مي توانيد تغييرات دلخواه را بر روي دستورات داده و يا آنها را اضافه و كم نماييد و سپس اجرا نماييد.

 

 

خوب دوستان اينم از اين مطلب

اميدوارم از اين مطالب استفاده كنيد و براتون مفيد باشه لطفا نظرات اصلاحي و تكميلي خودتون رو در قسمت نظرات بگيد

و من ا... التوفيق – مدير سايت

 

بازیابی و پشتیبان گیری اطلاعات - قسمت آخر

بنام خدا

با سلام

خوب در اين سري مقالات سعي شده تا مفاهيم و روش پشتيبان گيري و بازيابي اطلاعات در بانك اطلاعاتي Microsoft Sql Server2000 رو براتون شرح بدم هر چند اين مطلب بروز نيست ولي افراد زيادي با اون مشكل دارن و هنوز هم مشاهده مي شه اين مسئله رو جدي نمي گيرن و وقتي جدي مي گيرن كه دير شده و بايد كلي هزينه كنن تا شايد بتونن اطلاعات از دست رفته رو برگردونن

اول از همه يك مطلب رو لازمه تاكيد كنم كه هدف اصلي از پشتيبان گيري براي انتقال اطلاعات از يك كامپيوتر به يك كامپيوتر ديگه نيست بلكه ما بايد يك برنامه كامل و دقيق براي پشتيبان گيري از بانك و يا بانك هاي اطلاعاتي موجود داشته باشيم تا در مواقعي كه به هر علتي چه ايراد سخت افزار ، هك شدن ، اشتباه كاربري و ... داده ها از دست رفت امكان بازيابي آنها را داشته باشيم برنامه پشتيبان گيري كه شما تصميم به اجراي اون مي گيريد كاملا به حساسيت داده ، حجم داده و سرعت بروزشدن و افزايش داده ها وابسته است

 

بازيابي بانك اطلاعاتي از طريق SQL Server Enterprise Manager :

در اين قسمت روش بازيابي يك بانك اطلاعاتي با استفاده از ابزار مربوطه در محيط SQL Server Enterprise Manager شرح داده شده است و در موارد ضروري تصاوير فرمهاي مرتبط جهت فهم بهتر آورده شده است.

قدم اول : اگر قرار است اطلاعات را بر روي يك بانك اطلاعاتي موجود بازيابي نماييد ابتدا بانك اطلاعاتي مورد نظر را انتخاب نموده و با استفاده از منوي سريع (Righ Click) روي گزينه All TasksàRestore Database… كليك نماييد.(يا با انتخاب Databases و انجام عمليات فوق)

 

قدم دوم : با انتخاب گزينه Restore Database… فرم مربوطه نمايش داده مي شود و شما مي توانيد نتظيمات مورد نظر را انجام دهيد.

تذكر : در خصوص انواع بازيابي مقاله قسمت دوم در خصوص بازيابي و پشتيبان گيري را مطالعه نماييد.

در ذيل فرم مربوطه نمايش يافته است در اين مثال قرار است بازيابي اطلاعات بر روي بانك اطلاعاتي Manufact صورت پذيرد.

 

 

 

 

توضيحات قسمت هاي مختلف فرم:

  • Restore as database : عنوان بانك اطلاعاتي كه قرار است بازيابي بر روي آن صورت پذيرد كه اگر يكي از بانك اطلاعاتي موجود باشد بازيابي بر روي آن صورت پذيرفته و اگر نامي را وارد نماييد كه در حال حاضر وجود ندارد ابتدا بانك اطلاعاتي مورد نظر ايجاد شده و سپس بازيابي بر روي آن صورت مي پذيرد.
  • Restore : در اين قسمت با انتخاب Database (مانند شكل فوق) شما مي توانيد نام يكي از بانك هاي اطلاعاتي موجود را به عنوان منبع بازيابي انتخاب نماييد كه در اينصورت ليست آخرين تركيب پشتيبان هاي موجود مجاز(در صورت وجود) كه قابل بازيابي مي باشد نمايش مي يابد (كه در شكل بالا آخرين پشتيبان كامل كه از بانك Manufact تهيه شده آمده است) ولي شما در صورتي كه قصد داريد از نسخه هاي قديمي تر جهت بازيابي استفاده نماييد در ليست First backup to restore يكي از پشتيبان هاي قبلي را انتخاب نماييد. در اينجا اگر بخواهيد از پشتيبان هاي بانك اطلاعاتي ديگري جهت بازيابي استفاده نماييد از ليست Show backups of database بانك اطلاعاتي مورد نظر را انتخاب نماييد كه در اينصورت در قسمت ذيل آن ليست پشتيبان هاي مجاز بانك اطلاعاتي انتخاب شده نمايش مي يابد.

در صورتي كه بخواهيد از يك فايل پشتيبان كه از دستگاه ديگري تهيه شده است بعنوان منبع بازيابي استفاده نماييد گزينه Device را انتخاب نموده و در اين حالت با انتخاب فايل مورد نظر ، عمليات بازيابي را انجام دهيد.

 قدم سوم : در Tab بعدي يعني Options نيز لازم است تنظيمات مورد نياز را انجام دهيد كه به اهم آنها در ذيل اشاره شده است :

 

 

Force restore over existing database : در صورتي كه بازيابي بر روي يك بانك اطلاعاتي موجود صورت پذيرد مي بايست اين گرينه را تيك بزنيد در غير اينصورت پيغام خطا نمايش خواهد يافت.

Restore as : در Grid دو ستونه موجود ستون دوم با عنوان Restore as نشاندهنده مسير و عنوان فايل داده و لاگ بانك اطلاعاتي است كه قرار است بازيابي بر روي آن صورت گيرد بنابراين حتما مسير و عنوان فايل را قبل از بازيابي چك و در صورت نياز اصلاح نماييد.

لازم به ذكر است در اين ستون بصورت پيش فرض مسير و عنوان فايل هاي بانك اطلاعاتي كه از آن پشتيبان گرفته شده است نمايش مي يابد و در بيشتر موارد (بجز مواردي كه مي خواهيد پشتيبان قبلي يك بانك را بر روي خود آن بازيابي نماييد) لازم است اين مسير و عنوان ها را تغيير دهيد.

 

نكته : در خصوص بازيابي موارد ديگري نيز  وجود دارد ولي در مطلب فوق سعي شده است مطالب همگاني مطرح شود ولي در بازيابي هاي پيشرفته و موارد خاص احتياج به مطالعه بيشتري داريد.

 

خوب دوستان اينم از اين قسمت

اميدوارم از اين مطالب استفاده كنيد و براتون مفيد باشه لطفا نظرات اصلاحي و تكميلي خودتون رو در قسمت نظرات بگيد

و من ا... التوفيق – مدير سايت

 

پشتیبان و بازیابی اطلاعات - قسمت  چهارم

بنام خدا

با سلام

خوب در اين سري مقالات سعي شده تا مفاهيم و روش پشتيبان گيري و بازيابي اطلاعات در بانك اطلاعاتي Microsoft Sql Server2000 رو براتون شرح بدم هر چند اين مطلب بروز نيست ولي افراد زيادي با اون مشكل دارن و هنوز هم مشاهده مي شه اين مسئله رو جدي نمي گيرن و وقتي جدي مي گيرن كه دير شده و بايد كلي هزينه كنن تا شايد بتونن اطلاعات از دست رفته رو برگردونن

اول از همه يك مطلب رو لازمه تاكيد كنم كه هدف اصلي از پشتيبان گيري براي انتقال اطلاعات از يك كامپيوتر به يك كامپيوتر ديگه نيست بلكه ما بايد يك برنامه كامل و دقيق براي پشتيبان گيري از بانك و يا بانك هاي اطلاعاتي موجود داشته باشيم تا در مواقعي كه به هر علتي چه ايراد سخت افزار ، هك شدن ، اشتباه كاربري و ... داده ها از دست رفت امكان بازيابي آنها را داشته باشيم برنامه پشتيبان گيري كه شما تصميم به اجراي اون مي گيريد كاملا به حساسيت داده ، حجم داده و سرعت بروزشدن و افزايش داده ها وابسته است

 

پشتيبان گيري از بانك اطلاعاتي از طريق SQL Server Enterprise Manager :

در اين قسمت روش پشتيبان گيري از يك بانك اطلاعاتي با استفاده از ابزار مربوطه در محيط SQL Server Enterprise Manager شرح داده شده است و در موارد ضروري تصاوير فرمهاي مرتبط جهت فهم بهتر آورده شده است.

قدم اول : ابتدا بانك اطلاعاتي كه مي خواهيد از آن پشتيبان (Backup) تهيه نماييد را انتخاب نموده و با استفاده از منوي سريع (Righ Click) روي گزينه All TasksàBackup Database… كليك نماييد.

در شكل ذيل بانك اطلاعاتي با نام Manufact جهت پشتيبان گيري انتخاب شده است :

 

 

قدم دوم : با انتخاب گزينه Backup Database… فرم مربوطه نمايش داده مي شود و شما مي توانيد نوع Backup مورد نظر خود را انتخاب نماييد

تذكر : در خصوص انواع Backup مقاله قسمت سوم در خصوص بازيابي و پشتيبان گيري را مطالعه نماييد.

در ذيل فرم مربوطه نمايش يافته است:

 

 

توضيحات قسمت هاي مختلف فرم:

  • Backup : انتخاب نوع Backup مورد نظر
  • Destination : در اين قسمت مقصد(محل) پشتيبان مشخص مي شود كه مي تواند ديسك محلي كامپيوتر (Disk) و يا نوار مغناطيسي (Tape) باشد كه چون در شكل فوق Tape بر روي دستگاه نصب نبوده تنها پشتيبان گيري بر روي ديسك امكان پذير بوده است بعد از تعيين نوع مسير با زدن دكمه Add… مي توان يا يك فايل و يا يك Backup Device را به عنوان مقصد تعيين نمود كه تعيين يك فايل متداولتر بوده و در اين حالت مسير و يك نام براي پشتيبان انتخاب مي نماييد.
  • Overwrite : شما مي توانيد پشتيبان جديد را در ادامه يك فايل و يا Backup Device نوشته (در صورتي كه فايل قبلا ايجاد شده باشد و يك يا چند پشتيبان قبلا به آن اضافه شده باشد) كه در اين صورت مي بايست گزينه Append to media را انتخاب نماييد و يا اينكه با انتخاب گزينه overwrite existing media اطلاعات قبلي فايل يا Device تعيين شده را حذف و تنها اطلاعات پشتيبان فعلي در آن قرار گيرد.
  • Schedule : در صورتي كه بخواهيد در همان لحظه از بانك پشتيبان تهيه نماييد دكمه Ok را فشار داده تا عمليات مورد نظر صورت پذيرد ولي در صورتي كه بخواهيد اين پشتيبان بصورت اتوماتيك و در زمان يا زمانهاي مقرر تهيه شود با تيك زدن گزينه Schedule و فشردن دكمه ... اين كار امكان پذير مي باشد.

تذكر : در Tab بعدي يعني Options از فرم بالا گزينه هاي ديگري را نيز مي توانيد تعيين نماييد كه با توجه به اهميت كمتر از توضيح آنها صرف نظر شده است.

در اين قسمت با تيك زدن گزينه Schedule و فشردن دكمه ... فرم مربوط به Schedule نمايش مي يابد.

 

 

 

همانطور كه مشاهده مي نماييد در صورتي كه بخواهيد تنها يك بار در زمان مقرر پشتيبان تهيه شود One Time را انتخاب و تاريخ (On Date) و ساعت انجام عمليات (On Time) را مشخص مي نماييد ولي در صورتي كه بخواهيد در زمانهاي مقرر و منظم اين عمليات صورت پذيرد با انتخاب  Recurringو فشردن Change… مي توانيد برنامه مورد نظر خود را تنظیم نماييد.

 

 

در اين صفحه شما با تعيين گزينه هاي مختلف برنامه مورد نظر خود را مي توانيد تعيين نماييد كه در شكل فوق كاربر با انتخاب پشتيبان گيري بر مبناب هفته(Weekly) و تعيين روزهاي جمعه هر هفته (Fri) و با تعيين ساعت 12:00:00 قبل از ظهر مشخص كرده است كه اين پشتيبان هفته اي يكبار اولين دقيقه روزهاي جمعه تكرار مي گردد.

 

تذکر مهم : در صورتی که هر JOB ي را در SQL Server تعريف نماييد كه قرار است طبق زمانبندي مشخص انجام شود (مانند Job پشتيبان گيري فوق) مي بايست سرويس  SQL Server Agent در زمان مورد نظر در حال اجرا باشد(Start) بهتر است بعد از نصب SQL Server هر دو سرويس SQL Server و SQL Server Agent را Start كرده و تيك مربوط به Auto Start Service When OS Starts را بزنيد تا در صورت Restart كردن دستگاه بصورت اتوماتيك هر دو سرويس Start شوند.

 

خوب دوستان اينم از اين قسمت – سري بعد ادامه اين مطلب رو با هم مرور مي كنيم

اميدوارم از اين مطالب استفاده كنيد و براتون مفيد باشه لطفا نظرات اصلاحي و تكميلي خودتون رو در قسمت نظرات بگيد

و من ا... التوفيق – مدير سايت

 

بازیابی و پشتیبان گیری در MS SQL Server

بنام خدا

با سلام

خوب در اين سري مقالات سعي شده تا مفاهيم و روش پشتيبان گيري و بازيابي اطلاعات در بانك اطلاعاتي Microsoft Sql Server2000 رو براتون شرح بدم هر چند اين مطلب بروز نيست ولي افراد زيادي با اون مشكل دارن و هنوز هم مشاهده مي شه اين مسئله رو جدي نمي گيرن و وقتي جدي مي گيرن كه دير شده و بايد كلي هزينه كنن تا شايد بتونن اطلاعات از دست رفته رو برگردونن

اول از همه يك مطلب رو لازمه تاكيد كنم كه هدف اصلي از پشتيبان گيري براي انتقال اطلاعات از يك كامپيوتر به يك كامپيوتر ديگه نيست بلكه ما بايد يك برنامه كامل و دقيق براي پشتيبان گيري از بانك و يا بانك هاي اطلاعاتي موجود داشته باشيم تا در مواقعي كه به هر علتي چه ايراد سخت افزار ، هك شدن ، اشتباه كاربري و ... داده ها از دست رفت امكان بازيابي آنها را داشته باشيم برنامه پشتيبان گيري كه شما تصميم به اجراي اون مي گيريد كاملا به حساسيت داده ، حجم داده و سرعت بروزشدن و افزايش داده ها وابسته است

 

انواع پشتيبان گيري (Backup Types) در بانك اطلاعاتي MS SQL Server :

چندين روش مختلف براي پشتيبان گيري از بانك اطلاعاتي در SQL Server وجود دارد كه مي توان با استفاده تركيبي از آنها ، امكان بازيابي اطلاعات را در موارد غير مترقبه ، فراهم نمود.

 

نوع Backup

توضيحات

Complete

پشتيبان گيري از كل بانك اطلاعاتي

Differential

پشتيبان گيري فقط از قسمتي كه نسبت به آخرين پشتيبان گيري كامل(Complete) تغيير نموده است صورت مي پذيرد.

Transaction Log

پشتيبان  گيري از بخشي از فايل Log  كه فعال بوده و آزاد نمودن قسمتي از Log كه غير فعال مي باشد.

File/Filegroup

پشتيبان گيري از فايلهاي مختلف و يا گروههاي فايل مختلف بصورت جداگانه

File Differential

تركيب نمودن پشتيبان  گيري Differential و File/Filegroup

 

توضيح : در خصوص نوع پشتيبان گيري File/Filegroup بايد گفت در صورتي كه تعداد فايلهاي داده اي كه بانك اطلاعاتي شما دارد بيش از يك عدد باشد از اين روش و بالطبع نوع آخر (File Differential) استفاده مي توان نمود.لازم به ذكر است در هنگام ايجاد هر بانك اطلاعاتي بصورت پيش فرض دو فايل كه يكي مخصوص داده ها و يكي مخصوص Log نمودن ترانزكشن هاي صورت گرفته مي باشد ايجاد مي گردد ولي شما مي توانيد بيش از يك فايل براي داده و همچنين بيش از يك فايل براي Log داشته باشيد كه در همان صفحه ايجاد بانك مي توان آنها را تعريف نمود و يا بعد از ايجاد بانك با رجوع به فرم Properties بانك اطلاعاتي مربوطه فايلهايي را به آن اضافه نمود استفاده از بيش از يك فايل در مواردي كه چندين هارد وجود دارد در  كنار يك طراحي مناسب مي تواند سرعت پردازشهاي شما را تا حد بسيار زيادي افزايش دهد. ان شاء ا... در يك مقاله مستقل در اين خصوص بتفصيل صحبت خواهم كرد.

 

مقصد كليه پشتيبان هاي تهيه شده مي تواند ديسك محلي كامپيوتر و يا نوار مغناطيسي (Tape) باشد و عمليات پشتيبان گيري هم از طريق Enterprise Manager و هم با استفاده از دستورات Transact-SQL امكان پذير مي باشد.

جهت پشتيبان گيري از طريق Enterprise Manager مي بايست ابتدا بانك اطلاعاتي مورد نظر را انتخاب نموده ، سپس از طريق منوي سريع(Right Click) گزينه All TasksàBackup Database… فرم پشتيبان گيري قابل دسترس خواهد بود.

 

مثال : در دستور ذيل ابتدا يك Backup Device مجازي به نام MyNwind1 ايجاد و سپس يك پشتيبان كامل بر روي Device تعريف شده گرفته شده است:

USE master
EXEC sp_addumpdevice 'disk', 'MyNwind_1', 
   DISK ='c:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\MyNwind_1.dat'
 
-- Back up the full MyNwind database.
BACKUP DATABASE MyNwind TO MyNwind_1

 

 

خوب دوستان اينم از اين قسمت – سري بعد ادامه اين مطلب رو با هم مرور مي كنيم

اميدوارم از اين مطالب استفاده كنيد و براتون مفيد باشه لطفا نظرات اصلاحي و تكميلي خودتون رو در قسمت نظرات بگيد

و من ا... التوفيق – مدير سايت

 

معرفی  Stored Procedure و User Defined Function

بنام خدا

با سلام

در اين مقاله به معرفي ، مشتركات و تفاوتهاي Stored Procedure و User Defined Function ها در بانك اطلاعاتي MS SQL Server مي پردازيم تا در مواقع لزوم گزينه مناسب را انتخاب نماييم.

از لحاظ كاركرد Stored Procedure ها و User Defined Function ها كاركرد مشابهي دارند بنحوي كه هر دو امكان ايجاد يك دسته دستورات SQL را جهت كاربردهاي آتي فراهم مي نمايند.اين قابليت ذخيره سازي ، كارايي زيادي داشته چون از طرق ذيل موجب صرفه جويي زمان برنامه نويسي مي گردد:

  • امكان استفاده مجدد كد نوشته شده در ساير برنامه ها كه موجب كاهش زمان توسعه سيستمها مي گردد.
  • مخفي نمودن جزييات زبان SQL بنحوي كه تنها توسعه دهندگان بانك اطلاعات با آن سر و كار داشته و توسعه دهندگان نرم افزار تنها با زبان هاي سطح بالاي برنامه نويسي درگير مي شوند.
  • امكان نگهداري متمركز را فراهم نموده بطوري كه قوانين تجاري (Business Logic) تنها لازم است در يك محل (سطح بانك اطلاعاتي) تغيير نمايد و پس از تغيير ، كليه برنامه هاي كاربردي مختلف ، متاثر مي گردند.

در نگاه اول Stored Procedure ها و User Defined Function ها كاملا شبيه به هم مي باشند ولي تفاوتهاي ظريفي بين آنها وجود داشته كه در ذيل مهمترين آنها آمده است :

  • Strored Procedure ها بصورت مستقل با استفاده از دستور Exec قابل فراخواني مي باشند در صورتي كه فراخواني Function ها تنها از طريق يك عبارت SQL امكان پذير است بطور مثال شما در ليست فيلدهاي يك دستور Select و يا در شروط Where مي توانيد از توابع استفاده نماييد.
  • استفاده از Stored Procedure ها امكان اعمال سطح دسترسي پيشرفته تري را فراهم مي نمايد و مي توان از تعريف دسترسي كاربران و برنامه هاي كاربردي به Stored Procedure بجاي تعريف دسترسي به جداول استفاده نمود.در مقايسه با دسترسي هاي معمول ، اين روش امكان اعمال محدوديت بيشتر با تعيين دسترسي تا سطوح ريزتر را فراهم مي نمايد. بطور مثال در حالتي كه قرار است يك كاربر با فروش هر كالا ، يك عدد از موجودي انبار كم نمايد شما مي توانيد با ايجاد يك Stored Procedure كه عمليات كسر موجودي را انجام مي دهد و تخصيص اجراي اين Stored Procedure به كاربر مربوطه ، تنها دسترسي لازم را كاربر داده و مانع از امكان تغيير ساير اطلاعات توسط كاربر شد.
  • توابع (Function) همواره بايد يك مقدار برگرداند (مقدار اسكالر و يا يك جدول) ولي يك Stored Procedure مي تواند هر مقدار ممكن را برگردانده و يا هيچ مقدار بر نگرداند(يكسري عمليات انجام دهد مانند رويه هايي كه براي Insert,Update,Delete نوشته مي شود و يا رويه هايي كه بدون بازگرداندن مقداري ، بروزرساني هاي ديگري انجام مي دهد.)

با همه اين مطالب Stored Procedure ها يكي از مفيد ترين و گرانبهاترين اشيا در بانكهاي اطلاعاتي بوده و شما مي توانيد با سرمايه گذاري بر روي استفاده صحيح از آنها ، بهره بسيار زيادي ببريد.

 

مقاله از Mike Chapple سايت About.Com J

 

بنام خدا

با سلام

خوب در اين سري مقالات سعي شده تا مفاهيم و روش پشتيبان گيري و بازيابي اطلاعات در بانك اطلاعاتي Microsoft Sql Server2000 رو براتون شرح بدم هر چند اين مطلب بروز نيست ولي افراد زيادي با اون مشكل دارن و هنوز هم مشاهده مي شه اين مسئله رو جدي نمي گيرن و وقتي جدي مي گيرن كه دير شده و بايد كلي هزينه كنن تا شايد بتونن اطلاعات از دست رفته رو برگردونن

اول از همه يك مطلب رو لازمه تاكيد كنم كه هدف اصلي از پشتيبان گيري براي انتقال اطلاعات از يك كامپيوتر به يك كامپيوتر ديگه نيست بلكه ما بايد يك برنامه كامل و دقيق براي پشتيبان گيري از بانك و يا بانك هاي اطلاعاتي موجود داشته باشيم تا در مواقعي كه به هر علتي چه ايراد سخت افزار ، هك شدن ، اشتباه كاربري و ... داده ها از دست رفت امكان بازيابي آنها را داشته باشيم برنامه پشتيبان گيري كه شما تصميم به اجراي اون مي گيريد كاملا به حساسيت داده ، حجم داده و سرعت بروزشدن و افزايش داده ها وابسته است

 

مدلهاي بازيابي (Recovery Models) :

در MS Sql Server 2000 ما سه مدل بازيابي داريم كه عبارتند از :

  1. Full
  2. Bulk-Logged
  3. Simple

نكته : مدل بازيابي كليه بانك هاي سيستمي يعني Master,MSDB,TempDB ، مدل Simple مي باشد.

نكته : مدل بازيابي كليه بانك هاي اطلاعاتي كه كاربران ايجاد مي نمايند بصورت پيش فرض Full در نظر گرفته مي شود كه بعد از ايجاد بانك مي توان در صفحه Properties و در تب Options آنرا تغيير داد.

مدل Full : در صورتي كه مدل بانك اطلاعاتي شما Full باشد Sql Server كليه ترانزكشن ها حتي ترانزكشن هاي دسته اي را نيز Log مي نمايد در اينجا حداكثر بازيابي ممكن مد نظر بوده و بالطبع امن ترين حالت ممكن براي سيستمهاي كاربردي مي باشد.

مدل Bulk-Logged : در اين مدل براي عمليات دسته اي ورود اطلاعات ، كمترين Log صورت مي پذيرد(تنها تخصيص و آزادسازي حافظه در Log ثبت مي شود) و بالطبع در مواردي كه داده هاي زيادي از طريق اين نوع عمليات وارد شده باشد امكان بازيابي وجود ندارد لازم به توضيح است دستور Select Into و BulkCopy از اين نوع عمليات دسته اي بوده و اگر مدل بازيابي شما Bulk-Logged باشد داده هايي كه از اين طريق وارد شده قابل بازيابي نيست.

مدل Simple : در اين مدل Log صورت نمي پذيرد و روش مناسبي براي بانك هاي عملياتي نمي باشد.

در ذيل بصورت خلاصه انواع روشهاي Backup ممكن مرتبط با هر يك از مدل هاي بازيابي آمده است:

توضيح : در سطر عنوان انواع روشهاي تهيه پشتيبان Backup Types)) و در ستون اول مدلهاي بازيابي آمده است.

 

File/Filegroup

Transaction Log

Differential

Complete

Recovery Model/Backup

غير فعال

غير فعال

قابل انجام

ضروري

Simple

قابل انجام

ضروري

قابل انجام

ضروري

Bulk-Logged

قابل انجام

ضروري

قابل انجام

ضروري

Full

 

مثال : با توجه به جدول بطور مثال اگر قرار باشد حداكثر اطلاعات ممكن بازيابي گردد و مدل بازيابي Full باشد لازم است هم آخرين فايل پشتيبان كه با روش Complete و هم آخرين فايل پشتيبان كه با روش Transaction Log تهيه شده در دسترس باشد بنابراين هر دو نوع ضروري تشخيص داده شده است توجه كنيد وضعيت براي Bulk-Logged نيز همين گونه است ولي اطلاعات موجود در Log براي اين حالت شامل اطلاعات دسته اي نمي باشد.

مثال : در هر سه مدل بازيابي روش پشتيبان گيري Differential قابل انجام مي باشد و اين بدان معني است كه در صورت دسترس بودن فايل پشتيبان Complete مربوط به يك بانك و فايل پشتيبان Differential همان بانك(كه بعد از آن تهيه شده باشد) بازيابي بيشتري صورت مي گيرد (تا زمان Differential) و در دو مدل آخر   با در دسترس بودن فايل پشتيبان )Transaction Logكه بعد از دو نوع ديگر تهيه شده باشد) تا تاريخ تهيه آن ، امكان بازيابي وجود خواهد داشت.

 

 

خوب دوستان اينم از اين قسمت – سري بعد ادامه اين مطلب رو با هم مرور مي كنيم

اميدوارم از اين مطالب استفاده كنيد و براتون مفيد باشه لطفا نظرات اصلاحي و تكميلي خودتون رو در قسمت نظرات بگيد

و من ا... التوفيق – مدير سايت

پشتیبان گیری و بازیابی اطلاعات - MS SQL Server 2000 Backup & Restore

بنام خدا

با سلام

خوب در اين سري مقالات سعي شده تا مفاهيم و روش پشتيبان گيري و بازيابي اطلاعات در بانك اطلاعاتي Microsoft Sql Server2000 رو براتون شرح بدم هر چند اين مطلب بروز نيست ولي افراد زيادي با اون مشكل دارن و هنوز هم مشاهده مي شه اين مسئله رو جدي نمي گيرن و وقتي جدي مي گيرن كه دير شده و بايد كلي هزينه كنن تا شايد بتونن اطلاعات از دست رفته رو برگردونن

اول از همه يك مطلب رو لازمه تاكيد كنم كه هدف اصلي از پشتيبان گيري براي انتقال اطلاعات از يك كامپيوتر به يك كامپيوتر ديگه نيست بلكه ما بايد يك برنامه كامل و دقيق براي پشتيبان گيري از بانك و يا بانك هاي اطلاعاتي موجود داشته باشيم تا در مواقعي كه به هر علتي چه ايراد سخت افزار ، هك شدن ، اشتباه كاربري و ... داده ها از دست رفت امكان بازيابي آنها را داشته باشيم برنامه پشتيبان گيري كه شما تصميم به اجراي اون مي گيريد كاملا به حساسيت داده ، حجم داده و سرعت بروزشدن و افزايش داده ها وابسته است

بطور مثال اگر شما يك شركت توليدي بوده و بر روي SQL Server خودتون 4 بانك با مشخصات ذيل داشته باشيد :

  1. بانك ISA Log كه كليه اطلاعات مربوط به كاركرد كاربران با اينترنت شركت در آن ذخيره مي شود. كه فرايندهايي وجود دارد كه بصورت اتوماتيك ميزان كاركرد هر شخص محاسبه مي نمايد.
  2. بانك TotalSystem85 كه شامل كليه اطلاعات سيستم جامع شركت (مالي/اداري/بازرگاني/توليد و ...) مي باشد و مربوط به سال گذشته است.
  3. بانك TotalSystemCurrent كه شامل كليه اطلاعات سيستم جامع شركت (مالي/اداري/بازرگاني/توليد و ...) مي باشد و مربوط به سال جاري است.
  4. بانك اطلاعات TaxiServices كه شامل اطلاعات استفاده پرسنل از تاكسي سرويس جهت ماموريتهاي اداري مي باشد.

بنظر شما برنامه پشتيبان گيري از اين 4 بانك اطلاعاتي مي بايد يكسان باشد بديهي است جواب منفي است يك برنامه احتمالي مي تواند به صورت ذيل باشد.

  1. اطلاعات Log مربوط به كاركرد اينترنت كه با سرعت زيادي رشد مي كند و احتمالا ظرف مدت كوتاهي به چندين گيگابايت خواهد رسيد از طريق مديريت فايلهاي Sql Server و يا از طريق جداسازي بانك اطلاعات مربوط به Log كاركرد اينترنت از بانك محاسبات كاركرد پرسنل با اينترنت جدا شده و سپس بصورت 3 روز يكبار از اطلاعات بانك محاسبات كاركرد پرسنل پشتيبان گيري شود

علاوه به آن بهتر است روالي تهيه شود تا محتويات اطلاعات Log كاركرد اينترنت مربوط به يكماه آخر نگهداري شده و ساير اطلاعات پاك شود زيرا از لحاظ يك شركت توليدي نگهداري Log مربوطه اهميت آنچناني ندارد البته دقت كنيد اين مسئله در مورد شركت ديگر كه مثلا سرويس اينترنت ارائه مي دهد مي تواند كاملا متفاوت باشد.

  1. در خصوص بانك اطلاعاتي TotalSystem85 با توجه به اينكه مربوط به سال قبل مي باشد شما مي توانيد از ماه 4 به بعد كه كليه سيستمهاي سال قبل بصورت خواندني در مي آيند پشتيبان گيري را با فواصل زيادي مثلا 15 روز يكبار تنظيم نماييد زيرا امكان تغيير اطلاعات و يا كم و زياد شدن داده هاي سال قبل بسيار كم و در مواردي صفر است.
  2. از آنجاييكه بانك اطلاعاتي TotalSystemCurrent حاوي اطلاعات جاري شركت بوده و بصورت لحظه اي به اطلاعات آن افزوده مي شود بايد برنامه فشرده تر و دقيقتري براي پشتيبان گيري از آن وجود داشته باشد يك برنامه مي تواند بصورت  ذيل باشد.

·        هر شب از بانك بصورت كامل پشتيبان تهيه شود.

·        نسخ كامل يكماه نگهداري شود و نسخه پشتيبان آخر ماه در گاوصندوق به مدت يكسال نگهداري شود.

·    در طول روز در دونوبت با فاصله زماني 6 ساعت پشتيبان Differential گرفته شود يكي ساعت 12 ظهر و يكي ساعت 6 بعد از ظهر(تقريبا وسط و پايان ساعت كاري)

·        در فواصل يكساعت به يكساعت Log Backup در ساعات كاري تهيه شود.

در خصوص انواع backup در مباحث بعد توضيح خواهم داد.

  1. با فرض اينكه ما بصورت هفته اي با تاكسي سرويس طرف قرارداد تسويه حساب مي نماييم مي توان هر شب يك پشتيبان كامل از بانك اطلاعاتي TaxiService تهيه و پشتيبان آخر هر هفته را براي مدت يكماه نگهداري نمود.

همانطور كه در مثالها مشهود است سناريوي پشتيبان گيري وابسته به پارامترهاي مختلفي است كه مي بايست با دقت آنها را لحاظ نموده تا در مواقع بحراني كه اطلاعات مفقود مي شود با اطمينان وسرعت قابل قبولي سيستمها را مجددا برپا نمود.

خوب دوستان اينم از اين قسمت – سري بعد ادامه اين مطلب رو با هم مرور مي كنيم

اميدوارم از اين مطالب استفاده كنيد و براتون مفيد باشه لطفا نظرات اصلاحي و تكميلي خودتون رو در قسمت نظرات بگيد

و من ا... التوفيق – مدير سايت