1、ASP中怎么实现SQL数据库备份、恢复!
答:asp在线备份sqlserver数据库:
1、备份
<%
SQL="backupdatabase数据库名todisk='"&Server.MapPath("backup")&""&"backuptext.dat"&"'"
setcnn=Server.createobject("adodb.connection")
cnn.open"driver={SQLServer};Server=服务器名;uid=sa;pwd="
cnn.executeSQL
onerrorresumenext
iferr<>0then
response.write"错误:"&err.Descripting
else
response.write"数据备份成功!"
endif
%>
2、恢复
<%
SQL="Restoredatabase数据库名fromdisk='"&Server.MapPath("backup")&""&"backuptext.dat"&"'"
setcnn=Server.createobject("adodb.connection")
cnn.open"driver={SQLServer};Server=服务器名;uid=sa;pwd="
cnn.executeSQL
onerrorresumenext
iferr<>0then
response.write"错误:"&err.Descripting
else
response.write"数据恢复成功!"
endif
%>
注:以上语句是把数据备份到磁盘的backup目录下,文件名为backuptext.dat。
2、ASP中能修改SQL数据库结构吗?
答:ALTERTABLE
名称
ALTERTABLE—更改表属性
语法
ALTERTABLEtable[*]
ADD[COLUMN]columntype
ALTERTABLEtable[*]
ALTER[COLUMN]column{SETDEFAULTvalue|DROPDEFAULT}
ALTERTABLEtable[*]
RENAME[COLUMN]columnTOnewcolumn
ALTERTABLEtable
RENAMETOnewtable
ALTERTABLEtable
ADDtableconstraintdefinition
Inputs
table
试图更改的现存表的名称.
column
现存或新的列名称.
type
新列的类型.
newcolumn
现存列的新名称.
newtable
表的新名称.
tableconstraintdefinition
表的新的约束定义.
Newtableconstraintforthetable
输出
ALTER
从被更名的列或表返回的信息.
ERROR
如果一个列或表不存在返回的信息.
描述
ALTERTABLE变更一个现存表的定义.ADDCOLUMN形式用与CREATETABLE一样的语法向表中增加一个新列/字段。ALTERCOLUMN形式允许你从列/字段中设置或者删除缺省(值)。注意缺省(值)只对新插入的行有效。RENAME子句可以在不影响相关表中任何数据的情况下更改一个表或者列/字段的名称。因此,表或列/字段在此命令执行后仍将是相同尺寸和类型。ADDtableconstraintdefinition子句用与CREATETABLE一样的语法向表中增加一个新的约束。
如果要改变表的属性,你必须是表的所有者.
注意
COLUMN关键字是多余的,可以省略.
如果"*"跟在一个表名后面,表示该命令要对该表和所有继承级别低于该表的表进行操作;缺省时,该属性(更改)不会增加到任何子表或修改任何子表的相关名称。当增加或修改一个上级表(译注:继承级别高的表)的属性时总是应该这样的。否则,象下面这样的在继承级上进行的查询
SELECTNewColumnFROMSuperClass*
将不能工作,因为子表会比上级表少一个属性。
在目前的实现里,新列/字段的缺省(值)和约束子句会被忽略。你可以随后用ALTERTABLE的SETDEFAULT形式设置缺省(值)。(你还不得不用UPDATE把已存在行更新为缺省值。)
在目前的实现里,只有FOREIGNKEY约束可以增加到表中.要创建或者删除一个唯一约束,可以创建一个唯一索引(参阅CREATEINDEX).要想增加check(检查)约束,你需要重建和重载该表,用的参数是CREATETABLE命令的其他参数.
要修改表的结构,你必须是表的所有人。不允许更改系统表结构的任何部分。PostgreSQL用户手册里有关于继承的更多信息.
请参考CREATETABLE部分获取更多有效参数的描述.
用法
向表中增加一个VARCHAR列:
ALTERTABLEdistributorsADDCOLUMNaddressVARCHAR(30);
对现存列改名:
ALTERTABLEdistributorsRENAMECOLUMNaddressTOcity;
对现存表改名:
ALTERTABLEdistributorsRENAMETOsuppliers;
向表中增加一个外键约束:
ALTERTABLEdistributorsADDCONSTRAINTdistfkFOREIGNKEY(address)REFERENCESaddresses(address)MATCHFULL
兼容性
SQL92ADDCOLUMN形式是兼容的,除了上面说的缺省(值)和约束外。ALTERCOLUMN形式是完全兼容的。
SQL92对ALTERTABLE声明了一些附加的Postgres目前还不直接支持的功能:
ALTERTABLEtableDROPCONSTRAINTconstraint{RESTRICT|CASCADE}
增加或删除表的约束(比如象检查约束,唯一约束或外键约束)。要创建或删除一个唯一约束,对应地创建或删除一个唯一索引,要修改其他类型的约束,你需要重建和重载该表,使用CREATETABLE命令的其他参数.
例如,删除表distributors的任何约束:
CREATETABLEtempASSELECT*FROMdistributors;
DROPTABLEdistributors;
CREATETABLEdistributorsASSELECT*FROMtemp;
DROPTABLEtemp;
ALTERTABLEtableDROP[COLUMN]column{RESTRICT|CASCADE}
前,要删除一个现存的列,表必须重新创建和重新装载:
CREATETABLEtempASSELECTdid,cityFROMdistributors;
DROPTABLEdistributors;
CREATETABLEdistributors(
didDECIMAL(3)DEFAULT1,
nameVARCHAR(40)NOTNULL,
);
INSERTINTOdistributorsSELECT*FROMtemp;
DROPTABLEtemp;
重命名列/字段和表名是PostgreSQL扩展。SQL92没有提供这些。