بهترین پیشنهاد شما چیه؟من همیشه دیتابیس رو اتچ میکردم.حالا نمیشه کاری کرد که دیگه اتچ نکنم و مستقیم اطلاعات رو از توی دیتابیس موجود در اس کیو ال سرور بخونه. مثلا کانکشن استرینگ رو تغییر بدم؟
بهترین پیشنهاد شما چیه؟من همیشه دیتابیس رو اتچ میکردم.حالا نمیشه کاری کرد که دیگه اتچ نکنم و مستقیم اطلاعات رو از توی دیتابیس موجود در اس کیو ال سرور بخونه. مثلا کانکشن استرینگ رو تغییر بدم؟
سلام
برای تبدیل دیتابیس تان به نسخه پایین؟ یا برای عدم وقوع مجدد این مشکل؟بهترین پیشنهاد شما چیه؟
راه تبدیل که همان Generate SQL است.
و حل کلی مشکل هم
الف) میتوانید همیشه از آخرین نسخه ممکن (البته در همه جا) استفاده کنید.
یا
ب) نسخه ای مثل Express2005 را در رایانه خود نصب داشته باشید و یا از اول دیتابیس را با ان بسازید و ویرایش کنید و... یا قبل از تحویل پروژه تان به کمک آن دیتابیس را به نسخه پایین تر تبدیل کنید...
یا
ج) اصلاً به جای انتقال mdf به رایانه دیگر عادت کنید و خود کد Generate شده SQL را به محل جدید منتقل کنید... حتی میتوانید قسمتی در برنامه تان اضافه کنید که خودکار کد را Execute کند و دیتابیس را همانجا در محل بسازد.
و...
چه فرقی دارد؟ که چه شود؟نمیشه کاری کرد که دیگه اتچ نکنم
فقط نسخه های Express از نوعی مکانیزم غیر اتچ (درواقع بعتر است گفته شود، اتچ و دیتچ خودکار) پشتیبانی میکنند که بحرحال فرقی بحال شما نمیکند!
مرسیمیشه مورد ج رو یکم بیشتر توضیح بدین و اینکه چطور انجام میشه
البته این مورد رو دوستمون میان دقیق تو توضیح میدن، تا اون موقع من یه ایدهی اولیه بهتون میدم!:ج) اصلاً به جای انتقال mdf به رایانه دیگر عادت کنید و خود کد Generate شده SQL را به محل جدید منتقل کنید... حتی میتوانید قسمتی در برنامه تان اضافه کنید که خودکار کد را Execute کند و دیتابیس را همانجا در محل بسازد.
همهی کارایی که ما به رابط کاربر انجام میدیم، در نهایت به صورت دونه دونه و کد انجام میگیره... وقتی ما یه تیبل رو با چند تا کلیک راست درست میکنیم، در حقیقت اون پشت یه چند خط کد اجرا میشه....
وقتی کارمون با دیتابیس تموم شد، به جای اینکه دیتابیس رو منتقل کنیم، میایم کدهای اجرا شده رو که حجم کمی هم دارن رو استفاده میکنیم و موقع نصب برنامه، تو یه مرحله یه سری دیتای پیشفرض بهش میدیم و اجراش میکنیم.... حالا همهی دیتابیس و تیبل ها و ... توی سیستم مورد نظرمون و توی سرورش ساخته میشه...(انگار که دوباره خودمون بریم رو اون سیستم دوباره دیتابیس رو از 0 بسازیم!! ولی اینبار خیلی سریعتر و خودکار انجام میشه....)
من اینو خیلی دوست دارم، ولی عملا بلد نیستم!! ولی فیلم انجام این کار رو دیدم و خیلی باحاله و به نظرم مفید!!! حالا H2 میان بیشتر و دقیق توضیح میدن...
بسم الله الرحمن الرحیم
با سلام
آیا ساخت بانک هنگام اجرای برنامه مزیتی هم دارد؟ یا تنها سلیقه شخصی شماست؟اصلاً به جای انتقال mdf به رایانه دیگر عادت کنید و خود کد Generate شده SQL را به محل جدید منتقل کنید... حتی میتوانید قسمتی در برنامه تان اضافه کنید که خودکار کد را Execute کند و دیتابیس را همانجا در محل بسازد.
با سپاس
سلام
پس از تایید و تشکر از دوست خوبمان senaps در ادامه صحبت ایشان میتوانم اضافه کنم...
برای ساخت SQL دیتابیس از برنامه SSMS استفاده میکنیم که همراه نسخه های غیر رایگان نصب میشود و نسخه رایگان Express خودش هم وجود دارد.
مطلب اول آنکه، ترجیحاً از SSMS2008 بجای SSMS2012 استفاده کنید که در ادامه دلیلش را خواهم گفت.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مطلب دوم آنکه، توجه داشته باشید SSMS یک ابزار جانبی است و ارتباط مستقیمی با هسته SQLServer ندارد.
به این معنی که شما میتوانید از SSMS2012 جهت ارتباط با MSSQL2005 استفاده کنید
یا از SSMS2005 جهت ارتباط با MSSQL2012 استفاده کنید و...
=====
برای شروع ویزارد مربوطه مراحل زیر را دنبال کنید:
اگر مسیر را صحیح طی کرده باشید به صفحه ای میرسید که دکمه Advanced سه دکمه رادیویی دارد:کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
Save to File
جهت ذخیره SQL نهایی در یک فایل (برای دیتابیس های بزرگ فقط از این گزینه استفاده کنید)
Save to new query window
SQL نهایی را یک فرم درون محیط خود SSMS درج و نشان میدهد. (*فعلاً همین را انتخاب کنید)
Save to Clipboard
SQL نهایی را ساخته و تمام آن را در حافظه Clipboard کپی میکند که آماده Paste در مقصد خواهد بود. (برای دیتابیس های بزرگ مناسب نیست)
دکمه Advanced را کلیک کنید:
گزینه های زیر را تنظیم کنید:
دوگزینه مهم دیگر باقی می ماندکد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اول: Script DROP and CREATE
Script CREATE
جهت دستورات ساخت دیتابیس از صفر
Script DROP and CREATE
جهت حذف اشیای قبلی و ایجاد اشیای جدید، به عنوان مثال بروز رسانی ساختار پروسیجر ها و ویوها و...
***هشدار: اگر منظورتان بروزرسانی دیتابیس است، این عمل محتویات ذخیره شده جداول قبلی را حفظ نخواهد کرد***
دوم: Types of data to script
Schema only
ایجاد دستورات ساخت دیتابیس (CREATE)
Data only
ایجاد دستورات درج مقادیر داده ها (INSERT)
Schema and data
ایجاد هر دو گروه دستورات فوق
در نهایت همه چیز را تایید و OK کنید و منتظر به پایان رسیدن عملیات بمانید...
در صفحه نهایی دستوری شبیه این برایتان ایجاد میشود:
میخواهید بخوانید و متوجه شوید ایراد ندارد ولی پیشنهاد میکنم دستورات تا شروع USE دوم را بطور کامل حذف و پاک کنید تا به چیزی شبیه این برسید:کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
خوب! تمام شد، SQL شما حاضر است. فایل را ذخیره کنید. (یک لحظه حس آشپزی پیدا کردم )کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگر همه چیز به خوبی انجام شده باشد میتوانید با Execute فایل فوق در یک دیتابیس خالی در هر محلی، مجدد دیتابیس فعلی تان را ایجاد کنید.
=====
پیش از این، گفتم که ترجیحاً از SSMS2008 بجای SSMS2012 استفاده کنید.
این بدان دلیل است که گزینه Dependent در SSMS2008 به درستی کار میکند.
ولی در نسخه SSMS2012 با تغییراتی که مایکروسافت در SQLServer2012 داده این گزینه دیگر لازم نیست و با وجودی که در SSMS2012 وجود دارد ولی کار نخواهد کرد.
این گزینه وابستگی اشیای دیتابیس شما را کشف و ترتیب ایجاد آنها را مشخص میکند.
مثلاً اگر درجایی از Proc1 درون کد Proc2 را فراخوانی کرده باشید، پس اول باید Proc2 ساخته شود و سپس Proc1 ساخته شود تا دستور ساخت Proc1 به خطا برنخورد که Proc2 ای وجود ندارد و نمیشناسم ...
این ترتیب ایجاد برای SQLServer ها قبل 2012 مهم بوده و درنتیجه SSMS2008 این ترتیب را تشخیص داده و رعایت میکند.
ولی SQLServer2012 پیشرفته تر شده و این ترتیب برایش مهم نیست در مقابل SSMS2012 خنگ تر شده و دیگر این ترتیب را تشخیص نمیدهد و در ساخت دستورات از آن پیروی نمیکند.
(((باید لزوم پشتیبانی این ترتیب در SSMS2012 جهت استفاده SQL در نسخه های پایین تر طی یک feedback به سایت مایکروسافت ، یادآوری شود ، باشد که ترتیب اثر بدهند یا برود بقل دست feedback های بی ثمر دیگر ...)))
=====
حداقل دو مزیت را همین الآن یادم می آید ...آیا ساخت بانک هنگام اجرای برنامه مزیتی هم دارد؟
مورد اول همین مشکل تاپیک است و توانایی ایجاد SQL با عدم وابستگی به نسخه خاص.
حتماً میدانید که فایل های mdf حتی به SP ها هم حساس هستند. مثلاً یعنی mdf نسخه 2005SP2 در 2005SP1 متصل نخواهد شد!
مورد بعدی هم برنامه نویسی تحت وب است ...
به دلایل متعدد از قیمت تا دانش، در حال حاضر اکثر سروهای سایت های فعلی، سرور های موسوم به Share است که فرد از یک شرکت هاستینگ فقط یک فضای وب با کنترل پنل و... میگیرید.
که مالک سایت هیچ راهی برای اتچ mdf خود ندارد.
هاستینگ فقط اجازه ایجاد یک دیتابیس خالی را به فرد میدهد با معمولاً یک پلتفرم تحت وب یا ریموت SSMS که فرد در هیچ کدام اجازه اتچ ندارد.
در واقع تنها راه فرد ساخت دستی تمام اشیا در سمت سرور است و یا اینکه یک اسکریپ SQL را اجرا کند.
درست به همین دلیل است که اگر شما فایل های اجرایی یک سایت (مثل YAF یا DNN و...) را دانلود کنید بجای mdf در پوشه نصب آنها فایل های sql را خواهید یافت.
(((
فقط کسانی که سرورهای VPS یا Dedicated دارند میتوانند فایل mdf را اتچ کنند حالا یا خودشان یا برنامه ای این کار را انجام دهد...
مگر انکه به مشتری گفته شود حتماً باید سرور اختصاصی تهیه کنید و User,Pass را هم به فروشنده بدهد (!!!) تا خودش برایش برنامه را نصب کنید ... !!!
همین اتفاق برای یکی از دوستانم که قصد خرید یک برنامه فروشگاه اینترنتی از شرکتی ایرانی را داشت افتاده بود !!!
اگر خودم تلفنی صحبت نکرده بودم، هنوز هم باورم نمیشد و میگفتم دوست من اشتباه شنیده و گفته و ...
یعنی واقعاً برنامه فروشگاه دو صفحه ای اینها پیچیده تر از DNN بوده؟! یا شاید هم جهالت اقتصادی و علمی شان متفاوت بوده!
بیخیال، غیبت کافی است!
)))
=====
موفق باشید.
Last edited by _H2_; 11-12-2012 at 14:14. دليل: متن زیاد، تایپ سریع و باز هم غلط املائی ...
بسم الله الرحمن الرحیم
با سلام
مطلب رو کاملا مبسوط و کاربردی توضیح داده اید؛ بینهایت ممنون
یک سوال؟
اگه هیمن کار رو با خود SQL انجام دهیم چه فرقی میکند؟
منظورم اینه که اسکریپتی که با SSMS ساخته می شود چه تفاوتی دارد که به هسته SQL وابسته نمی شود؟
با تشکر فراوان
سلام
اگه هیمن کار رو با خود SQL انجام دهیم چه فرقی میکند؟شک دارم منظورتان را درست متوجه شده باشم...منظورم اینه که اسکریپتی که با SSMS ساخته می شود چه تفاوتی دارد که به هسته SQL وابسته نمی شود؟
منظورتان آن است که دستورات ساخت جدول و ویو و توابع و... را خودتان دستی بنویسید...!؟
اگر منظورتان چنین است، تنها مزیت SSMS آن است که این کار خسته کننده و طولانی را خودکار انجام میدهد.
انجام دستی اینکار برای یک دیتابیس بزرگ واقعاً وحشتناک است !
بسم الله الرحمن الرحیم
با سلام
بنده بد متوجه شده بودم
تصورم این بود که نسخه ای که فرمودید با SQL Server Management Studio که خودم داشتم متفاوت است.برای ساخت SQL دیتابیس از برنامه SSMS استفاده میکنیم که همراه نسخه های غیر رایگان نصب میشود
با تشکر
معذرت می خواهم، یک سوال آماتوری بپرسم
بعد از این که این فایل Sql را ساختم چه جوری توی برنامه ام استفاده کنم؟
من یه برنامه ی C# دارم که نمی خوام دیتابیس رو بهش attach کنم و طبق فرمایشات شما می خوام این فایل sql در کامپیوتر مشتری اجرا بشه و دیتابیس و جداولش ساخته بشه!
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)