ورود

View Full Version : راهنمایی : نصب خودکار جداول Sql در زمان نصب برنامه



Sabeghi
یک شنبه 26 اسفند 1386, 19:32 عصر
با سلام
من برنامه ای نوشتم که جداول آن Sql می باشد حالا بوسیله ینستال شیلد Setup نرم افزار رو ساختم مشکل اینجاست
1- چطور جداول Sql رو معرفی کنم
2- آیا لازم است که در هر کامپیوتر که میخوام نرم افزار رو نصب کنم قبلش Sql رو نصب کنم
لطفا راهنمایی بفرمائید.

حمیدرضاصادقیان
یک شنبه 26 اسفند 1386, 20:34 عصر
سلام.دوست عزیز شما میتونی فایل mdf,ldf رو روی هر سیستم Attach کنی یا یک SCript از کل دیتابیست ایجاد کنی و هنگام نصب یک دیتابیس جدید ایجاد کنی و اون Script رو روی اون اجرا کنی.
بله ابتدا شما نیاز داری sql رو نصب کنی ولی میتونی همراه با Setup نسخه msde رو برای sql server 2000 و نسخه Sql express رو برای 2005 نصب کنی. که نسخه نصبی اون به صورت رایگان در سایت مایکروسافت هست.حتی الان خود Install Shield اگه اشتباه نکنم Sql Express رو داره به صورت یک پکیج که میتونی به برنامه ات اضافه کنی و اونو نصب کنی.
در InstallAware که به این صورت هست.

mohinsoft
دوشنبه 27 اسفند 1386, 11:25 صبح
باسلام


یک SCript از کل دیتابیست ایجاد کنی و هنگام نصب یک دیتابیس جدید ایجاد کنی و اون Script رو روی اون اجرا کنی

آقای صادقیان ما بانک رو ساختیم و از طریق generate Script از کل بانک script ساختیم به غیر از این که در query Analizer رفته و script رو F5 بزنیم و اجرا کنیم ،این عمل در دلفی چطور امکان پذیر هست؟چطور میتونیم در دلفی این script رو اجرا کنیم؟میتونین راهنمایی کنید؟
ممنون

حمیدرضاصادقیان
دوشنبه 27 اسفند 1386, 11:50 صبح
سلام.شما میتونی با استفاده از دستور OSQL این Script رو اجرا کنی.به راحتی.


OSql -S . -E -i"C:\Script.sql"

که در جلوی -S شما باید نام سرور رو بنویسی و در جلوی -i باید مسیر فایلت رو مشخص کنی.

_alish_
دوشنبه 27 اسفند 1386, 11:55 صبح
با احترام خدمت دوستان
همانطور که جناب آقای صادقیانی اعلام فرمودند
http://www.codeproject.com/KB/database/ConfigureMSDE.aspx
را دیگر در صورت نصب SQLServer استفاده از دستور زیر در برنامه برای Attach کردنبانک می باشد

EXEC sp_attach_db @dbname = N'''+DB+''', @filename1 = N'''+PathExe+DB+'_data.mdf'',@filename2 = N'''+PathExe+DB+'_log.ldf'''


function TConnection.ConnectSQLServer(DB, Server, PWS: String): Boolean;
var
ConnectionStr :String;
ConnectionError :String;
AttachStr :String;
begin
Result := True;
ConnectionStr:= 'Provider=SQLOLEDB.1;'+
'Password='+PWS+
';Persist Security Info=True;'+
'User ID=sa'+
';Initial Catalog='+ DB +
';Data Source='+ Server +
';Use Procedure for Prepare=1'+
';Auto Translate=False'+
';Packet Size=8000;';
ConnectionError:= 'Provider=SQLOLEDB.1;' +
'Password='+ PWS +
';Persist Security Info=True;'+
'User ID=sa'+
';Initial Catalog=master'+
';Data Source='+ Server +
';Use Procedure for Prepare=1' +
';Auto Translate=False' +
';Packet Size=8000;';

DML.ADOC.Connected := False ;
DML.ADOC.ConnectionString := ConnectionStr;
DML.ADOC.DefaultDatabase := DB;
try
DML.ADOC.Connected := True ;
except
if MessageMy.MyMessage('ارتباط با بانک اطلاعاتی برقرار گردد؟',2)=1 then
begin
DML.ADOC.Connected := False;
DML.ADOC.ConnectionString := ConnectionError;
DML.ADOC.DefaultDatabase := 'master';
try
DML.ADOC.Connected:=true;
AttachStr:='EXEC sp_attach_db @dbname = N'''+DB+''', @filename1 = N'''+PathExe+DB+'_data.mdf'',@filename2 = N'''+PathExe+DB+'_log.ldf''';
DML.Cmd.CommandText:=AttachStr;
DML.Cmd.Execute();
DML.ADOC.Connected:=false;
DML.ADOC.DefaultDatabase:=DB;
DML.ADOC.Connected:=true;
except
Result := False;
end;//try
end //mes
else
Result:=False;
end;//try
end;