PDA

View Full Version : attach کردن پایگاه داده به C#فقط اسم پایگاه داده در sql ظاهرمیشه بدون جدول ها



hichkasebikas
چهارشنبه 01 شهریور 1391, 09:53 صبح
من پایگاه دادمو از همون پوشه data اون دو فایل رو کپی کردم و روی سیستم مقصد attach کردم اما فقط اسم پایگاه داده در sqlظاهر شد!!!بدون جدول هاش!!!:متعجب:
به نظرتون دلیلش چیه!به خدا سر این پروژه دیوونه شدم. لطفا"کمکم کنید!:گریه:

amir-aa
چهارشنبه 01 شهریور 1391, 11:12 صبح
ببین ورژن sql ها یکیه؟؟
بعدش هم دیتابیس رو چند بار روی سیستم خودت اتچ و دیتچ کن...شاید مشکل از دیتابیس باشه برای من یکدفعه این مشکل پیش اومد
ببین تمام اعمال استاندارد مثلا insert توی جدول با استفاده از دستور sql انجام میشه؟؟

sattar1
چهارشنبه 01 شهریور 1391, 12:13 عصر
ببین ورژن sql ها یکیه؟؟
بعدش هم دیتابیس رو چند بار روی سیستم خودت اتچ و دیتچ کن...شاید مشکل از دیتابیس باشه برای من یکدفعه این مشکل پیش اومد
ببین تمام اعمال استاندارد مثلا insert توی جدول با استفاده از دستور sql انجام میشه؟؟

علاوه بر کارهایی که دوست عزیزمون فرمودن
یک BackUp هم بگیر و تو سیستم مقصد Restore کن شاید نتیجه بخش باشه.

hichkasebikas
چهارشنبه 01 شهریور 1391, 14:02 عصر
ببین ورژن sql ها یکیه؟؟
بعدش هم دیتابیس رو چند بار روی سیستم خودت اتچ و دیتچ کن...شاید مشکل از دیتابیس باشه برای من یکدفعه این مشکل پیش اومد
ببین تمام اعمال استاندارد مثلا insert توی جدول با استفاده از دستور sql انجام میشه؟؟



ممنون از راهنماییتون.اما همه این موارد رو چک کردم همش درست بود. 20بارم اتچ و دیتچ کردم ولی فایده ای نداشت!:ناراحت:
به خاطر این نیست که دستی (بدون کد)عمل اتچ رو انجام دادم؟
کد اتچ کردن رو گرفتم ولی هرجایی به 1نحوی اتچ کردند.نمیدونم کدوم درسته×

amir-aa
چهارشنبه 01 شهریور 1391, 15:45 عصر
بعید میبینم اینجوری مشکل حل بشه آخه ارور نمیده که !!
من با این کد معمولا اتچ میکنم یعنی میذارمش توی لود صفحه اول

string connectionstring = "Data Source=.;User ID='sa';Password='31'";
SqlConnection conn = new SqlConnection(connectionstring);
string dbname = "ma";
string query1 = "USE [master] IF NOT EXISTS (Select name from sysdatabases WHERE name ='" + dbname + "') EXEC sp_attach_db @dbname = 'ma',@filename1 = '" + Application.StartupPath + "\\ma.mdf' , @filename2 ='" + Application.StartupPath + "\\ma_log.ldf'";
SqlCommand cm1 = new SqlCommand(query1, conn);
conn.Open();

try
{
cm1.ExecuteNonQuery();
}
catch
{
MessageBox.Show("مشکل در اجرای دیتابیس توسط برنامه", "خطای دیتابیس");
}


علاوه بر اون یک مسئله دیگه هم میتونه باشه...شما برای امنیت بیشتر اکانت یوزر جدید در sql ایجاد کرده باشید که در اون صورت من تخصصشو ندارم اما فکر کنم باید مشابهش رو روی مقصد پیاده کنید

اینم بگم که شما اگر از کد بالا استفاده میکنید باید دوتا فایل دیتا بیس توی bin/debug باشن

hichkasebikas
پنج شنبه 02 شهریور 1391, 09:57 صبح
سلام بازم ممنون به خاطر جواباتون. اما من با یوزر و پسورد وارد پایگاه دادم نمیشم. لطفا"راهنماییم کنید که به جای
string connectionstring = "Data Source=.;User ID='sa';Password='31'";
باید چی بذارم. خودم اینو مینویسم اما خطا میده:


"Data Source=(local);Initial Catalog=master;Integrated Security=True";

veniz2008
پنج شنبه 02 شهریور 1391, 11:08 صبح
سلام. به جای اینکارا دنبال راه حل مشکلتون باشید. این خوبه که شما یه مبحث جدید یاد بگیری ولی قطعا مشکل شما از این بابت نیست. چندتا مورد رو دوباره با دقت چک کن:
1. زمانیکه میخوای پروژه رو از سیستم خودت کپی کنی اول دیتابیس رو detach کن و بعدش دیتابیس رو کپی کن. البته در حالت نرمال هم اجازه چنین کاری داده نمیشه ولی تست کردنش ضرر نداره.
2. از یکسان بودن ( یا بالاتر بودن) ورژن سیستم مقصد اطمینان حاصل کن. حتی دو پایگاه داده sql 2008 r2 هم ممکنه در ورژن با هم متفاوت باشن. چند روز پیش همین مشکل برای شخص خودم پیش اومد.
91719

hichkasebikas
پنج شنبه 02 شهریور 1391, 13:32 عصر
سلام. به جای اینکارا دنبال راه حل مشکلتون باشید. این خوبه که شما یه مبحث جدید یاد بگیری ولی قطعا مشکل شما از این بابت نیست. چندتا مورد رو دوباره با دقت چک کن:
1. زمانیکه میخوای پروژه رو از سیستم خودت کپی کنی اول دیتابیس رو detach کن و بعدش دیتابیس رو کپی کن. البته در حالت نرمال هم اجازه چنین کاری داده نمیشه ولی تست کردنش ضرر نداره.
2. از یکسان بودن ( یا بالاتر بودن) ورژن سیستم مقصد اطمینان حاصل کن. حتی دو پایگاه داده sql 2008 r2 هم ممکنه در ورژن با هم متفاوت باشن. چند روز پیش همین مشکل برای شخص خودم پیش اومد.
91719

سلام. ممنونم ولی به خدا همه اینا رو چک کردم. حتی همون سیدی که واسه خودم اسکیوال رو نصب کردم رو باهاش توی کامپیوتر مقصد هم اسکیوال نصب کردم.اصلا" مشکل اصلی من اینه که نمیخوام رو سیستم مقصد اسکیوال رو خودم نصب کنم .میخوام پروژه ای که به زبان C#‎, پایگاه داده sql server نوشتم رو به سیستمی که هیچ کدوم از این برنامه هارو نداره انتقال بدم.طبق تاپیک های قبلی installshield رو نصب کردم و از طریق اون فایل نصب ساختم. در طی مراحل framwork3.5sp1,sql servere2008experess sp1(x86رو هم تیک زدم. اما وقتی میخوام روی اون سیستم نصبش کنم میخواد به اینترنت متصل بشه!!!اگه هم کنسل یزنم مراحل نصب قطع میشه!!:عصبانی++:
هیچکسی به من راهکار نمیده توروخدا کمک کنید

k1csharpdeveloper
پنج شنبه 02 شهریور 1391, 13:43 عصر
دوست عزیز نیازی به attach و اینکارا نیست شما بیا توی sqlserver مبدا که دیتابیس رو میبینی یک script از دیتابیست بساز و اونو ذخیره کن بعد توی sqlserver سیستم مقصد یک دیتابیس دقیقا همنام دیتابیست ایجاد کن و اون اسکریپت رو اجرا کن تا این مشکل حل بشه

veniz2008
پنج شنبه 02 شهریور 1391, 16:16 عصر
دوست عزیز؛ نرم افزار installshiled برای اینکه اون موارد رو به پروژه شما اضافه کنه ( مثل کریستال ریپورت و net framwork و ...) باید اول داخل خودش داشته باشه بعدش واسه شما به پروژه اضافه کنه واسه همین موقع ساخت setup ازتون میخواد که اون موارد رو دانلود کنید ( یه کلمه شبیه به Requirement download جلوی بعضی از گزینه ها هست). نسخه 200 یا 300 مگی که در اختیار ماست همشون به همین طریق هستن و باید اون پیش نیازها رو دانلود کنی و بعدش ستاپ رو بسازی. به نظر من شما همون دستی فعلا مشکلت رو حل کن. نیازی به نصب نسخه کامل sql هم در سیستم مقصد نداری. میتونی sql management studio express edition رو روی سیستم مقصد نصب کنی ( حجمش خیلی کمه).
من خودم هرچی با اینستال شیلد ور رفتم نتونسم یه ستاپ کامل باهاش بسازم. دیدم خیلی از دوستان میگن خیلی راحته ولی ندیدم کسی یه آموزش کامل ازش درست کنه و بذاره تا بقیه هم ازش استفاده کنن. آموزش هایی که الان وجود داره همه ناقص هستن و وقت آدمو تلف میکنن.

hichkasebikas
جمعه 03 شهریور 1391, 14:40 عصر
دوست عزیز نیازی به attach و اینکارا نیست شما بیا توی sqlserver مبدا که دیتابیس رو میبینی یک script از دیتابیست بساز و اونو ذخیره کن بعد توی sqlserver سیستم مقصد یک دیتابیس دقیقا همنام دیتابیست ایجاد کن و اون اسکریپت رو اجرا کن تا این مشکل حل بشه

ممنون اما میشه بگین توی اسکریپتم چی باید بنویسم یا چطوری ازش استفاده کنم؟

hichkasebikas
شنبه 04 شهریور 1391, 16:12 عصر
دوست عزیز؛ نرم افزار installshiled برای اینکه اون موارد رو به پروژه شما اضافه کنه ( مثل کریستال ریپورت و net framwork و ...) باید اول داخل خودش داشته باشه بعدش واسه شما به پروژه اضافه کنه واسه همین موقع ساخت setup ازتون میخواد که اون موارد رو دانلود کنید ( یه کلمه شبیه به Requirement download جلوی بعضی از گزینه ها هست). نسخه 200 یا 300 مگی که در اختیار ماست همشون به همین طریق هستن و باید اون پیش نیازها رو دانلود کنی و بعدش ستاپ رو بسازی. به نظر من شما همون دستی فعلا مشکلت رو حل کن. نیازی به نصب نسخه کامل sql هم در سیستم مقصد نداری. میتونی sql management studio express edition رو روی سیستم مقصد نصب کنی ( حجمش خیلی کمه).
من خودم هرچی با اینستال شیلد ور رفتم نتونسم یه ستاپ کامل باهاش بسازم. دیدم خیلی از دوستان میگن خیلی راحته ولی ندیدم کسی یه آموزش کامل ازش درست کنه و بذاره تا بقیه هم ازش استفاده کنن. آموزش هایی که الان وجود داره همه ناقص هستن و وقت آدمو تلف میکنن.

سلام.ممنون. خدا خیرتون بده. اما از طریق خود vsنشد!:ناراحت:چون sql2005رو نصب کرد و بی فایده بود. برنامه من sql2008ه. میشه بگین از کجاباید بفهمم دانلودش کامل شده؟چون هیچ پنجره یا پیغام خاصی رو نشون نمیده. البته 2008رو دانلود کردم و روی سیستم مقصد بازم پیغام میده واسه همین میگم شاید کامل دانلود نشده!
من فردا باید پروژه مو تحویل بدم. کمممممممممممممممممممککککک کککک:افسرده: