删除SQL Server模式

4

我知道你不能简单地删除一个SQL服务器模式,你必须首先删除其中包含的所有对象。我找到了这个存储过程来执行删除所有对象和模式本身的任务。

真的没有更简单的方法来删除模式吗?理想情况下,我希望找到一种不使用存储过程的方法来实现这一点。

此外,如果提供的模式名称不存在,看起来存储过程会导致错误。我希望它只是什么都不做。我猜这只是在脚本顶部放置这个伪代码的问题。

IF @SchemaName NOT EXISTS
    QUIT

有人能把这个转换成SQL Server可以理解的语言吗?


我不是一个真正的键盘,所以回答简短。我认为你可以将对象转移到不同的模式,然后删除该模式。 - Ash
4个回答

4
脚本顶部的以下内容应该有所帮助:
IF SCHEMA_ID(@SchemaName) IS NULL 
    RETURN

SCHEMA_ID返回与模式名称关联的模式ID,RETURN无条件地退出查询或过程。


2

在删除模式之前,您必须删除所有对象,或将所有对象迁移到新模式。两者都没有“通配符”选项。

要在任何进一步处理之前退出存储过程...

IF SCHEMA_ID(@SchemaName) IS NULL
    RETURN

0
if exists(select * from sys.schemas where name = @SchemaName)
begin
    -- Your work
end 

0

在删除模式之前,必须删除所有对象。 要检查模式是否存在:

IF NOT EXISTS (select SCHEMA_NAME from INFORMATION_SCHEMA.SCHEMATA WHERE CATALOG_NAME='YOUR DB NAME HERE' and SCHEMA_NAME=@SchemaName)
BEGIN
     -- Do some processing...
     return
END

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接