1、ASP中怎么实现SQL数据库备份、恢复! 答:asp在线备份sql server数据库: 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 没有提供这些。