如何快速删除DiscuzNT论坛数据表和存储过程

 公司的一个客户要求把DiscuzNT从现有网站删除(数据和页面),页面简单,FTP连接上去删除就可以了,数据表的删除就有点纠结了:我的DNT论坛是和现有的网站系统共用的一个数据库。本来想一个一个删除的,打开数据库一看那么多的表和存储过程,就放弃这种笨办法了,于是决定用SQL语句来搞定。代码如下:

-----------------------------删除数据表---------------------

DECLARE @au_lname VARCHAR(40),@SQLString NVARCHAR(500)

DECLARE tb CURSOR FOR
SELECT name FROM sysobjects WHERE xtype='U'  and name like 'dnt%'

OPEN tb

-- Perform the FIRST FETCH.
FETCH NEXT FROM tb INTO @au_lname

-- CHECK @@FETCH_STATUS TO see IF there ARE ANY more ROWS TO FETCH.
WHILE @@FETCH_STATUS = 0
BEGIN
-- This IS executed AS long AS the previous FETCH succeeds.
FETCH NEXT FROM tb INTO @au_lname

SET @SQLString='DROP TABLE '+ @au_lname
EXEC sp_executesql @SQLString
--DROP TABLE @au_lname


END

CLOSE tb
DEALLOCATE tb

GO

-----------------------------删除存储过程---------------------
DECLARE @au_lname VARCHAR(40),@SQLString NVARCHAR(500)

DECLARE tb CURSOR FOR
SELECT name FROM sysobjects WHERE xtype='p'  and name like 'dnt%'

OPEN tb

-- Perform the FIRST FETCH.
FETCH NEXT FROM tb INTO @au_lname

-- CHECK @@FETCH_STATUS TO see IF there ARE ANY more ROWS TO FETCH.
WHILE @@FETCH_STATUS = 0
BEGIN
-- This IS executed AS long AS the previous FETCH succeeds.
FETCH NEXT FROM tb INTO @au_lname

SET @SQLString='DROP PROCEDURE '+ @au_lname
EXEC sp_executesql @SQLString
--DROP TABLE @au_lname


END

CLOSE tb
DEALLOCATE tb

GO

posted @ 2011-03-11 15:11  知行派  阅读(354)  评论(0编辑  收藏  举报