PDA

View Full Version : ایجاد بانک بر روی sql server



صنم
یک شنبه 17 مهر 1384, 11:59 صبح
سلام
بانک اطلاعاتی من در sql server هست می خوام وقتی برنامه ام برای اولین بار اجرا می شود بانک اطلاعاتی بر روی sql server ایجاد شود از کد زیر استفاده کردم ولی نشد کسی می تونه کمکم کنه ؟

var
SqlCommand : WideString;
begin
SqlCommand := 'EXEC sp_attach_db @dbname = N'+quotedstr('test')+','+
' @filename1 = N'+quotedstr('c:\test\test_Data.mdf')+','+
' @filename2 = N'+quotedstr('c:\test\test_Log.ldf');
With ADOCommand1 Do
Begin
CommandText := SqlCommand;
Execute;
End;

vcldeveloper
دوشنبه 18 مهر 1384, 02:37 صبح
function AttachDataBaseToServer(DataBaseName : string) : boolean;
var
dbc : TAdoCommand;
Param1,
Param2 : string;
begin
Result := False;
Param1 := ExtractFilePath(Application.ExeName) + 'DATA\test_data.MDF';
Param2 := ExtractFilePath(Application.ExeName) + 'DATA\test_data.LDF';
dbC := TAdoCommand.Create(nil);
try
dbc.ConnectionString := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;' +
'Persist Security Info=False;' +
'Data Source=""';
dbc.CommandType := cmdUnknown;
dbc.CommandText := 'CREATE DATABASE ' + DataBaseName +
' ON PRIMARY ' +
' (FILENAME = N' + QuotedStr(Param1) + ')' +
' LOG ON ' +
' ( NAME = ' + QuotedStr(ExtractFileName(Param2)) +
', FILENAME = N' + QuotedStr(Param2) + ')' +
'FOR ATTACH';
dbc.Execute;
Result := True;
finally
dbc.Free;
end;
end;

صنم
دوشنبه 18 مهر 1384, 08:42 صبح
سلام ممنون که جواب دادید من کد زیر را استفاده کردم ولی error زیر را داد
the lsn passed to log scan in database test is invalid.

کد :
Result := False;
Param1 := ExtractFilePath(Application.ExeName) + 'DATA\' + 'test_Data.MDF';
Param2 := ExtractFilePath(Application.ExeName) + 'DATA\' + 'test_Log.LDF';
dbC := TAdoCommand.Create(nil);
try
dbc.ConnectionString := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Data Source=(local)';
dbc.CommandType := cmdUnknown;
dbc.CommandText := 'CREATE DATABASE ' + 'test' +
' ON PRIMARY ' +
' (FILENAME = N' + QuotedStr(Param1) + ')' +
' LOG ON ' +
' ( NAME = ' + QuotedStr('m') +
', FILENAME = N' + QuotedStr(Param2) + ')' +
'FOR ATTACH';
dbc.Execute;
Result := True;
finally
dbc.Free;
end;
نمی دونم اشکال کار از کجاست .

vcldeveloper
سه شنبه 19 مهر 1384, 02:14 صبح
شما احتمالا نام Log file را اشتباه وارد می کنیدبا توجه به کد شما، کد خودم در پست قبلی رو تغییر دادم، بجای DatabaseName نام بانکی که قصد دارید در SQL Server ایجاد کنید را وارد کنید. Param1 = مسیر فایل MDF و Param2 = مسیر فایل LDF. مثال:
Param1 := 'C:\Program Files\Microsoft SQL Server\DATA\MSSQL\Data\northwnd.MDF'
Param2 := 'C:\Program Files\Microsoft SQL Server\DATA\MSSQL\Data\northwnd.LDF'


AttachDataBaseToServer('Northwind');

صنم
پنج شنبه 21 مهر 1384, 08:02 صبح
باز هم همان error رو میده نمیدونم چه جوری باید حلش کنم

vcldeveloper
جمعه 22 مهر 1384, 01:51 صبح
من کدی رو که دادم تست کردم، مشکلی نداره. شاید فایلهای بانک شما مشکل دارند. می تونید اونها رو در Enterprise Manager به سرور attach کنید؟

بهمن بهار
جمعه 11 آذر 1384, 18:22 عصر
با عرض سلام واحترام
آیا این کار برای سرور از روی کلاینت هم امکان پذیر است؟

اَرژنگ
جمعه 11 آذر 1384, 19:01 عصر
با عرض سلام واحترام
آیا این کار برای سرور از روی کلاینت هم امکان پذیر است؟
اگر کلاینت میتواند به داتابیس کانکت کنه ، بله.
اگر که نه، میتونه به سرور یک درخواست بفرسته، که سرور براش انجام بدهد.
از هر دو حال جواب مثبت است.