ورود

View Full Version : backup and restore in network



fghdmhmmd
چهارشنبه 12 آبان 1389, 16:57 عصر
سلام.من يه برنامه نوشتم كه الان براي اجراش تو شبكه دچار مشكل شدم.چندتا سوال برام پيش اومده كه همگي يه جورايي به هم وابسته است.البته واسه اينكه تاپيك جديد ايجاد نكنم همه سوالامو اينجا ميپرسم :

1) من براي BackUp and Restore از روش Registry استفاده كردم.ولي الان تو شبكه دچار مشكل شدم.چون SQL روي سرور قرار داره و نميتونم مسير Backup رو تو سرور پيدا كنم.(با استفاده ار Registry مسير Backup ديتابيس رو پيدا ميكم)براي Backup گيري از چه روشي استفاده كنم كه تو شبكه جواب بده؟(البته با توجه به اينكه ممكن است روي سيستم Windows Server نصب باشه.بخاطر Permission بود كه من از روش Registry استفاده كردم)

2)بعدش ميخام وقتي هر كلاينت Backup ميگيره اين Backup روي هر درايو و مسيري كه كلاينت دوست داره در Server ذخيره بشه.براي انجام اين كار چيكار بايد بكنم؟(آيا نياز به نوشتن برنامه هاي Client/Server بااستفاده از روش Socket Programming هست يا بايد از روش ديگري استفاده كنم؟)

3)هنگام Restore كردن DB ميخام كه سرويس دهي به كلاينت ها متوقف بشه.براي اين كار بايد از چه روشي استفاده كنم؟آيا بايد از روش ServiceController استفاده كنم؟ميخام روش مطمئني باشه.يعني اگه مدير خاست DB رو Restore كنه اگه يه كلاينت در حال ذخيره داده ها روي DB هست داده ها از بين نره.

4)براي برنامه هاي تحت شبكه نياز به دانستن نام يا IP سرور هست.اما اگه نام يا IP سرور تغيير كرد چي؟آيا روشي هست كه بشه نام يا IP سرور را پيدا كرد؟

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

حمیدرضاصادقیان
پنج شنبه 13 آبان 1389, 09:44 صبح
سلام.


من براي BackUp and Restore از روش Registry استفاده كردم.ولي الان تو شبكه دچار مشكل شدم.چون SQL روي سرور قرار داره و نميتونم مسير Backup رو تو سرور پيدا كنم.(با استفاده ار Registry مسير Backup ديتابيس رو پيدا ميكم)براي Backup گيري از چه روشي استفاده كنم كه تو شبكه جواب بده؟(البته با توجه به اينكه ممكن است روي سيستم Windows Server نصب باشه.بخاطر Permission بود كه من از روش Registry استفاده كردم)

بعدش ميخام وقتي هر كلاينت Backup ميگيره اين Backup روي هر درايو و مسيري كه كلاينت دوست داره در Server ذخيره بشه.براي انجام اين كار چيكار بايد بكنم؟(آيا نياز به نوشتن برنامه هاي Client/Server بااستفاده از روش Socket Programming هست يا بايد از روش ديگري استفاده كنم؟)


این لینک (http://barnamenevis.org/forum/showthread.php?t=252570) رو نگاه کنید.


هنگام Restore كردن DB ميخام كه سرويس دهي به كلاينت ها متوقف بشه.براي اين كار بايد از چه روشي استفاده كنم؟آيا بايد از روش ServiceController استفاده كنم؟ميخام روش مطمئني باشه.يعني اگه مدير خاست DB رو Restore كنه اگه يه كلاينت در حال ذخيره داده ها روي DB هست داده ها از بين نره.

با استفاده از دستور Alter Database , Single User میتونید اینکارو انجام بدید. برای توضیحات بیشتر اینجا (http://msdn.microsoft.com/en-us/library/ms174269.aspx) رو ببینید.


براي برنامه هاي تحت شبكه نياز به دانستن نام يا IP سرور هست.اما اگه نام يا IP سرور تغيير كرد چي؟آيا روشي هست كه بشه نام يا IP سرور را پيدا كرد؟

برای این مورد شما میتونید با استفاده از روشهای Socket Programming کامپیوترهای موجود در شبکه رو پیدا کنید ولی تشخیص اینکه کدوم سروره به عهده کیست؟؟!!
شما باید یا با نام سرور یا IP به سیستم وصل بشید در غیر اینصورت هیچ راه دیگه ای ندارید.
موفق باشید

fghdmhmmd
پنج شنبه 13 آبان 1389, 16:51 عصر
سلام.مرسي آقاي صادقيان عزيز
براي سوالات اول و دومم تا اونجا كه من متوجه شدم بايد روي سرور يك مسير رو Share كنم و به جاي پيدا كردن مسير Backup خود SQL توسط Registry اين مسير رو دستي به فانكشنم بدم و بعدش تو برنامم مسير Backup و Restore رو همون مسير Share شده بدم.يعني :

\\Systemname\ShareName\Path\FileName.
پس با اين حساب همه فايل هاي Backup بايستي فقط در يك مسير خاص باشن؟آيا اين امكان وجود نداره كه كلاينت بتواند در هر مسير دلخواهي اين كار رو انجام بده؟

براي سوال سومم هم به لينكي كه داده بوديد سر زدم.ولي چيز زيادي ازش متوجه نشدم.اگه ميشه و اين امكان براي شما هست يه نمونه كد با توضيح براي من قرار دهيد.
باز هم از اينكه به سوالات من جواب داديد متشكرم.مرسي

حمیدرضاصادقیان
شنبه 15 آبان 1389, 07:47 صبح
سلام.

آيا اين امكان وجود نداره كه كلاينت بتواند در هر مسير دلخواهي اين كار رو انجام بده؟

چرا این امکان وجود داره و کاربر میتونه روی هر درایوBackup بگیره.در همون لینکها هم توضیح کامل داده شده است.


گه ميشه و اين امكان براي شما هست يه نمونه كد با توضيح براي من قرار دهيد.


USE master;
GO
ALTER DATABASE AdventureWorks2008R2
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO
ALTER DATABASE AdventureWorks2008R2
SET READ_ONLY;
GO
ALTER DATABASE AdventureWorks2008R2
SET MULTI_USER;
GO