SLQ连接数据库的具体方法

有谁能解释下.... 有谁能解释下. 展开
 我来答
匿名用户
2013-12-04
展开全部
首先,你要这样来备份数据库:

SQL="backup database 数据库名 to disk='"&Server.MapPath("backup")&"\"&"backuptext.dat"&"' with INIT"

这样你的备份将覆盖原来的同名备份(如果有的话),否则备份将附加在原来的备份上,不仅文件越来越大,日后还原时还会发生各种问题。

其次,数据库在有用户连接时是不能恢复的。

所以你要备份的话,不能链接到你的数据库,要链接到master数据库,使用:

cnn.open "driver={SQL Server};Server=服务器名;uid=sa;pwd=;database=master"

再次,仅仅你不链接到数据库,但不能保证没有别人链接数据库,所以还要断开所有用户到数据库的连接,才能开始还原。可以使用下列语句来进行:

declare backup_cursor cursor global for select 'kill '+rtrim(spid) from master.dbo.sysprocesses where dbid=db_id('数据库名') exec sp_msforeach_worker '?'

所以,你的程序要改成这样:

1、备份
<%
SQL="backup database 数据库名 to disk='"&Server.MapPath("backup")&"\"&"backuptext.dat"&"' with INIT"
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
cnn.close
set cnn=nothing
%>

2、恢复
<%
aSQL="declare backup_cursor cursor global for select 'kill '+rtrim(spid) from master.dbo.sysprocesses where dbid=db_id('数据库名') exec sp_msforeach_worker '?'"

bSQL="Restore database 数据库名 from disk='"&Server.MapPath("backup")&"\"&"backuptext.dat"&"'"

set cnn=Server.createobject("adodb.connection")
cnn.open "driver={SQL Server};Server=服务器名;uid=sa;pwd=;database=master"
cnn.execute aSQL
cnn.execute bSQL
on error resume next
if err<>0 then
response.write "错误:"&err.Descripting
else
response.write "数据恢复成功!"
end if
cnn.close
set cnn=nothing
%>
参考资料:http://topic.csdn.net/t/20050529/16/4043909.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式