PDA

نسخه کامل مشاهده نسخه کامل : backup و restore در SQLEXPRESS



CHAPTER
14-07-2009, 17:18
سام خدمت دوستان
من کلی در اینترنت جستجو کردم اما هیچ راه دقیق و کاملی رو برای گرفتن backup و restore از دیتابیس attach شده به برنامه به من ارائه نکرد تمام نمونه کدها رو امتحان کردم ولی نشد از smo هم استفاده کردم فایده ای نداشت حتی یکی گفته بود مثل یه فایل کپی پیست کنم
کانکشن استرینگ هم به صورت زیر هست که به وقتی بانک رو توی برنامه add می کنیم به صورت خودکار تولید میشه



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

فقط دوستان اگر یک sample بزارند عالی میشه از همه تقاضای کمک دارم
ممنون از لطف همه

bad_boy_2007
14-07-2009, 23:08
سام خدمت دوستان
من کلی در اینترنت جستجو کردم اما هیچ راه دقیق و کاملی رو برای گرفتن backup و restore از دیتابیس attach شده به برنامه به من ارائه نکرد تمام نمونه کدها رو امتحان کردم ولی نشد از smo هم استفاده کردم فایده ای نداشت حتی یکی گفته بود مثل یه فایل کپی پیست کنم
کانکشن استرینگ هم به صورت زیر هست که به وقتی بانک رو توی برنامه add می کنیم به صورت خودکار تولید میشه



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

فقط دوستان اگر یک sample بزارند عالی میشه از همه تقاضای کمک دارم
ممنون از لطف همه

دوست من احتمالا شما کاربر اکسس بودید
اگر میخوای از دیتابیس SQL به راحتی در شبکه هم استفاده کنید باید دیتابیستون رو به بانک اتچ کنید و در سری های بعدی صرفا نام بانک اطلاعاتی رو بدید نه آدرس فایل دیتابیس که شیوه صحیحی نیست (کار میکند ولی روش خوبی نیست)

از دستوری مشابه دستور زیر جهت اتچ استفاده کنید و سپس مجدد سعی کنید از SMO استفاده کنید :


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

و کانکشن جدید برنامت هم باید یه چیزی شبه به این بشه :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


اگه نخواستی از SMO استفاده کنی کوئری ای مشابه کوئری زیر عمل Backup رو میگیره :

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

CHAPTER
15-07-2009, 00:15
باور می کنید اصلا نمی تونم از بانک Access تو C# استفاده کنم :41:
ولی در مورد موضاعاتی که مطرح کردید دقیقا حق با شماست
ولی من نمی خوام کاربر نهایی رو درگیر نصب SQL Server و Attach کردن بانک بکنم.
یعنی راهی نداره توی MSDN هم جستجو کردم چیز درست درمونی پیدا نکردم


از کد ارائه شده تو این مقاله هم استفاده کردم



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


ولی توی این خط خطا می ده



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


در هر صورت لطف کردید دوست عزیز :11: :40:

CHAPTER
15-07-2009, 13:31
:41: انتظار سخته

_H2_
15-07-2009, 16:12
سلام


ولی در مورد موضاعاتی که مطرح کردید دقیقا حق با شماست
ولی من نمی خوام کاربر نهایی رو درگیر نصب SQL Server و Attach کردن بانک بکنم.


1- همانطور که دوستمان جناب bad_boy_2007 اشاره ای کردند، بدون attach این نحو پشتیبان گیری اصلاً جواب نمیدهد.
2- کی گفته باید کاربر را درگیر attach کنید؟ اگر هم به صورت عادی بخواهید برنامه کار کند و شبکه ای نباشد، بدون درگیر کردن کاربر میتوانید sqlserver-express را هم با setup خودتان نصب کنید.
(فراموش نکنید که در هر صورت روش AttachDbFilename فقط و فقط در نسخه رایگان express وجود دارد و کار میکند)

3- شما که از روشهای اتصال غیر استاندارد sqlserver (و بیشتر شبیه access) استفاده میکنید، خوب backup تان را هم مثل access بگیرید !!!!
کل فایل Database1.mdf را برای backup به محل جدیدی کپی کنید، ضمن اینکه میتوانید آن را فشرده هم کنید و نسخه فشرده شده آن را با فرمت GZIP به عنوان backup تحویل کاربرتان بدهید!

4- ولی در کل attach کردن و سپس backup گیری رسمی با SMO و یا با BACKUP DATABASE (دستورات پست 2 همین تاپیک) بهتر است.

bad_boy_2007
15-07-2009, 16:53
سلام
(فراموش نکنید که در هر صورت روش AttachDbFilename فقط و فقط در نسخه رایگان express وجود دارد و کار میکند)


سلام استاد
نکته خوبی رو متذکر شدید که نمیدونستم ممنون :10:

CHAPTER
15-07-2009, 20:40
شما که از روشهای اتصال غیر استاندارد sqlserver (و بیشتر شبیه access) استفاده میکنید، خوب backup تان را هم مثل access بگیرید
ممنون از جوابتون دوست عزیز
اگر این روش اتصال غیر استاندارد هست (منم قبول دارم) چرا همچین امکانی فراهم شده


کی گفته باید کاربر را درگیر attach کنید؟ اگر هم به صورت عادی بخواهید برنامه کار کند و شبکه ای نباشد، بدون درگیر کردن کاربر میتوانید sqlserver-express را هم با setup خودتان نصب کنید.[
میشه راهنمایی بیشتری کنید , یعنی وقتی توی سیستم مقصد همراه ستاپ sqlserver-express نصب شد بانک رو از طریق برنامه توش Attach کنم

من توی سیستم خودم VS 2008 نصب هست sqlserver-express هم که نصبه ولی من در All program در SQL Server 2005
SQL Server Mangment ندارم

_H2_
17-07-2009, 09:23
سلام

چرا همچین امکانی فراهم شده
طبیعتاً برای یک نوع اتصال سریع و بدون attach مثل access و در جهت برنامه های کوچک، مثل یک دفتر تلفن که قرار نیست نه شبکه ای باشد و نه حجم قابل توجهی تراکنش را مدیریت کند.
و دقیقاً به همین دلیل هم این قابلیت در نسخه های پولی sqlserver اصلاً وجود ندارد و فقط و فقط در نسخه رایگان express (که محدودیتهایی نسبت به نسخه های پولی دارد) این قابلیت گنجانده شده.


یعنی وقتی توی سیستم مقصد همراه ستاپ sqlserver-express نصب شد بانک رو از طریق برنامه توش Attach کنم
شما میتوانید sqlserver-express را به راحتی در طی setup برنامه خودتان و بدون دخالت خاصی از طرف کاربر نصب کنید سپس امکان attach دیتابیس در طی فریند setup و نیز در داخل برنامه وجود دارد.

نمونه ای از attach در داخل برنامه را میتوانید در کد زیر مشاهده کنید:
support.h02.ir/fwlink/?LinkId=1001158667

البته کد فوق mixedmode را فعال نمیکند که میتوانید با کمی کد این قابلیت را هم اضافه کنید ...
کافی است در رجیستری و مسیر زیر
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\MSSQLServer
مقدار LoginMode را 2 قرار دهید.



من توی سیستم خودم VS 2008 نصب هست sqlserver-express هم که نصبه ولی من در All program در SQL Server 2005
SQL Server Mangment ندارم
این ابزار به صورت خودکار با نسخه express نصب نمیشود ولی نسخه express خودش جداگانه قابل دانلود و نصب است.

Microsoft SQL Server Management Studio Express Service Pack 3
microsoft.com/downloads/details.aspx?familyid=5D76230D-580D-4874-8C7D-93491A29DB15

CHAPTER
17-07-2009, 10:47
ممنون از لطف تون
اگر اماکن داره لینک زیر رو ببینید :11:



برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

میشه در مورد روش گفته شده در لینک بالا هم یه کم برام توضیح بدبد

یه موضوع دیگه چطور می تونم فایل اجرایی Microsoft SQL Server Management Studio Express رو همراه ستاب برنامه نصب کنم. یعنی کاربر خودش به صورت جداگانه نصب نکنه

با تشکر

_H2_
17-07-2009, 13:40
سلام

میشه در مورد روش گفته شده در لینک بالا هم یه کم برام توضیح بدبد...
همانطور که گفته بودم ...

... امکان attach دیتابیس در طی فریند setup و نیز در داخل برنامه وجود دارد ...

کد آقا نیما نمونه ای از attach در طی فرآیند setup است که در طی مراحل setup به کمک یک Custom Actions دیتابیس را به بانک الحاق میکند.


یه موضوع دیگه چطور می تونم فایل اجرایی Microsoft SQL Server Management Studio Express رو همراه ستاب برنامه نصب کنم. یعنی کاربر خودش به صورت جداگانه نصب نکنه
اولین مسئله قابل توجه ان است که Management Studio ابزاری برای کاربران نهایی نیست و برای توسعه دهندگان و مدیران شبکه های بانکهای اطلاعاتی عرضه شده و در حالت عادی و استاندارد باید برنامه شما نیاز کاربرتان را بر آورده کند و کاربر برای کارهای دیگر نیازی به اجرای این برنامه نداشته باشد.

و اما جواب ...
1) Bootstrapper
برنامه نصب msi میتواند برنامه ها و setup های مختلف را همراه خودش نصب کند.
برای این کار کافی است یک Bootstrapper برای پکیج مورد نظر بسازید، این Bootstrapper ها حاوی فایل نصاب و سایر اطلاعات مورد نیاز msi برای نصب خواهد بود.

برای اطلاعات بیشتر و ساخت یک Bootstrapper دلخواه به لینک های زیر مراجعه کنید:
msdn.microsoft.com/en-us/magazine/cc163899.aspx
msdn.microsoft.com/en-us/library/ms165429.aspx
msdn.microsoft.com/en-us/library/6ae39a7c.aspx

برای دیدن Boostrapper های موجود خودتان (که یک سمپل هم باشد) میتوانید به مسیر زیر مراجعه کنید:
X:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages


2) Custom Actions
برنامه نصب msi میتواند یک dll را به عنوان فرامین پکیج نصب در خود جای دهد و آن را اجرا کنید.
نتیجتاً شما به سادگی و با وراثت از System.Configuration.Install.Installer میتوانید عمل و دستور دات نتی مورد نیاز خود را طی فرآیند نصب و لغو نصب اجرا کنید

msdn.microsoft.com/en-us/library/d9k65z2d.aspx
msdn.microsoft.com/en-us/library/system.configuration.install.installer.aspx

CHAPTER
17-07-2009, 20:20
اولین مسئله قابل توجه ان است که Management Studio ابزاری برای کاربران نهایی نیست و برای توسعه دهندگان و مدیران شبکه های بانکهای اطلاعاتی عرضه شده و در حالت عادی و استاندارد باید برنامه شما نیاز کاربرتان را بر آورده کند و کاربر برای کارهای دیگر نیازی به اجرای این برنامه نداشته باشد.

پس بانک رو تو سیستم مقصد کجا باید attach کنم
نمی خوام دیگه از روش غیر استاندارد استفاده کنم می خوام به یه سرور کانکت بشم
خوب مگه نباید توی سیستم مقصد Management Studio باشه تا بتونم بانک رو توش attach کنم

_H2_
17-07-2009, 23:31
سلام

خوب مگه نباید توی سیستم مقصد Management Studio باشه تا بتونم بانک رو توش attach کنم
Management Studio فقط یک ابزار مدیریتی و کمکی و دلخواه است و در واقع ربطی به هسته مرکزی sqlserver ندارد و attach هم ربطی به آن ندارد ولی آن هم مثل یک برنامه عادی (مثل برنامه شما) میتواند attach کردن را انجام دهد.

آیا در کد نمونه ای که من برای حین اجرای برنامه گذاشتم و یا کدی که خودتان از آقا نیما دیدید و مربوط به حین نصب میشود در هیچ یک حرفی از Management Studio زده شده بود؟

اگر یکم به هر کدام از این دو مثال دقت میکردید به جواب میرسیدید.

CHAPTER
19-07-2009, 09:57
سلام مهندس _H2_
من یه سمپل درست کردم
اومدم در رویداد فرم لود با smo دیتابیس ام رو یک بار Attach می کنم . فایل بانکم هم کنار فایل exe گذاشتم
دو تا دکمه هم برای بک آپ و ریستور گذاشتم توی سیستم خودم تمام عمیات از attach و بک آپ (ریستور فقط مشکل داره) انجام میشه
و بانکم رو توی SQL Managementمی بینم که attachشده درج اطاعاتم دارم
بعد اومدم ستاپ درست کردم تا ببینم توی سیستم دیگه که SQL Manement نداره کار می کنه یا نه
موقع ستاپ درست کردن تیک SQL Express هم زدم
ولی توی سیستم دیگه بعد نصب ارور میده مگه نیاز به نصب SQL Management توی سیستم مقصد نیست؟؟
میشه یه توضیح مختصری بدید توی سیستم دیگه بانک رو چه جور attach کنمیعنی چه پیش نیاز نصبی احتیاج هست

_H2_
19-07-2009, 11:06
سلام

... ولی توی سیستم دیگه بعد نصب ارور میده ...
منطقی و قابل پیشبینی است!



مگه نیاز به نصب SQL Management توی سیستم مقصد نیست؟؟
مشکل شما از بابت SSMS نیست مشکل شما ناشی از عدم نصب SMO همراه نسخه Express میشود!!!
این دو مسئله کاملاً جدا است ...
SMO یکسری کامپونت و ابزار برنامه نویسی برای ارتباط با SQLServer است.
SSMS یک ابزار گرافیکی یا اینترفیس کاربری برای ارتباط با SQLServer است.
یکی برای کدنویسی و برنماه نویسی است و یکی برای کارکردن دستی کاربران.


برای همین هم بوده که من در مثال خودم به جای SMO از دستورات T-SQL استفاده کردم.
کدتان را بر اساس دستورات T-SQL تنظیم کنید (مثل کد پست 8) فرقی هم ندارد میتوانید این کد را هم در حین setup و اجرای برنامه و حتی در صورت داشتن مجوز در وب هم انجام دهید...
سپس مجدد تست کنید.

CHAPTER
19-07-2009, 11:23
مشکل شما از بابت SSMS نیست مشکل شما ناشی از عدم نصب SMO همراه نسخه Express میشود!!!من که تمام dll هاش
(smo) رو همراه ستاپ گذاشته بودم. چطوری باید SMO همراه نسخه Express نصب کنم؟؟؟


کدتان را بر اساس دستورات T-SQL تنظیم کنید (مثل کد پست 8) فرقی هم ندارد میتوانید این کد را هم در حین setup و اجرای برنامه و حتی در صورت داشتن مجوز در وب هم انجام دهید...

به روی چشم :46:

اگر شما رو خسته کردم شرمنده مهندس :11:

_H2_
20-07-2009, 13:55
سلام

من که تمام dll هاش (smo) رو همراه ستاپ گذاشته بودم
این کافی نیست و باید نصب شود.


چطوری باید SMO همراه نسخه Express نصب کنم؟؟؟
خوشبختانه ذاتاً پک نصب EXPRESS شامل SMO هم میشود، به این معنا که SMO را در خود دارد ولی به صورت خودکار آن را نصب نمیکند.

SMO به صورت دستی و در حین نصب با فعال کردن گزینه "Client Components" در رایانه نصب میشود.

یا با گزینه های خط فرمانی مثل addlocal=all میتوانید تمام مخلفات SQLServer را (در تمام نسخه ها) نصب کنید و کاربر هم چیزی نبیند!

من Bootstrapper را چک کردم و دیدم گزینه addlocal=all برای نسخه express وجود دارد (که تا الآن فکر میکردم این گزینه در Bootstrapper نیست)

اما مسئله ای دیگری که مهم است ان است که express نسخه smo خودش را با نام Microsoft.SqlServer.Express.Smo.dll دارد و اگر شما قصد استفاده از SMO-Express را دارید باید در پروزه خودتان به جای Microsoft.SqlServer.Smo.dll از Microsoft.SqlServer.Express.Smo.dll استفاده کنید و پروژه را بر این اساس و با نسخه مناسب کامپایل کنید...

تا بعد از ساخت Setup و فعال کردن نرم افزار SQLExpress برای نصب خودکار، فایلهای وابسته Microsoft.SqlServer.Express.Smo.dll در رایانه مقصد نصب میشود.


... مهندستاجایی که میدانم مهندس نیستم!

موفق باشید.

CHAPTER
20-07-2009, 16:03
سلام دوست عزیز

من دوباره مزاحم شدم من dll های مورد نظر رو توی آدرس زیر پیدا کردم نمیشه از اونها توی برنامه ام استفاده کنم یعنی اونها رو به پوشه References اضافه کنم و بقیه قضایا ......


C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE



من Bootstrapper را چک کردم و دیدم گزینه addlocal=all برای نسخه express وجود دارد (که تا الآن فکر میکردم این گزینه در Bootstrapper نیست)

یعنی توی سیستم مقصد به صورت پیش فرض Client Components نصب میشه؟؟

چون تو فایل package.xml خط زیر رو دیدم


Arguments='-q /norebootchk /qn reboot=ReallySuppress addlocal=all instancename=SQLEXPRESS SQLAUTOSTART=1 ADDUSERASADMIN=1


این خط وظیفه اش نصب کامل sql express هست ؟؟

_H2_
20-07-2009, 18:03
سلام

... نمیشه از اونها توی برنامه ام استفاده کنم یعنی اونها رو به پوشه References اضافه کنم ...
الآن در رایانه خودم SMO-Express ندارم و نمیتوانم چک کنم ولی چیزی که میگویید عجیب است!
یعنی نمیتوانید Reference کنید!
چه خطایی میدهد؟
شاید Reference قبلی SMO را حذف نکرده اید؟ (چون احتمال زیادی دارد تداخل namespace پیش آید)



این خط وظیفه اش نصب کامل sql express هست ؟؟
گزینه هایی را برای اجرای خط فرمانی و تغذیه مقادیر تنظیمی تایین میکند و به نصاب msi پیشنهاد میدهد.
(
نصب خاموش (بدون دیالوگ) و عدم ریست و نصب همه اجزاء و نام نمونه نصب و شروع خودکار سرویس با ویندوز و تنظیمی امنیتی برای اجرای صحیح در ویندوز و...
)

اطلاعات بیشتر در خصوص طریقه نصب از خط فرمان SQLServer را میتوانید در زیر مشاهده کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

CHAPTER
20-07-2009, 18:08
الآن در رایانه خودم SMO-Express ندارم و نمیتوانم چک کنم ولی چیزی که میگویید عجیب است!
یعنی نمیتوانید Reference کنید!
چه خطایی میدهد؟
شاید Reference قبلی SMO را حذف نکرده اید؟ (چون احتمال زیادی دارد تداخل namespace پیش آید)

شرمنده جمله ام منفی نبود یعنی می تونم اضافه کنم :43:
توی Reference اضافه کردم ولی Using اش نمی یاد


(
نصب خاموش (بدون دیالوگ) و عدم ریست و نصب همه اجزاء و نام نمونه نصب و شروع خودکار سرویس با ویندوز و تنظیمی امنیتی برای اجرای صحیح در ویندوز و...
)پس یعنی توی سیستم مقصد smo نصب میشه . فقط باید از express.smo توی پروژه ام استفاده کنم
درسته ؟؟؟

_H2_
21-07-2009, 00:00
سلام

وی Reference اضافه کردم ولی Using اش نمی یاد
یعنی reference کردید ولی دستور زیر خطا میدهند؟
;using Microsoft.SqlServer.Management.Smo

چه خطایی میدهد؟
مطمئن هستید که refrence قبلی SMO را حدف کرده اید؟


پس یعنی توی سیستم مقصد smo نصب میشه . فقط باید از express.smo توی پروژه ام استفاده کنم
درسته ؟؟؟
بله از شواهد چنین بر می آید
من تا حالا از SMO-Express استفاده نکردم، برای اطمینان بیشتر اگر میتوانید حتماً یکبار تست کنید، ضرر ندارد و مطمئن شوید با نصب express در حالت فوق ان هم کپی و نصب میشود.

اگر کارتان فوری نیست و بتوانید تا آخر هفته صبر کنید، شاید خودم وقت کنم و یک بررسی کلی روی نصب SMO-Express انجام دهم و مطمئن شوم که ...
آیا با پک عادی SQlExpress نصب میشود؟
آیا با پک SSMS-Express نصب میشود؟ (که این یکی حتمی است)
آیا با پک Advanced Services نصب میشود؟ (احتمال این یکی هم بسیار زیاد است)

شاید هم با هر سه نصب شود و نگرانی من بیهوده باشد.



فقط فراموش نکنید که در پروژه هم از همان dll ها استفاده کنید.
مطمئن شوید مشکلات ورژنی هم پیش نیاید ... (حداقل چهار نسخه شناخته شده SQLExpress2005 وجود دارد) یعنی پیشنهاد میکنم برای محکم کاری بیشتری از یک نسخه واحد برای reference کردن داخل پروژه و نیز ساخت setup استفاده کنید.

CHAPTER
22-07-2009, 09:00
یعنی reference کردید ولی دستور زیر خطا میدهند؟
;using Microsoft.SqlServer.Management.Smo

من اومدم از مسیر زیر

C:\Program Files\Microsoft SQL Server\90\Tools\Binn\VSShell\Common7\IDE


Microsoft.SqlServer.ٍExpress.Management.Smo.dll و بقیه dll های لازم رو به reference پروژه اضافه کردم .
من فکر کردم حالا می تونم از Using Microsoft.SqlServer.Express..Management.Smo استفاده کنم مثل اینکه سوتی دادم :31:
یعنی باید از همون using Microsoft.SqlServer.Management.Smo استفاده کنم ؟؟؟
پس اون dll ها هم نیز نیست( منظورم Microsoft.SqlServer.ٍExpress.Management.Smo.dll ) ؟؟


اگر کارتان فوری نیست و بتوانید تا آخر هفته صبر کنید، شاید خودم وقت کنم و یک بررسی کلی روی نصب SMO-Express انجام دهم و مطمئن شوم که ...
آیا با پک عادی SQlExpress نصب میشود؟
آیا با پک SSMS-Express نصب میشود؟ (که این یکی حتمی است)
آیا با پک Advanced Services نصب میشود؟ (احتمال این یکی هم بسیار زیاد است)

عجله که ندارم , اگر این لطف رو در حقم بکنید که یک دنیا ممنون می شم :11:

شرمنده که یه خورده دیر جواب دادم توی شهر ما ینترنت قطع شده بود :41::19:

_H2_
22-07-2009, 09:41
سلام

من فکر کردم حالا می تونم از Using Microsoft.SqlServer.Express.Management.Smo استفاده کنم مثل اینکه سوتی دادم

درست است که نام dll تغییر کرده ولی namespace ان همچنان ثابت است و اصولاً namespace ربطی به نام exe یا dll ندارد، گرچه مایکروسافت نام بیشتر (نه همه) dll های دات نت را نامی یکسان با namespace شان گذاشته.

CHAPTER
26-07-2009, 15:22
سلام جناب _H2_ و خسته نباشد
منیه سمپل درست کردم و همون dll های Microsoft.SqlServer.Express..Management.Smo رو به پروژه اضافه کردم و توی یه سیستمی که هیچ چیزی نصب نبود نصب کردم Attach درست انجام شد و عملیات درج و حذف . ویرای هم الحمدلله به درستی انجام شد اما توی بک آپ و ریستور مشکل داره و ارور داد
البته توی سیستم خودم همه چیز درست بود (اینکه واضحه:31:)
از همون کد های شما استفاده کردم


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

_H2_
27-07-2009, 02:31
سلام
همانطور که گفته بودم من SMO-Express را تا حالا نصب نکرده بودم و نداشتم
ولی یکسری تست و آزمایش گسترده روی نصب SQLServer Express & SMO انجام دادم...
که نتایج این آزمایشات حاکی از ان بود که برخی مطالبی که در خصوص نصب SMO-Express گمان میکردم صادق باشد و گفتم صحیح نبوده، که لازم است عضرخواهی کنم.

==============

رایانه های تحت بررسی ....
(1)- WinVista-Ultimate-SP1
(2)- WinXP-Pro-SP2 در هر تست در شرایط بعد از اتمام نصب ویندوز و بدون هیچ نرم افزار نصب شده ای بوده.

==============

نتایج بررسی روی سیستم (2)

- بر خلاف تصور من کتابخانه Microsoft.SqlServer.Express.Smo.dll و سایر کتابخانه های وابسته مخصوص SSMS-E است و همراه SS-E نصب نمیشوند.

- کتابخانه های نصب شده با SS-E دارای همان نام استاندارد شبیه Microsoft.SqlServer.Smo.dll هستند ولی با ورژن های مختلف ....
به طور مثال سه ورژه مختلف SS-E اقدام به نصب SMO های زیر میکنند:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

- این کتابخانه در زمان نصب در GAC مستقر میشود.

==============

نتایج:
- این به این معنا است که لزوماً مجبور به نصب همان SP ای که در زمان طراحی به ان ارجاع داده اید نیستید ولی باید Express2005 باشد.
(ضمن اینکه میتوانید با غیر فعال کردن Specific Version در زمان طراحی، حساسیت برنامه را به نسخه SMO نصب شده کاهش دهید.)

- نیازی به قراردادن dll های مذکور در کنار exe نیست.

- من برنامه نمونه ای برای Backup و Restore ساختم که در سیستم (1) و (2) تست شد و به خوبی جواب داد.
(یعنی برنامه به صورت مجزا و بعد از نصب XP-Pro-SP2 و قبل از نصب هر جنبده نرم افزاری با Setup خودش نصب شد و دستی و بدون SSMS بانکی نمونه ای جداگانه Attach شد و فرآیند Backup و Restore با موفقیت تست شد.)

==============

نکات مفید و قابل توجه:
- برای attach در رایانه نمونه (2) و تسریع در کار از exe موجود در بسته زیر (که قبلاً بارها معرفی شده بود) استفاده شد:
support.h02.ir/fwlink/?LinkId=1001158667

- برای مسیر attach از مسیرهای مجاز قابل دسترسی SS استفاده شد مثل سایر درایوهای غیر C و یا مسیر پیش فرض Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data

- فایل پروژه Backup+Restore و پروژه Setup مربوطه از مسیر زیر قابل دانلود است
(میتوانید پروژه را در حالت Release کامپایل کرده و محتویات Setup\Release را به عنوان بسته Setup در رایانه ای خالی تست کنید)
support.h02.ir/fwlink/?LinkId=1006043097

==============

موفق باشید.

CHAPTER
27-07-2009, 10:39
سلام
همانطور که گفته بودم من SMO-Express را تا حالا نصب نکرده بودم و نداشتم
ولی یکسری تست و آزمایش گسترده روی نصب SQLServer Express & SMO انجام دادم...
که نتایج این آزمایشات حاکی از ان بود که برخی مطالبی که در خصوص نصب SMO-Express گمان میکردم صادق باشد و گفتم صحیح نبوده، که لازم است عضرخواهی کنم.

شما برای چی عذر خواهی می کنید
من شرمنده هستم برای این موضوع اینقدر مزاحم شدم
در نهایت شما مثل همیشه تمام کمال مسئله رو تحلیل کردید و به سرانجام رساندید
با تشکر فراوان و آرزوی موفقیت برای شما

CHAPTER
27-07-2009, 18:31
سلام دوست عزیز
من بازم مزاحم شدم
حتما می گید بعد از این همه توضیح باز هم مشکل داری :46:
شزمنده فقط میشه از نمونه برنامه تون معادل سی شارپ قطعه کد زیر رو بهم بگید




برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید