مشاهده نسخه کامل
: اتچ نشدن sql server 2012 در vs 2010
shadmehrshadow1
01-12-2012, 13:53
سلاممن یه دیتابیس توی اس کیو ال سرور ۲۰۱۲ درست کردم. و وقتی که میخوام اون رو به ویژوآل استودیو ۲۰۱۰ اتچ کنم با پیغام خطای زیر رو میده. ممنون میشم کمکم کنید.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنیدشاید من به شیوه درستی اکسترکت نمیکنم دیتابیسم رو از توی اس کیو ال سرور . اگه اینطور هست در این رابطه هم راهنماییم کنید.ممنون
because it is version 706. This server supports version 655 and earlier یعنی اینکه ورژن سرور ویژوال اوستودیو(2008) قدیمی تر از ورژن سروری هستش که دیتابیس رو زده(2012) و این مسئله باعث میشه که ایشون اوشون رو ساپورت نکنه!
shadmehrshadow1
02-12-2012, 16:51
خب این رو کسی که یک مقدار با زبان انگلیسی آشنایی هم داشته باشه میتونه حدس بزنه.راه حل؟
asghar2008
02-12-2012, 22:59
سلام
خوب معلومه شما باید از ورژنی استفاده کنید که ویژوال استادیو اون رو ساپورت کنه.
شما میتونید از Sql Express 2008 که با خود ویژوال استادیو 2010 نصب میشه استفاده کنید.
یه روش دیگه اینه که همون دیتابیس (ورژن 2012)باقی بمونه وشما از Visual studio 2012 نصب و استفاده کنید.
خب این رو کسی که یک مقدار با زبان انگلیسی آشنایی هم داشته باشه میتونه حدس بزنه.راه حل؟
دقیقا منم به همین خاطر اصل مطلب رو دوباره گذاشتم!! راه حل هم مشخصه!! یا جدول رو با نسخهی هماهنگ 2008 بسازید،یا
you're trying to use VS2010 Database Projects, which can't target SQL Server 2012 and have been replaced by SSDT. Please download SSDT at the following location [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] then make sure to navigate to the SQL Server node when creating a new project. There is only one project type for targeting SQL Server 2005, 2008, 2008 R2 and 2012 (target is specified in project properties).
یا اینکه ویژوال 2012 رو نصب بکنین!(این پیشنهاد میشه!)
shadmehrshadow1
03-12-2012, 12:25
نمیشه موقع اکسترکت و یا ذخیره کردن دیتابیس نسخه رو عوض کرد و یا انتخاب کنیم که با چه نسخن ای ذخیره بشه؟مثل آفیس که موقع ذخیره کردن میتونی انتخاب کنی که به صورت ورژن۲۰۱۰ نصب بشه یا ۲۰۰۳؟
asghar2008
03-12-2012, 18:14
نمیشه موقع اکسترکت و یا ذخیره کردن دیتابیس نسخه رو عوض کرد و یا انتخاب کنیم که با چه نسخن ای ذخیره بشه؟مثل آفیس که موقع ذخیره کردن میتونی انتخاب کنی که به صورت ورژن۲۰۱۰ نصب بشه یا ۲۰۰۳؟
چرا میشه نسخه دیتابیس رو تغییر داد.
مسیر های تعیین شده در عکس های زیر رو دنبال کن.از پنل سمت چپ دیتابیسی که میخوای ورژنش رو تغییر بدی انتخاب کرد وکلیک راست کنید و گزینه Properties رو انتخاب کنید
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
بعد از انتخاب Properties صفحه زیر نمایان میشود. از پنل سمت چپ( Select a Page) بر روی Option کلیک کنید از قسمت Compatibility level نسخه مورد نظر مثلاsql server 2008 رو انتخاب کن.
بعد ok کن به همین سادگی به همین خوشمزگی.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سلام
یا انتخاب کنیم که با چه نسخن ای ذخیره بشه؟
خیر، متاسفانه همچین قابلیتی وجود ندارد.
اگر واقعاً لازم شود، تنها راه رسمی downgrade دیتابیس های sqlserver ، تهیه SQL به کمک ویزارد Generate SQL Server Scripts در برنامه SSMS و سپس اجرای آن روی نسخه پایین تر SQLServer است.
البته راه حل های دوستان درضمینه نصب VS2012 یا نصب SQLServer Express 2012 خیلی خوب است.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشید.
asghar2008
05-12-2012, 22:38
سلام
خیر، متاسفانه همچین قابلیتی وجود ندارد.
با سلام
ممنون از دوست عزیز _H2_
یعنی روشی که در بالا گفته شده ، روش بدرد نخوری هستش؟
یعنی با این کار ورژن نسخه دیتابیس رو نمیشه عوض کرد؟
سلام
یعنی روشی که در بالا گفته شده ، روش بدرد نخوری هستش؟
ای کاش چنین می بود! مطمئناً من هم خوشحال میشدم...
این گزینه فقط سازگاری رفتاری SQLServer را تایین میکند.
به این معناکه در برخی موارد تفاوت های کوچک پیش فرضی-عملکردی بین نسخه های متفاوت وجود دارد، و این مورد بیان میکند SQLServer برای این دیتابیس خاص باید به صورت قدیم این موارد کوچک را اجرا کند تا برنامه های نوشته شده (خیلی خاص) در قدبم دچار مشکل نشوند.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
این کار به معنای تغییر ورژن دیتابیس نیست و همچنان مشکل مدنظر این تاپیک حل نخواهد شد.
همانطور که بیان شد، تنها راه رسمی کاهش نسخه mdf ها، همان Generate SQL است و درست به همین دلیل است که با وجودی که SQL2012SP1 را نصب میکنم هنوز نسخه SQLExpress2005SP1 را هم نصب میکنم تا بتوانم از آن برای اجرای SQL و ساخت دیتابیس های نسخه 2005 استفاده کنم.
دیتابیس های نسخه 2005 در کلیه نسخه های های 2005 و 2008 و 2008R2 و 2012 سازگاری دارند.
نسخه SQL2000 این سازگاری کامل را ندارد.
دوستان میتوانند SQLServerExpress2005 را در Win7 و SQLServerExpress2005SP1 را در Win8 همچنان نصب کنند (که حجم خیلی کمی هم دارد) و در زمان نصب هم ترجیحاً بجای نام نمونه SQLEXPRESS نامی مثل SQLEXPRESS2005 را انتخاب کنند تا تداخلی با SQLExpress2012 (درصورت نصب دلخواه یا با VS و...) هم نداشته باشد.
موفق باشید.
shadmehrshadow1
07-12-2012, 15:48
بهترین پیشنهاد شما چیه؟من همیشه دیتابیس رو اتچ میکردم.حالا نمیشه کاری کرد که دیگه اتچ نکنم و مستقیم اطلاعات رو از توی دیتابیس موجود در اس کیو ال سرور بخونه. مثلا کانکشن استرینگ رو تغییر بدم؟
سلام
بهترین پیشنهاد شما چیه؟
برای تبدیل دیتابیس تان به نسخه پایین؟ یا برای عدم وقوع مجدد این مشکل؟
راه تبدیل که همان Generate SQL است.
و حل کلی مشکل هم
الف) میتوانید همیشه از آخرین نسخه ممکن (البته در همه جا) استفاده کنید.
یا
ب) نسخه ای مثل Express2005 را در رایانه خود نصب داشته باشید و یا از اول دیتابیس را با ان بسازید و ویرایش کنید و... یا قبل از تحویل پروژه تان به کمک آن دیتابیس را به نسخه پایین تر تبدیل کنید...
یا
ج) اصلاً به جای انتقال mdf به رایانه دیگر عادت کنید و خود کد Generate شده SQL را به محل جدید منتقل کنید... حتی میتوانید قسمتی در برنامه تان اضافه کنید که خودکار کد را Execute کند و دیتابیس را همانجا در محل بسازد.
و...
نمیشه کاری کرد که دیگه اتچ نکنم
چه فرقی دارد؟ که چه شود؟
فقط نسخه های Express از نوعی مکانیزم غیر اتچ (درواقع بعتر است گفته شود، اتچ و دیتچ خودکار) پشتیبانی میکنند که بحرحال فرقی بحال شما نمیکند!
shadmehrshadow1
08-12-2012, 11:59
مرسیمیشه مورد ج رو یکم بیشتر توضیح بدین و اینکه چطور انجام میشه
ج) اصلاً به جای انتقال 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 شما حاضر است. فایل را ذخیره کنید. (یک لحظه حس آشپزی پیدا کردم :n02:)
اگر همه چیز به خوبی انجام شده باشد میتوانید با 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 بوده؟! یا شاید هم جهالت اقتصادی و علمی شان متفاوت بوده!
بیخیال، غیبت کافی است!
)))
=====
موفق باشید.
بسم الله الرحمن الرحیم
با سلام
مطلب رو کاملا مبسوط و کاربردی توضیح داده اید؛ بینهایت ممنون
یک سوال؟
اگه هیمن کار رو با خود SQL انجام دهیم چه فرقی میکند؟
منظورم اینه که اسکریپتی که با SSMS ساخته می شود چه تفاوتی دارد که به هسته SQL وابسته نمی شود؟
با تشکر فراوان
سلام
اگه هیمن کار رو با خود SQL انجام دهیم چه فرقی میکند؟
منظورم اینه که اسکریپتی که با SSMS ساخته می شود چه تفاوتی دارد که به هسته SQL وابسته نمی شود؟
شک دارم منظورتان را درست متوجه شده باشم...
منظورتان آن است که دستورات ساخت جدول و ویو و توابع و... را خودتان دستی بنویسید...!؟
اگر منظورتان چنین است، تنها مزیت SSMS آن است که این کار خسته کننده و طولانی را خودکار انجام میدهد.
انجام دستی اینکار برای یک دیتابیس بزرگ واقعاً وحشتناک است !
بسم الله الرحمن الرحیم
با سلام
بنده بد متوجه شده بودم
برای ساخت SQL دیتابیس از برنامه SSMS استفاده میکنیم که همراه نسخه های غیر رایگان نصب میشود
تصورم این بود که نسخه ای که فرمودید با SQL Server Management Studio که خودم داشتم متفاوت است.
با تشکر:n16:
atromusic
28-07-2014, 15:36
معذرت می خواهم، یک سوال آماتوری بپرسم
بعد از این که این فایل Sql را ساختم چه جوری توی برنامه ام استفاده کنم؟
من یه برنامه ی C# دارم که نمی خوام دیتابیس رو بهش attach کنم و طبق فرمایشات شما می خوام این فایل sql در کامپیوتر مشتری اجرا بشه و دیتابیس و جداولش ساخته بشه!
سلام
بعد از این که این فایل Sql را ساختم چه جوری توی برنامه ام استفاده کنم؟
کافیست connection ای به دیتابیس برقرار کنید و کل SQL را به کمک یک command اجرا کنید.
اگر SQLServer را برنامه خودتان نصب نکرده باشد، شاید مجبود شوید IP سرور و User و Pass را از کاربر بپرسید.
کدنمونه:
طبیعتاً باید connectionstring و sql را از منابع مورد نظر تامین کنید.
پرسش از کاربر و خواندن از فایل و...
به عنوان آخرین نکته دقت کنید که احتمالاً کد زیر برای اجرا نیاز به مجوز Run As Administrator خواهد داشت.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کد فوق را در یک برنامه ساده Console امتحان کنید.
موفق باشید.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.