gpt4 book ai didi

sql - 删除 SQL Server 数据库中属于不同架构的所有对象?

转载 作者:行者123 更新时间:2023-12-02 18:56:19 26 4
gpt4 key购买 nike

有没有办法删除数据库中属于两个不同模式的所有对象?

我之前一直使用一种模式,因此我使用以下方式查询所有对象:

Select * From sysobjects Where type=...

然后扔掉我使用的所有东西

Drop Table ...

现在我已经引入了另一个架构,每次我尝试删除它时都会说我没有权限或对象不存在。但是,如果我在对象前面添加 [schema.object] ,它就可以工作。我不知道如何自动执行此操作,因为我不知道哪些对象,或者该对象属于两个模式中的哪一个。有人知道如何删除数据库中的所有对象,无论它属于哪个模式?

(使用的用户是两个模式的所有者,数据库中的对象是由该用户以及删除对象的用户创建的 - 如果我使用 IE 前缀,则该操作有效。 Drop Table Schema1 .blah)

最佳答案

使用sys.objectsOBJECT_SCHEMA_NAME 结合构建您的DROP TABLE语句,检查,然后复制/粘贴来执行:

SELECT 'DROP TABLE ' +
QUOTENAME(OBJECT_SCHEMA_NAME(object_id)) + '.' +
QUOTENAME(name) + ';'
FROM sys.objects
WHERE type_desc = 'USER_TABLE';

或者使用sys.tables以避免需要 type_desc 过滤器:

SELECT 'DROP TABLE ' +
QUOTENAME(OBJECT_SCHEMA_NAME(object_id)) + '.' +
QUOTENAME(name) + ';'
FROM sys.tables;

SQL Fiddle

关于sql - 删除 SQL Server 数据库中属于不同架构的所有对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18668680/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com