如何编写安装数据库进SQL2000程序? |
尚未結案
|
plmm25
一般會員 發表:15 回覆:6 積分:4 註冊:2004-04-20 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
plmm25
一般會員 發表:15 回覆:6 積分:4 註冊:2004-04-20 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
使用 enterprise 管理工具, 依照下面的圖示,
1. 對你要產生 schema 的資料庫按右鍵, 如圖選擇功能,
2. 依照你要產生的相關物件選擇, 如圖,
3. 在選項中設定相關資訊, 如圖,
4. 在按下確定後, 會進行存檔, 將該 schema 的 command 存好用, 用文字編輯器看看有沒有什麼問題, 也可以進行手動的修改, 依實際的需要來調整即可! 資料庫中的 trigger 及 stored procedure 當然可以加入, 可以看步驟 3 就明白了!!
|
plmm25
一般會員 發表:15 回覆:6 積分:4 註冊:2004-04-20 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
可以啊, 你有沒有注意到產生的 .sql 檔前面就有一段,
CREATE DATABASE [test] ON (NAME = N'test_Data', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Data.MDF' , SIZE = 2, FILEGROWTH = 10%) LOG ON (NAME = N'test_Log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF' , SIZE = 1, FILEGROWTH = 10%) COLLATE Chinese_Taiwan_Stroke_CI_AS GO其中的 filename 參數就是指定要用的 mdf 及 ldf 檔的位置, 由 create database 語法來產生, 可以依你的需要來置換, 但要注意的是, 這個路徑是在該 server 上的哦, 不是 local 的. 要執行這些 sql command , 可以使用 adocommand 來執行即可!! |
plmm25
一般會員 發表:15 回覆:6 積分:4 註冊:2004-04-20 發送簡訊給我 |
|
dengguo
一般會員 發表:41 回覆:49 積分:23 註冊:2004-01-09 發送簡訊給我 |
HI.plmm25:
你可以試下在程序中放入一個ADOQuery控件和一個ADOConnection控件,然後在程序中加入
----------------------------------------------------------------------
ADOQuery1.close;
ADOQuery1.SQL.Add('exec sp_attach_db @dbname=N''2C'',@filename1=N''c:\2cdata\2C_Data.MDF'',@filename2=N''c:\2cdata\2C_Log.LDF''');
ADOQuery1.ExecSQL;
---------------------------------------------------------------------- ###############################
初學delphi,請各位多多提點!謝謝!
###############################
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
GO 是一個虛指令, 不能用在 ADOCommand 中, 僅在 SQL Analyzer 中使用, 為避免這個問題, 我們可以使用切割指令的方式來操作, 將每一個 GO 分開送往資料庫執行即可, 如,
procedure TForm1.Button1Click(Sender: TObject); var strs: TStringList; sCmd, sSchemaCmd: string; i: integer; begin // load from .sql file strs:= TStringList.Create; strs.LoadFromFile('c:\n2.sql'); sSchemaCmd := strs.Text; strs.Free; // split every command by 'GO' i := Pos('GO'#13#10, sSchemaCmd); while i>0 do begin sCmd := Copy(sSchemaCmd, 1, i-1); ADOCommand1.CommandText := sCmd; ADOCommand1.Execute; Delete(sSchemaCmd, 1, i 3); i := Pos('GO'#13#10, sSchemaCmd); end; ShowMessage('ok'); end;弟用了 'GO'#13#10 來切割原來的 command, 再分次送給 sql server 執行即可! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |