删除数百个表触发器和数百个存储过程的最快方法? [英] Fastest way to delete hundreds of table triggers and hundreds of stored procedures?

查看:78
本文介绍了删除数百个表触发器和数百个存储过程的最快方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何快速删除所有用户存储过程和所有表格触发器

单个数据库?


谢谢你是

解决方案

你可以在查询分析器中运行以下脚本。确定你在

正确的数据库。


USE MyDatabase

DECLARE @DropStatement nvarchar(4000)

DECLARE DropStatements CURSOR

LOCAL FAST_FORWARD READ_ONLY FOR

SELECT N''DROP''+

CASE xtype

当''P''那么'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' >
QUOTENAME(USER_NAME(uid))+

N''。''+

QUOTENAME(姓名)

来自sysobjects

WHERE xtype IN(''P'',''TR'')

OPEN DropStatements

WHILE 1 = 1

BEGIN

FETCH NEXT FROM DropStatements INTO @DropStatement

IF @@ FETCH_STATUS = -1 BREAK

EXEC(@DropStatement)

结束

关闭DropStatements

DEALLOCATE DropStatements


-

希望这会有所帮助。


Dan Guzman

SQL Server MVP


" serge" < SE **** @ nospam.ehmail.com>在消息中写道

新闻:VR ********************* @ news20.bellglobal.com ...

如何在单个数据库中快速删除所有用户存储过程和所有表格触发器?

谢谢


我今天会试试这个。


谢谢

你可以在查询分析器中运行以下脚本。确保你在正确的数据库中。

使用MyDatabase
DECLARE @DropStatement nvarchar(4000)
DECLARE DropStatements CURSOR
LOCAL FAST_FORWARD READ_ONLY FOR <选择N'DROP''+
CASE xtype
当'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '
结束+
QUOTENAME(USER_NAME(uid))+
N''。''+
QUOTENAME(姓名)
FROM sysobjects
WHERE xtype IN(''P'',''TR'')
OPEN DropStatements
WHILE 1 = 1
BEGIN
下一个来自DropStatements INTO @DropStatement
IF @ @FETCH_STATUS = -1 BREAK
EXEC(@DropStatement)
END
CLOSE DropStatements
DEALLOCATE DropStatements





" serge" < SE **** @ nospam.ehmail.com>在消息中写道

新闻:oE ********************* @ news20.bellglobal.com ...

今天我会试试。



因为我们发现美国银行因为他们的数据库不知何故而离线

在黑客攻击中丢失了他们的整个架构。 :-)

谢谢

您可以在查询分析器中运行以下脚本。确保你在正确的数据库中是


使用MyDatabase
DECLARE @DropStatement nvarchar(4000)
DECLARE DropStatements CURSOR
LOCAL FAST_FORWARD READ_ONLY FOR <选择N'DROP''+
CASE xtype
当'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '
结束+
QUOTENAME(USER_NAME(uid))+
N''。''+
QUOTENAME(姓名)
FROM sysobjects
WHERE xtype IN(''P'',''TR'')
OPEN DropStatements
WHILE 1 = 1
BEGIN
下一个来自DropStatements INTO @DropStatement
IF @ @FETCH_STATUS = -1 BREAK
EXEC(@DropStatement)
END
CLOSE DropStatements
DEALLOCATE DropStatements




How can i delete all user stored procedures and all table triggers very fast
in
a single database?

Thank you

解决方案

You can run the following script in Query Analyzer. Be certain you are in
the correct database.

USE MyDatabase
DECLARE @DropStatement nvarchar(4000)
DECLARE DropStatements CURSOR
LOCAL FAST_FORWARD READ_ONLY FOR
SELECT N''DROP '' +
CASE xtype
WHEN ''P'' THEN N''PROCEDURE ''
WHEN ''TR'' THEN N''TRIGGER ''
END +
QUOTENAME(USER_NAME(uid)) +
N''.'' +
QUOTENAME(name)
FROM sysobjects
WHERE xtype IN(''P'', ''TR'')
OPEN DropStatements
WHILE 1 = 1
BEGIN
FETCH NEXT FROM DropStatements INTO @DropStatement
IF @@FETCH_STATUS = -1 BREAK
EXEC(@DropStatement)
END
CLOSE DropStatements
DEALLOCATE DropStatements

--
Hope this helps.

Dan Guzman
SQL Server MVP

"serge" <se****@nospam.ehmail.com> wrote in message
news:VR*********************@news20.bellglobal.com ...

How can i delete all user stored procedures and all table triggers very
fast
in
a single database?

Thank you



I will try this today.

Thank you

You can run the following script in Query Analyzer. Be certain you are in
the correct database.

USE MyDatabase
DECLARE @DropStatement nvarchar(4000)
DECLARE DropStatements CURSOR
LOCAL FAST_FORWARD READ_ONLY FOR
SELECT N''DROP '' +
CASE xtype
WHEN ''P'' THEN N''PROCEDURE ''
WHEN ''TR'' THEN N''TRIGGER ''
END +
QUOTENAME(USER_NAME(uid)) +
N''.'' +
QUOTENAME(name)
FROM sysobjects
WHERE xtype IN(''P'', ''TR'')
OPEN DropStatements
WHILE 1 = 1
BEGIN
FETCH NEXT FROM DropStatements INTO @DropStatement
IF @@FETCH_STATUS = -1 BREAK
EXEC(@DropStatement)
END
CLOSE DropStatements
DEALLOCATE DropStatements




"serge" <se****@nospam.ehmail.com> wrote in message
news:oE*********************@news20.bellglobal.com ...

I will try this today.

As we discover Bank of America goes offline since their databases somehow
lost their entire schema in a hacker attack. :-)

Thank you

You can run the following script in Query Analyzer. Be certain you are in the correct database.

USE MyDatabase
DECLARE @DropStatement nvarchar(4000)
DECLARE DropStatements CURSOR
LOCAL FAST_FORWARD READ_ONLY FOR
SELECT N''DROP '' +
CASE xtype
WHEN ''P'' THEN N''PROCEDURE ''
WHEN ''TR'' THEN N''TRIGGER ''
END +
QUOTENAME(USER_NAME(uid)) +
N''.'' +
QUOTENAME(name)
FROM sysobjects
WHERE xtype IN(''P'', ''TR'')
OPEN DropStatements
WHILE 1 = 1
BEGIN
FETCH NEXT FROM DropStatements INTO @DropStatement
IF @@FETCH_STATUS = -1 BREAK
EXEC(@DropStatement)
END
CLOSE DropStatements
DEALLOCATE DropStatements




这篇关于删除数百个表触发器和数百个存储过程的最快方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆