PDA

View Full Version : کدی اتچی که توی MSSQL 2000 جواب میده ولی در 2008 انجام نمیشه



masoudies
پنج شنبه 02 تیر 1390, 11:03 صبح
سلام
من این کد رو برای اتچ کردن دیتابیسم استفاده میکنم.



SqlConnection con = new SqlConnection();
SqlCommand comm = new SqlCommand();
string strCon = "SERVER = localhost; DATABASE = master; integrated security=true";
con.ConnectionString = strCon;
comm.Connection = con;
string dbname = "PM";
string filename1 = Application.StartupPath + "\\data\\pm_Data.mdf";
string filename2 = Application.StartupPath + "\\data\\pm_Log.ldf";
comm.CommandText = "EXECUTE sp_attach_db @dbname,@filename1,@filename2";
comm.Parameters.Add("@dbname", SqlDbType.VarChar, 260).Value = dbname;
comm.Parameters.Add("@filename1", SqlDbType.VarChar, 260).Value = filename1;
comm.Parameters.Add("@filename2", SqlDbType.VarChar, 260).Value = filename2;
con.Open();

comm.ExecuteNonQuery();
MessageBox.Show("Database is created.");

con.Close();


مشکل اینجاست که روی سیستم که SQL Server 2000 نصبه درست کار میکنه. ولی روی سیستمی که SQL Server 2008 نصبه این خطا رو میده.



Directory lookup for the file "C:\Users\masoud\Desktop\test\test\bin\Debug\data\p m_Data.mdf" failed with the operating system error 5(failed to retrieve text for this error. Reason: 15105).


ممنمون میشم راهنمایی کنید.
تشکر

Esmail Solhkhah
پنج شنبه 02 تیر 1390, 12:16 عصر
دوست عزیز SQL-SERVER از ورژن 2005 به بالا از sp_attach_db پشتیبانی نمیکنه
بجاش باید به اینصورت استفاده کنید که تو هلپ SQL-SERVER بصورت کامل در موردش بحث شده

CREATE DATABASE Archive ON (FILENAME = '''+ @data_path + 'archdat1.mdf'') FOR ATTACH

masoudies
پنج شنبه 02 تیر 1390, 17:55 عصر
تشکر دوست عزیز
توی C# هم همینطور نوشته میشه یا این مخصوص SQL Server هست؟
اگه میشه دقیق ترش رو بنویسید.
ممنون

Esmail Solhkhah
پنج شنبه 02 تیر 1390, 20:12 عصر
برنامشو نوشتم میتونید دانلود کنی
موفق باشید

Esmail Solhkhah
پنج شنبه 02 تیر 1390, 20:31 عصر
تا یادم نرفته تو برنامه کانکشن استرینگ رو دقت کن
نام دیتاسورس تو کامپیوتر من sqlexp2005 هست ممکنه برای کامپیوتر شما چیز دیگه ای باشه
:خجالت:

masoudies
جمعه 03 تیر 1390, 00:49 صبح
باز هم نشد.
با کانکشن شما یعنی

string constr = @"data source = .\SQLEXPRESS; integrated security = true";
این خطا رو میده:


A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

و با این کانکشن

constr = "SERVER = localhost; integrated security=true";

خطای:


Directory lookup for the file "C:\Users\masoud\Desktop\Test_Attach\Test_Attach\bi n\Debug\Test.mdf" failed with the operating system error 5(failed to retrieve text for this error. Reason: 15105).

رو میده.
مشکل چیه؟

راستی در مورد اول اگه SQL Express منظورتون همون باشه که با خود VS نصب میشه، باید بگم که من اون رو نصب نکردم. و SQL Server 2008 رو جدا نصب کردم.
میشه بگید چطوری شما نام دیتا سورستون رو تغییر دادید به sqlexp2005؟
البته من مقدار integrated security رو هم با مقدار true و هم با مقدار sspi تست کردم که خطای مشابه داد. البته نمیدونم sspi چیکار میکنه...
تشکر

Esmail Solhkhah
شنبه 04 تیر 1390, 21:56 عصر
برنامه رو تو کامپیوتر لوکال اجرا میکنی یا از شبکه؟
اگه لوکاله نباید موردی باشه
در مورد اینستنس هم که: موقع نصب SQL-SERVER تو یه قسمت نام اینستنس رو میپرسه که بصورت پیش فرض نام سیستمه
میتونید اونجا نام مورد نظر خودتونو برای اینستنس مورد نیاز وارد کنید