1、備份
<%
SQL="backup database 資料庫名 to disk='"&Server.MapPath("backup")&"\"&"backuptext.dat"&"'"
set cnn=Server.createobject("adodb.connection")
cnn.open "driver={SQL Server};Server=伺服器名;uid=sa;pwd="
cnn.execute SQL
on error resume next
if err<>0 then
response.write "錯誤:"&err.Descripting
else
response.write "資料備份成功!"
end if
%>
2、恢複
<%
SQL="Restore database 資料庫名 from disk='"&Server.MapPath("backup")&"\"&"backuptext.dat"&"'"
set cnn=Server.createobject("adodb.connection")
cnn.open "driver={SQL Server};Server=伺服器名;uid=sa;pwd="
cnn.execute SQL
on error resume next
if err<>0 then
response.write "錯誤:"&err.Descripting
else
response.write "資料恢複成功!"
end if
%>
註:以上語句是把資料備份到磁碟的backup目錄下,檔案名稱為backuptext.dat。
2、ASP中能修改SQL資料庫結構嗎?
答:ALTER TABLE
名稱
ALTER TABLE — 更改表屬性
文法
ALTER TABLE table [ * ]
ADD [ COLUMN ] column type
ALTER TABLE table [ * ]
ALTER [ COLUMN ] column { SET DEFAULT value DROP DEFAULT }
ALTER TABLE table [ * ]
RENAME [ COLUMN ] column TO newcolumn
ALTER TABLE table
RENAME TO newtable
ALTER TABLE table
ADD table constraint definition
Inputs
table
試圖更改的現存表的名稱.
column
現存或新的列名稱.
type
新列的類型.
newcolumn
現存列的新名稱.
newtable
表的新名稱.
table constraint definition
表的新的約束定義.
SELECT NewColumn FROM SuperClass*
將不能工作,因為子表會比上級表少一個屬性。
在目前的實現裡,新列/欄位的預設(值)和約束子句會被忽略。你可以隨後用 ALTER TABLE 的 SET DEFAULT 形式設定預設(值)。(你還不得不用 UPDATE 把已存在行更新為預設值。)
用法
向表中增加一個 VARCHAR 列:
ALTER TABLE distributors ADD COLUMN address VARCHAR(30);
對現存列改名:
ALTER TABLE distributors RENAME COLUMN address TO city;
對現存表改名:
ALTER TABLE distributors RENAME TO suppliers;
向表中增加一個外鍵約束:
ALTER TABLE distributors ADD CONSTRAINT distfk FOREIGN KEY (address) REFERENCES addresses(address) MATCH FULL
相容性
SQL92ADD COLUMN 形式是相容的,除了上面說的預設(值)和約束外。ALTER COLUMN 形式是完全相容的。
SQL92 對 ALTER TABLE 聲明了一些附加的Postgres目前還不直接支援的功能:
ALTER TABLE table DROP CONSTRAINT constraint { RESTRICT CASCADE }
增加或刪除表的約束(比如象檢查約束,唯一約束或外鍵約束)。要建立或刪除一個唯一約束,對應地建立或刪除一個唯一索引,要修改其他類型的約束,你需要重建和重載該表,使用 CREATE TABLE 命令的其他參數.
例如,刪除表 distributors 的任何約束:
CREATE TABLE temp AS SELECT * FROM distributors;
DROP TABLE distributors;
CREATE TABLE distributors AS SELECT * FROM temp;
DROP TABLE temp;
ALTER TABLE table DROP [ COLUMN ] column { RESTRICT CASCADE }
前,要刪除一個現存的列,表必須重新建立和重新裝載:
CREATE TABLE temp AS SELECT did, city FROM distributors;
DROP TABLE distributors;
CREATE TABLE distributors (
did DECIMAL(3) DEFAULT 1,
name VARCHAR(40) NOT NULL,
);
INSERT INTO distributors SELECT * FROM temp;
DROP TABLE temp;
重新命名列/欄位和表名是 PostgreSQL 擴充。SQL92 沒有提供這些。