PDA

View Full Version : ساخت برنامه نصب برای Sql Server



ee_persian
سه شنبه 04 خرداد 1389, 11:34 صبح
سلام به همه
من یه برنامه با سی شارپ و بانک اطلاعاتی sql server ساختم . حالا می خوام sql server رو نصب نکنم .

منظورم اینه برنامه به صورت نصبی باشه مثلا با Install Shield ....

یعنی کاربر مجبور به Attach کردن بانک به sql Server نباشه ....

آیا میشه ؟

چطور ؟

لطفاً اگه راه حلی دارین با جزئیات کامل بفرمایین .

حسین شهریاری
سه شنبه 04 خرداد 1389, 11:48 صبح
قبلا بحث شده:

اگه از SQL2000 استفاده میکنید MSDE

اگه از ورژنهای بالاتر استفاده میکنید با همون Install Shield که خودتون گفتین

برای جواب کاملتر عبارتهای Install Shield و MSDE را در تالار جستجو کنید.

mehrpars
سه شنبه 04 خرداد 1389, 21:59 عصر
یعنی کاربر مجبور به Attach کردن بانک به sql Server نباشه ....


برای Attach کردن خارج از محیط sqlserver و بصورت اتوماتیک
شما باید از دستورات SqlCMD استفاده کنی و حتما مطلع هستید که با استفاده از این دستورات می تونی کلیه عملیات های روی دیتابیست رو از طریق Command Promp انجام بدی ، پس ...
برای اینکه دیتابیست اتوماتیک Attach شه یدونه فایل bat بساز و توش اینو بنویس




sqlcmd -i test.txt

و فایل test.txt رو کنارش بذار و توش این نمونه کد رو بذار




create database DATABASE_NAME ON
(FileName='c:\server.mdf') , (FileName='c:\server.ldf')
For Attach
GO
حالا اگر فایل Bat رو احرا کنی دیتابیست Attach میشه:لبخندساده:

mehran5
پنج شنبه 06 خرداد 1389, 13:59 عصر
?in do msair masire filhaye database hast
(FileName='c:\server.mdf') , (FileName='c:\server.ldf')

mehran5
پنج شنبه 06 خرداد 1389, 16:41 عصر
راستی این server یعنی چی ؟ میشه بگین اسم سروره یا اسم فایل های پایگاه داده؟

mehrpars
جمعه 07 خرداد 1389, 17:17 عصر
راستی این server یعنی چی ؟ میشه بگین اسم سروره یا اسم فایل های پایگاه داده؟

شما اول فایل فیزیکی sqlserver رو که همانا فایلهای *.mdf و *.ldf هستند رو یک جا کپی می کنی (توی مثال من درایو c) بعد Attach میکنی .
منظور از server هم همون نام فیزیکی فایل mdf هست ، من اسم فایل mdf رو server گذاشتم ،
شاید مال شما MyFilename.mdf باشه
پس منظور از server ، اسم فایل پایگاه داده هست ،
موفق باشی:لبخندساده:

mehran5
سه شنبه 11 خرداد 1389, 12:24 عصر
یه سوال دیگه :
این دستورات برای کدوم از سرور های ذیل کار می کنند.؟msde.sqlexpres.sql2005.sql2000
بخاطر اینکه چون sql من 2005 و جواب نداد.

takavar_dez
شنبه 15 خرداد 1389, 20:14 عصر
سلام دوست عزیز
من یه برنامه ساده نوشتم که پایگاه داده ای که در دایرکتوری ریشه (محل نصب sqlserver) قرار داره رو attach میکنه و اون رو از حالت فقط خواندنی خارج میکنه ولی مشکلش اینه که فایل های پایگاه داده (test_log.ldf و test.mdf) حتما باید در این دایرکتوری باشن وگرنه درست کار نمیکنه:افسرده:
کدشو میذارم شاید بدرد خورد!!

SqlCommand com = sqlConnection1.CreateCommand();
com.CommandText = "USE [master] CREATE DATABASE [Army] ON ( FILENAME = N'C:\\Program Files\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Data\\test.mdf' ),( FILENAME = N'C:\\Program Files\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Data\\test_log.ldf' ) FOR ATTACH";
com.CommandType = CommandType.Text;
sqlConnection1.Open();
com.ExecuteNonQuery();
sqlConnection1.Close();
com.CommandText = "USE [master] ALTER DATABASE [test] SET READ_WRITE WITH NO_WAIT";
com.CommandType = CommandType.Text;
sqlConnection1.Open();
com.ExecuteNonQuery();
sqlConnection1.Close();

mehran5
یک شنبه 16 خرداد 1389, 18:16 عصر
کاش کد رو تو تگ می زاشتید

vahid64
جمعه 14 مرداد 1390, 12:59 عصر
برای Attach کردن خارج از محیط sqlserver و بصورت اتوماتیک
شما باید از دستورات SqlCMD استفاده کنی و حتما مطلع هستید که با استفاده از این دستورات می تونی کلیه عملیات های روی دیتابیست رو از طریق Command Promp انجام بدی ، پس ...
برای اینکه دیتابیست اتوماتیک Attach شه یدونه فایل bat بساز و توش اینو بنویس




sqlcmd -i test.txt

و فایل test.txt رو کنارش بذار و توش این نمونه کد رو بذار




create database DATABASE_NAME ON
(FileName='c:\server.mdf') , (FileName='c:\server.ldf')
For Attach
GO
حالا اگر فایل Bat رو احرا کنی دیتابیست Attach میشه:لبخندساده:

من اسم فایل رو از test به CMD تغیر دادم.اما این ارور مشاهده میشه.
sqlcmd -i CMD.txt
Sqlcmd: 'CMD.txt': Invalid filename
علت چیه؟.

hadmo_ces
شنبه 22 مرداد 1390, 19:21 عصر
راستی این server یعنی چی ؟ میشه بگین اسم سروره یا اسم فایل های پایگاه داده؟

فکر میکنم شما هنوز در مبانی مشکل داری.مطالعتو بیشتر کن.

vahid64
سه شنبه 25 مرداد 1390, 21:01 عصر
اسم فایل های پایگاه داده هست.ربطی به اسم سرور نداره

amin3271
دوشنبه 07 شهریور 1390, 01:39 صبح
توی رویداد load اولين فرمي كه ازبرنامه ات باز میشه این کد رو بنویس:


SqlConnection con = new SqlConnection("Data Source=.\\SQLEXPRESS;
Initial Catalog=master;Integrated Security=True");
SqlCommand com = new SqlCommand();
com.CommandText = "sp_attach_db @dbname = 'sss', " +
" @filename1 = '" + Application.StartupPath + @"\\data\\sss.mdf', " +
" @filename2 = '" + Application.StartupPath + @"\\data\\sss_log.ldf' ";
com.Connection = con;
try
{
con.Open();
com.ExecuteNonQuery();
con.Close();
//lbl1.Visible = true;
lbl1.Text = "*** برنامه با موفقیت به بانک متصل شد ***";
}
catch //(Exception ee)
{
}

فقط طبق این کد باید فایل های دیتابست رو تو پوشه data بذاري و اون پوشه رو هنگام ساخت setup جایی بذاری که در مسیر نصب برنامه قرار بگیره

در ضمن برای اولین بار اجرا بدنه try اجرا میشه attach انجام میشه و برای دفعات بعد بدنه catch اجرا خواهد شد

fafeagozy
دوشنبه 07 شهریور 1390, 16:04 عصر
با تشکر خوب برای مبحث