CREATE DATABASE [searcha] ON (NAME = N'searcha_Data', FILENAME = N'D:\DATA\searcha_Data.MDF' , SIZE = 788, FILEGROWTH = 10%) LOG ON (NAME = N'searcha_Log', FILENAME = N'D:\DATA\searcha_Log.LDF' , SIZE = 9, FILEGROWTH = 10%)
COLLATE Chinese_PRC_CI_AS
GOexec sp_dboption N'searcha', N'autoclose', N'false'
GOexec sp_dboption N'searcha', N'bulkcopy', N'false'
GOexec sp_dboption N'searcha', N'trunc. log', N'true'
GOexec sp_dboption N'searcha', N'torn page detection', N'false'
GOexec sp_dboption N'searcha', N'read only', N'false'
GOexec sp_dboption N'searcha', N'dbo use', N'false'
GOexec sp_dboption N'searcha', N'single', N'false'
GOexec sp_dboption N'searcha', N'autoshrink', N'true'
GOexec sp_dboption N'searcha', N'ANSI null default', N'false'
GOexec sp_dboption N'searcha', N'recursive triggers', N'false'
GOexec sp_dboption N'searcha', N'ANSI nulls', N'false'
GOexec sp_dboption N'searcha', N'concat null yields null', N'false'
GOexec sp_dboption N'searcha', N'cursor close on commit', N'false'
GOexec sp_dboption N'searcha', N'default to local cursor', N'false'
GOexec sp_dboption N'searcha', N'quoted identifier', N'false'
GOexec sp_dboption N'searcha', N'ANSI warnings', N'false'
GOexec sp_dboption N'kelonok', N'auto create statistics', N'true'
GOexec sp_dboption N'searcha', N'auto update statistics', N'true'
GOif( ( (@@microsoftversion / power(2, 24) = 8) and (@@microsoftversion & 0xffff >= 724) ) or ( (@@microsoftversion / power(2, 24) = 7) and (@@microsoftversion & 0xffff >= 1082) ) )
exec sp_dboption N'searcha', N'db chaining', N'false'
GO
COLLATE Chinese_PRC_CI_AS
GOexec sp_dboption N'searcha', N'autoclose', N'false'
GOexec sp_dboption N'searcha', N'bulkcopy', N'false'
GOexec sp_dboption N'searcha', N'trunc. log', N'true'
GOexec sp_dboption N'searcha', N'torn page detection', N'false'
GOexec sp_dboption N'searcha', N'read only', N'false'
GOexec sp_dboption N'searcha', N'dbo use', N'false'
GOexec sp_dboption N'searcha', N'single', N'false'
GOexec sp_dboption N'searcha', N'autoshrink', N'true'
GOexec sp_dboption N'searcha', N'ANSI null default', N'false'
GOexec sp_dboption N'searcha', N'recursive triggers', N'false'
GOexec sp_dboption N'searcha', N'ANSI nulls', N'false'
GOexec sp_dboption N'searcha', N'concat null yields null', N'false'
GOexec sp_dboption N'searcha', N'cursor close on commit', N'false'
GOexec sp_dboption N'searcha', N'default to local cursor', N'false'
GOexec sp_dboption N'searcha', N'quoted identifier', N'false'
GOexec sp_dboption N'searcha', N'ANSI warnings', N'false'
GOexec sp_dboption N'kelonok', N'auto create statistics', N'true'
GOexec sp_dboption N'searcha', N'auto update statistics', N'true'
GOif( ( (@@microsoftversion / power(2, 24) = 8) and (@@microsoftversion & 0xffff >= 724) ) or ( (@@microsoftversion / power(2, 24) = 7) and (@@microsoftversion & 0xffff >= 1082) ) )
exec sp_dboption N'searcha', N'db chaining', N'false'
GO
ADOCommand1.Execute;
一句句执行可以吗
isql 实用工具
isql 实用工具使您得以输入 Transact-SQL 语句、系统过程和脚本文件;并且使用 DB-Library 与 Microsoft® SQL Server™ 2000 进行通讯。语法
isql
[-?] |
[-L] |
[
{
{-U login_id [-P password]}
| -E
}
[-S server_name] [-H wksta_name] [-d db_name]
[-l time_out] [-t time_out] [-h headers]
[-s col_separator] [-w column_width] [-a packet_size]
[-e] [-x max_text_size]
[-c cmd_end] [-q "query"] [-Q "query"]
[-n] [-m error_level] [-r {0 | 1}]
[-i input_file] [-o output_file] [-p]
[-b] [-O]
]详细说明你可以查阅MsSQLServer联机手册
(2)用ADOQuery执行脚本文件。代码如下:
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.LoadFromFile('Database.sql');
ADOQuery1.ExecSQL;
winexec函数执行isql命令,参数用-i导入脚本
两种办法:
1、用isql
2、自己拆分SQL语句,再分段载入执行
通过调用外部程序SQLSERVER的osql.exe来实现,调用时隐藏osql.exe的窗口
====================================================================
unit UtManageData;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons,shellApi, ExtCtrls, DB, ADODB, Grids, DBGrids,ComObj;type
TFrmManageData = class(TForm)
GroupBox2: TGroupBox;
Label3: TLabel;
meoInfo: TMemo;
bbtnCreate: TBitBtn;
bbtnExit: TBitBtn;
Image1: TImage;
AdoCon: TADOConnection;
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
cbServer: TComboBox;
GroupBox1: TGroupBox;
Label1: TLabel;
edtUser: TEdit;
Label2: TLabel;
edtPassWord: TEdit;
Bevel1: TBevel;
procedure bbtnCreateClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure bbtnExitClick(Sender: TObject); private
function createDatabase(server,user,passWord : string) : boolean;
procedure ExecuteOSql(server,user,passWord : string);
procedure getNetWorkServer;
{ Private declarations }
public
{ Public declarations }
end;var
FrmManageData: TFrmManageData;implementation//uses UtSelectServer;{$R *.dfm}procedure TFrmManageData.bbtnCreateClick(Sender: TObject);
var
server,user,passWord : string;
begin
server := cbServer.Text;
user := edtUser.Text;
passWord :=edtPassWord.Text;
if createDatabase(server,user,passWord) then //创建数据库
begin
ExecuteOSql(server,user,passWord); //执行sql脚本创建表
endend;procedure TFrmManageData.FormActivate(Sender: TObject);
begin
getNetWorkServer; //获得服务器
end;procedure TFrmManageData.bbtnExitClick(Sender: TObject);
begin
Close;
end;function TFrmManageData.createDatabase(server,user,passWord : string): boolean;
var
sqlStr : String;
conStr : String;
year,month,day : Word;
begin
decodeDate(now,year,month,day);
//Provider=SQLOLEDB.1;Password=ssss;Persist Security Info=True;User ID=sa;Data Source=ZBDI
//连接数据库
conStr :='Provider=SQLOLEDB.1;Password='+passWord+';Persist Security Info=False;User ID='+user+';';
constr := conStr + 'Data Source='+server;
try
ADOCon.Close;
ADOCon.ConnectionString := conStr;
ADOCon.ConnectionTimeout := 15;
ADOCon.Connected := True;
except Application.MessageBox('无法建立连接,请确认数据库服务器、用户名、密码是否正确。','警告',MB_ICONWARNING);
result := False;
exit;
end;
//查找该数据库是否存在
sqlStr := 'select name from master..sysdatabases where name='+''''+'wz'+intToStr(year)+'''';
try
with ADOQuery1 do
begin
Close;
Connection := ADOCon;
Sql.Add(sqlStr);
Active := True;
if RecordCount >0 then
begin
Application.MessageBox('该数据库已经存在.','警告',MB_ICONWARNING);
result := False;
exit;
end;
end;
except
Application.MessageBox('无法创建数据库,请确认是否正确安装。','警告',MB_ICONWARNING);
result := False;
exit;
end;
//创建数据库
try
with ADOquery1 do
begin
Close;
Sql.clear;
Sql.Add('Create DataBase '+'wz'+inttostr(year));
ExecSql;
end;
except
Application.MessageBox('无法创建数据库,请确认是否正确安装。','警告',MB_ICONWARNING);
result := False;
exit;
end;
result := True;
/////end;procedure TFrmManageData.ExecuteOSql(server,user,passWord : string);
var
dosStr : String;
fileName : String;
year,month,day : Word;
begin
//执行 OSQl.exe
decodeDate(now,year,month,day);
fileName := ExtractFilePath(Application.ExeName);
try
dosStr := ' -S '+server+' -U '+user+' -P '+passWord+' -q '+'"use wz'+inttostr(year)+'"'+' -i '+ filename+'createDB.sql';
// showmessage(dosStr);
shellExecute(handle,'open','osql.exe', Pchar(dosStr),nil,sw_hide);
meoInfo.Clear;
meoInfo.Font.Color := clred;
meoInfo.Lines.Add(' 正在创建数据库请稍后.....');
meoInfo.Refresh;
sleep(3000);
meoInfo.Clear;
meoInfo.Lines.Add('成功创建数据库。');
Application.MessageBox('成功创建数据库。','提示',MB_ICONWARNING);
except
Application.MessageBox('无法创建数据库,请确认是否正确安装。','警告',MB_ICONWARNING)
end;
end;procedure TFrmManageData.getNetWorkServer;
var
SQLServer:Variant;
ServerList:Variant;
i,nServers:integer;
sRetValue:String;
begin //获得局域网上的服务器
try
Application.ProcessMessages;
SQLServer := CreateOleObject('SQLDMO.Application');
ServerList:= SQLServer.ListAvailableSQLServers;
nServers:=ServerList.Count;
cbServer.Clear;
for i := 1 to nservers do
cbServer.Items.Add(ServerList.Item(i));
SQLServer:=NULL;
serverList:=NULL;
cbServer.ItemIndex := 0;
except
application.MessageBox('无法找到可用的数据库服务器。','警告!',MB_ICONWARNING);
// APPLICATION.Terminate;
end;
end;end.
是可以的
但是要指定osql.exe的绝对路径,否则第一次运行的时候就不会执行。-------------------------
抄一下SQL Server联机帮助的解释:(哈哈哈~~~)
bcp 实用工具
bcp 实用工具在 Microsoft® SQL Server™ 2000 实例和数据文件之间以用户指定的格式复制数据。
语法
bcp {[[database_name.][owner].]{table_name | view_name} | "query"}
{in | out | queryout | format} data_file
[-m max_errors] [-f format_file] [-e err_file]
[-F first_row] [-L last_row] [-b batch_size]
[-n] [-c] [-w] [-N] [-V (60 | 65 | 70)] [-6]
[-q] [-C code_page] [-t field_term] [-r row_term]
[-i input_file] [-o output_file] [-a packet_size]
[-S server_name[\instance_name]] [-U login_id] [-P password]
[-T] [-v] [-R] [-k] [-E] [-h "hint [,...n]"]