HOWTO:大量刪除預存程序和表

來源:互聯網
上載者:User
1.刪除預存程序Code
BEGIN TRANSACTION

DECLARE drop_p_cursor CURSOR FOR
    SELECT 'DROP PROCEDURE ' + [Name] FROM sysobjects WHERE xtype = 'p' AND category = 0

OPEN drop_p_cursor

DECLARE @sql sysname
FETCH NEXT FROM drop_p_cursor INTO @sql
WHILE(@@FETCH_STATUS = 0)
BEGIN
    EXEC(@sql)
    FETCH NEXT FROM drop_p_cursor INTO @sql

2. 刪除表
注意:刪除表的時候先刪除約束。NOCHECK在此例中不起作用,必須用DROP。

Code
BEGIN TRANSACTION
DECLARE @sql sysname

DECLARE drop_u_cursor CURSOR FOR
    SELECT 'DROP TABLE ' + [Name] FROM sysobjects WHERE xtype = 'u' AND category = 0
DECLARE forbiden_f_cursor CURSOR FOR
    SELECT 'ALTER TABLE ' + tbl.Name + ' DROP CONSTRAINT ' + cst.Name
    FROM sysobjects tbl, sysobjects cst WHERE cst.xtype = 'f' AND cst.parent_obj = tbl.id
   
OPEN forbiden_f_cursor
FETCH NEXT FROM forbiden_f_cursor INTO @sql
WHILE(@@FETCH_STATUS = 0)
BEGIN
    PRINT @sql
    EXEC(@sql)
    FETCH NEXT FROM forbiden_f_cursor INTO @sql
END
CLOSE forbiden_f_cursor
DEALLOCATE forbiden_f_cursor

OPEN drop_u_cursor
FETCH NEXT FROM drop_u_cursor INTO @sql
WHILE(@@FETCH_STATUS = 0)
BEGIN
    PRINT @sql
    EXEC(@sql)
    FETCH NEXT FROM drop_u_cursor INTO @sql   
END

CLOSE drop_u_cursor
DEALLOCATE drop_u_cursor

GO
IF @@ERROR <> 0
BEGIN
    ROLLBACK TRANSACTION   
    RETURN
END
ELSE
 COMMIT TRANSACTION 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.