PDA

View Full Version : سوال: مشکل پیدا نکردن دیتابیس...



ghacem.sh
دوشنبه 23 تیر 1393, 22:47 عصر
با سلام.
من تازه کارم تو دلفی
ببینید الان یه پروژه تستی رو سیستم خودم ساختم.
sql رو هم برنامه نصبشو ساختم رو سیستم کاربر نصب میشه.
مشکلی که هست موقع اجرا روی سیستم مقصد دیتابیسو پیدا نمیکنه و خطا میده
روی سیستم خودم دیتابیسو ساختم و کانکت میشم و اوکیه همه چی.من فقط فایل exe که خود win میده رو بردم رو سیستم مقصد.
حالا سوالم اینه که آیا فایل دیتابیسم رو چه جوری باید اتچ کنم؟ خواهشا بگید دقیقا چه جوری چون منبعی تو این زمینه ندیدم من.
آیا باید conecction string رو روی سیستم مقصد اصلاح کنم؟
اگه در مورد این مباحث فایل آموزشی هم باشه دیگه عالی میشه.
ممنونم

ghacem.sh
سه شنبه 24 تیر 1393, 00:34 صبح
سلام مجدد.
بعد کلی گشتن توی سایتای اجنبی! اینو پیدا کردم و کداشو اصلاح کردم:

procedure TForm1.FormCreate(Sender: TObject);
var
strcommand, dbase_Name, file1, file2,computer_name: string;
begin
computer_name:='.\SQLEXPRESS';
dbase_Name:=trim('sqldb1');
file1:=trim('C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\sqldb1_Data.m df');//database file
file2:=trim('C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA\sqldb1_Log.ld f');//log file

with con1 do begin
close;//connect to master system database
ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog='+'sqldb1'+';Data Source='+computer_name+'';
open;
end;//with attachconn

//sql commands for attaching
strcommand:='EXEC sp_attach_db @dbname = '+dbase_Name+', ';
strcommand:=strcommand + '@filename1 = "'+File1+'"'+', ';
strcommand:=strcommand + '@filename2 = "'+File2+'"'+'';
ShowMessage(strcommand);
with qry1 do begin
close;
sql.Clear;
sql.Text:=strcommand;
try
ExecSQL;
ShowMessage('Database Successfully attached');
Except on E:Exception do begin
Showmessage('Error Attaching the Database');
Application.Terminate;
end;
end;//try - except
end;//with query attach
end;
ولی موقع اجرا استثنا رخ میده : Error Attaching the Database
.............
آیا پارامترایی که باید جایگزین میکردم درسته؟
خطا کجاست به نظرتون؟

یوسف زالی
سه شنبه 24 تیر 1393, 20:41 عصر
این همه برنامه نویس اینجا چیکار میکنن پس؟؟؟

این همه برنامه نویس منتظر ایرادات شما نیستند که بدو بدو بیان جواب بدن. اون هم 3 پست در یک روز.
پست شما هم ارتباطی به دلفی نداره و باید با استفاده از ران کردن اسکریپت هایی به زبان اس کیو ال انجام بشه و این یعنی این که باید در تالار اس کیو ال جستجو کنید که مطمئنم نکردید.
چندین پست وجود داره که در همین باره صحبت کردند.
موفق باشید.

ghacem.sh
سه شنبه 24 تیر 1393, 20:47 عصر
ممنون. چقد خوش اخلاقی تو!!!! یه کمی بهترم میتونستی جواب بدیا....:قهقهه:
کلا کامپوتریا اعصاب ندارن انگار...
شما هم موفق باشید

hp1361
سه شنبه 24 تیر 1393, 21:47 عصر
سلام

با توجه به اینکه به نظر میرسه تازه کار باشی، بهتر اول با بانک های ساده مثل اکسس کار کنی و بعد بری سراغ اس کیو ال سرور

این سوال شما چیزیه که نیاز داره ذهنیتت در مورد دیتابیس ها بازتر بشه.

یادمه اوایل فرق بین زبان SQL و بانک اطلاعاتی SQL Server رو نمیدونستم اونوقت به اصرار زیاد دنبال استفاده از بانک SQL Server در برنامه هام بودم.

موفق باشیم

یوسف زالی
سه شنبه 24 تیر 1393, 22:04 عصر
چقد خوش اخلاقی تو!!!!

متاسفانه چند تا کاربر در پیام های خصوصی و ایضا پست های عمومی من رو به این نتیجه راهنمایی کردند که نرمش چقدر می تونه بد هم باشه.

برای کارتون همون طور که گفتم باید اول اسکریپت مورد نظرتون رو در خود محیط بانک تست کنید و بعد از مطمئن شدن از انجام کار، اون رو در زبان برنامه نویسی استفاده کنید.
اگر دارید از اس کیو ال سرور استفاده می کنید در help خود اس کیو ال دقیقا توضیح داده شده که برای ریستور، یا اتچ چه کدی باید بزنید.

farshad_shams
چهارشنبه 25 تیر 1393, 10:57 صبح
این کدی که نوشتی تقریباً درسته فقط ConnectionString باید اصلاح شه به جای sqldb1 بنویس Master

ghacem.sh
پنج شنبه 26 تیر 1393, 14:43 عصر
ممنون فرشاد جان.
اون مستر رو درست کردم و روی سیستم مقصد اجرا کردم. اگه ExecSQL درست کار کنه باید ShowMessage('Database Successfully attached'); رو بده.این پیغامو نمیده ولی ارتباط کنترلا با دیتابیس وصل میشه و خطایی نمیده.
اما اگه بری توی مسیری که فایل های دیتابیس هست به راحتی میتونی فایل ها رو پاک کنی و ایرادی هم پیش نمیاد در صورتی که اگه اتچ درست انجام شده باشه نباید بزاره کاربر بتونه فایل ها رو پاک کنه.درسته؟
جالب تر اینکه وقتی شما یک کوئری مثلا اینسرت کردن یک ردیفو روی سیستم مبدا انجام میدی درسته همه چی ولی همونه روی برنامه مقصد انجام میدی توی دیتابیس چیزی ظاهرا اضافه نمیشه!
به نظرتون مشکل از کجاست؟!!!
اگه امکانش باشه ایمیلتونو بدید باهاتون بیشتر صحبت کنم عالی میشه..
ممنونم.