PDA

View Full Version : سوال: مشکل در attach کردن بانک توسظ خود برنامه در ویستا



asadi.ir
سه شنبه 19 مرداد 1389, 15:43 عصر
سلام من تو برنامه ام بانک به طور خودکار attach میشه ولی توی ویستا یا 7 وقتی با sql express 2005 کار میکنه بانک نمیتونه atach بشه فکر کنم مشکل از permission چون از بانک master ایراد میگیره باشه چطوری میشه اونو درستش کرد؟ (ضمنا برنامه با دلفی 7 نوشته شده)

حمیدرضاصادقیان
سه شنبه 19 مرداد 1389, 16:03 عصر
سلام.شما اول ببین در ویندوز ویستا میتونی به استفاده از OSQL به دیتابیست وصل بشی یانه؟
در منوی run تایپ کن Cmd بعد در cmd دستور زیر رو بزن ببین جواب میگیری؟


osql -S (local) -U sa -P -q"Select name from sys.sysdatabases"

باید نام دیتابیس ها رو به شما نمایش بده.
شما ممکنه با استفاده از Windows Authentication میخوای به سرور لاگین کنی اجازه نمیده.
با این روش شما با استفاده از SQL Authentication داری به سرور لاگین میکنی.
نکته : در جلوی S- باید نام سرور Sql خودتونو بنویسید.
موفق باشید

asadi.ir
سه شنبه 19 مرداد 1389, 18:19 عصر
با تشکر از پاسخ شما ولی این اتفاق نیافتاد پاسخ زیر رو داد :

Note: osql does not support all features of SQL Server 2005.
Use sqlcmd instead. See SQL Server Books Online for details.

usage: osql [-U login id] [-P password]
[-S server] [-H hostname] [-E trusted connection]
[-d use database name] [-l login timeout] [-t query timeout]
[-h headers] [-s colseparator] [-w columnwidth]
[-a packetsize] [-e echo input] [-I Enable Quoted Identifiers]
[-L list servers] [-c cmdend] [-D ODBC DSN name]
[-q "cmdline query"] [-Q "cmdline query" and exit]
[-n remove numbering] [-m errorlevel]
[-r msgs to stderr] [-V severitylevel]
[-i inputfile] [-o outputfile]
[-p print statistics] [-b On error batch abort]
[-X[1] disable commands [and exit with warning]]
[-O use Old ISQL behavior disables the following]
<EOF> batch processing
Auto console width scaling
Wide messages
default errorlevel is -1 vs 1
[-? show syntax summary]



ضمنا پروسیجر attachکردن دیتا بیس هم اینه :


procedure attach_database (databasename , datafilepath , logfilepath:string);
var
computer_name, strcommand, dbase_Name, file1, file2: string;

begin

//database name
computer_name:=GetComputerName+'\SQLEXPRESS';

dbase_Name:=trim(databasename);
file1:=trim(datafilepath);//database file
file2:=trim(logfilepath);//log file
with DataModule1.AttachConn do
begin
close;//connect to master system database
ConnectionString:='Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog='+'master'+';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+'"'+'';
with DataModule1.qryAttach do begin
close;
sql.Clear;
sql.Text:=strcommand;
try
ExecSQL;
ShowMessage('بانک اطلاعاتي با موفقيت نصب گرديد');
//Application.Terminate;
Except on E:Exception do begin
Showmessage('نصب بانک اطلاعاتي با مشکل مواجه شد');
Application.Terminate;
end;
end;//try - except
end;//with query attach

end;

حمیدرضاصادقیان
سه شنبه 19 مرداد 1389, 21:15 عصر
سلام.
کانکشن استرینگ رو به این شکل تغییر بدید ببینید درست میشه.


Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa

بعداز اون هم intial catalog , datasource رو مشخص کنید.
فقط قسمت اول رو به این صورت تغییر بدید

درضمن کدهاتونو داخل تگ code بذارید
موفق باشید

asadi.ir
سه شنبه 19 مرداد 1389, 21:36 عصر
نشد آقا نشد :(
شما خودتون چه جوری این کار رو میکنید؟
من با setup factory 8 کار می کنم نمیدونم چه جوری database رو تو setup باید attach کنم اینه که این کار رو با خود برنامه انجام میدم که تو ویستا و 7 به مشکل میخوره ولی تو xp اصلا مشکل نداره

asadi.ir
جمعه 22 مرداد 1389, 15:02 عصر
ممنون درست شد . بایستی از دسترسی خود sql استفاده میکردم همونطوری که فرموده بودید.