系统做好了.要写个程序把分离出来xxx.MDF和xxx.LDF导入到数据库中,怎么办? 不用"企业管理器",就写个程序导入!或者将分离出来的sql脚本导入数据库..也就是说,写个程序,去创建一个数据库和里面的表. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 把分离出来xxx.MDF和xxx.LDF导入到数据库?是不是要附加数据库?-----------------------------------------------------------sp_attach_db将数据库附加到服务器。语法sp_attach_db [ @dbname = ] 'dbname' , [ @filename1 = ] 'filename_n' [ ,...16 ]参数[@dbname =] 'dbname'要附加到服务器的数据库的名称。该名称必须是唯一的。dbname 的数据类型为 sysname,默认值为 NULL。 [@filename1 =] 'filename_n'数据库文件的物理名称,包括路径。filename_n 的数据类型为 nvarchar(260),默认值为 NULL。最多可以指定 16 个文件名。参数名称以 @filename1 开始,递增到 @filename16。文件名列表至少必须包括主文件,主文件包含指向数据库中其它文件的系统表。该列表还必须包括数据库分离后所有被移动的文件。返回代码值0(成功)或 1(失败)结果集无注释只应对以前使用显式 sp_detach_db 操作从数据库服务器分离的数据库执行 sp_attach_db。如果必须指定多于 16 个文件,请使用带有 FOR ATTACH 子句的 CREATE DATABASE。如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应该运行 sp_removedbreplication 从数据库删除复制。权限只有 sysadmin 和 dbcreator 固定服务器角色的成员才能执行本过程。示例下面的示例将 pubs 中的两个文件附加到当前服务器。EXEC sp_attach_db @dbname = N'pubs', @filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf', @filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf' 把分离出来xxx.MDF和xxx.LDF导入到数据库中-----------------------------------------你的意思就是把这个数据库附加到sqlserver服务器中,对吗?给你我写的代码,delphi 6下测试通过!函数为:function AttachDB(Form1:TForm;file1,file2:string;saPwd:string):boolean;var sql:string; ADOQuery1:TADOQuery;begin ADOQuery1 := TADOQuery.Create(Form1); ADOQuery1.ConnectionString := 'Provider=SQLOLEDB.1;Password='+saPwd+';Persist Security Info=True;User ID=sa;Data Source=.'; sql := 'EXEC sp_attach_db @dbname = N''Infant'',@filename1 = N'''+ file1+''',@filename2 = N'''+file2+''''; try ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add(sql); ADOQuery1.ExecSQL; AttachDB := true; except AttachDB := false; end;end;//程序中调用if AttachDB(Self,'xxx.mdf','xxx_log.LDF',sapwd) = false then//sapwd为sql服务器密码begin Showmessage('Error'); Exit;end; 其实就是用adoquery解释执行sql脚本function Tinitdataw.crdatabasesql:string;vars:string;drv:string;begindrv:=ComboBox1.Text;//服务器上数据库文件名s:=LabeledEdit3.Text;//要建立的数据库名result:='IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'+''''+s+''''+')'+'DROP DATABASE ['+s+'] '+#13+' '+'CREATE DATABASE ['+s+'] ON (NAME = N'+''''+s+'_Data'+''''+',FILENAME = N'+''''+drv+s+'_Data.MDF'+''''+', SIZE = 5, FILEGROWTH = 10%) LOG ON (NAME = N'+''''+s+'_Log'+''''+', FILENAME = N'+''''+drv+s+'_Log.LDF'+''''+' , SIZE = 1, FILEGROWTH = 10%) COLLATE Chinese_PRC_CI_AS ';end;procedure Tinitdataw.initdatabaseExecute(Sender: TObject);varts:tstringlist;i:integer;begints:=tstringlist.create;tryADOQuery1.Close;AALabel1.Caption:='建立数据库!';ADOQuery1.SQL.Clear;ADOQuery1.SQL.Add(crdatabasesql);ADOQuery1.ExecSQL;AALabel1.Caption:='数据库建立完毕!';update;ADOQuery1.SQL.Clear;AALabel1.Caption:='准备初始化数据库...';update;ts.loadfromfile('初始化数据库.sql');for i:=0 to ts.Count-1 dobegin if ts[i]<>'GO' then ADOQuery1.SQL.Add(ts[i]) else begin ADOQuery1.ExecSQL; AALabel1.Caption:='完成操作:'+inttostr(i)+'行'; update; adoquery1.SQL.Clear; end;end;showmessage('初始化完成!,系统可以使用了。');finallyts.free;end;end; EXEC sp_attach_db @dbname = N'pubs', @filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf', @filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf' 求一个简单数据操作,但一直没搞定,请高手进.... 我是老菜鸟新手,一个例子中看不懂的地方,请大家帮忙指点一下,谢谢了哈! 加分求解:如何中止一个存储过程(TADOQuery)的执行 求Excel 导入到 Sql2000的源码 (D7的) 要成為專家?容易!請進!!!! 就一条语句,错在哪里? 有谁做过打印控件的预览?? 刚分手,送分给哥们吧,以后我也不玩什么软件,什么DELPHI了。大家再见 batchmove的效率问题 请问数学不好对编程影响大吗? ListBox 的内存释放问题! 排序问题,请进
-----------------------------------------------------------
sp_attach_db
将数据库附加到服务器。语法
sp_attach_db [ @dbname = ] 'dbname'
, [ @filename1 = ] 'filename_n' [ ,...16 ]参数
[@dbname =] 'dbname'要附加到服务器的数据库的名称。该名称必须是唯一的。dbname 的数据类型为 sysname,默认值为 NULL。 [@filename1 =] 'filename_n'数据库文件的物理名称,包括路径。filename_n 的数据类型为 nvarchar(260),默认值为 NULL。最多可以指定 16 个文件名。参数名称以 @filename1 开始,递增到 @filename16。文件名列表至少必须包括主文件,主文件包含指向数据库中其它文件的系统表。该列表还必须包括数据库分离后所有被移动的文件。返回代码值
0(成功)或 1(失败)结果集
无注释
只应对以前使用显式 sp_detach_db 操作从数据库服务器分离的数据库执行 sp_attach_db。如果必须指定多于 16 个文件,请使用带有 FOR ATTACH 子句的 CREATE DATABASE。如果将数据库附加到的服务器不是该数据库从中分离的服务器,并且启用了分离的数据库以进行复制,则应该运行 sp_removedbreplication 从数据库删除复制。权限
只有 sysadmin 和 dbcreator 固定服务器角色的成员才能执行本过程。示例
下面的示例将 pubs 中的两个文件附加到当前服务器。EXEC sp_attach_db @dbname = N'pubs',
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'
-----------------------------------------
你的意思就是把这个数据库附加到sqlserver服务器中,对吗?
给你我写的代码,delphi 6下测试通过!
函数为:
function AttachDB(Form1:TForm;file1,file2:string;saPwd:string):boolean;
var
sql:string;
ADOQuery1:TADOQuery;
begin
ADOQuery1 := TADOQuery.Create(Form1);
ADOQuery1.ConnectionString := 'Provider=SQLOLEDB.1;Password='+saPwd+';Persist Security Info=True;User ID=sa;Data Source=.';
sql := 'EXEC sp_attach_db @dbname = N''Infant'',@filename1 = N'''+ file1+''',@filename2 = N'''+file2+'''';
try
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(sql);
ADOQuery1.ExecSQL;
AttachDB := true;
except
AttachDB := false;
end;
end;//程序中调用
if AttachDB(Self,'xxx.mdf','xxx_log.LDF',sapwd) = false then//sapwd为sql服务器密码
begin
Showmessage('Error');
Exit;
end;
var
s:string;
drv:string;
begin
drv:=ComboBox1.Text;//服务器上数据库文件名
s:=LabeledEdit3.Text;//要建立的数据库名
result:='IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'+''''+
s+''''+')'+'DROP DATABASE ['+s+'] '+#13+' '+
'CREATE DATABASE ['+s+'] ON (NAME = N'+''''+s+'_Data'+''''+
',FILENAME = N'+''''+drv+s+'_Data.MDF'+''''+
', SIZE = 5, FILEGROWTH = 10%) LOG ON (NAME = N'+''''+s+'_Log'+''''+
', FILENAME = N'+''''+drv+s+'_Log.LDF'+''''+' , SIZE = 1, FILEGROWTH = 10%) COLLATE Chinese_PRC_CI_AS ';
end;
procedure Tinitdataw.initdatabaseExecute(Sender: TObject);
var
ts:tstringlist;
i:integer;
begin
ts:=tstringlist.create;
try
ADOQuery1.Close;
AALabel1.Caption:='建立数据库!';
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(crdatabasesql);
ADOQuery1.ExecSQL;
AALabel1.Caption:='数据库建立完毕!';
update;
ADOQuery1.SQL.Clear;
AALabel1.Caption:='准备初始化数据库...';
update;
ts.loadfromfile('初始化数据库.sql');
for i:=0 to ts.Count-1 do
begin
if ts[i]<>'GO' then
ADOQuery1.SQL.Add(ts[i]) else
begin
ADOQuery1.ExecSQL;
AALabel1.Caption:='完成操作:'+inttostr(i)+'行';
update;
adoquery1.SQL.Clear;
end;
end;
showmessage('初始化完成!,系统可以使用了。');
finally
ts.free;
end;
end;
@filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'