欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQLServer之删除数据库架构

程序员文章站 2022-05-17 16:39:05
删除数据库架构注意事项 要删除的架构不能包含任何对象。 如果架构包含对象,则 DROP 语句将失败。 可以在 sys.schemas 目录视图中查看有关架构的信息。 要求对架构具有 CONTROL 权限,或者对数据库具有 ALTER ANY SCHEMA 权限。 使用SSMS数据库管理工具删除数据库 ......

删除数据库架构注意事项

要删除的架构不能包含任何对象。 如果架构包含对象,则 drop 语句将失败。

可以在 sys.schemas 目录视图中查看有关架构的信息。

要求对架构具有 control 权限,或者对数据库具有 alter any schema 权限。

使用ssms数据库管理工具删除数据库架构

1、连接服务器-》展开数据库文件夹-》选择数据库并展开-》展开安全性文件夹-》展开架构文件夹-》选择要删除的数据库架构右键点击-》选择删除。

SQLServer之删除数据库架构

2、在删除对象弹出框-》点击确定。

SQLServer之删除数据库架构

3、查看删除结果(不需要刷新架构文件夹)。

SQLServer之删除数据库架构

使用t-sql脚本删除数据库架构

语法

--声明数据库引用
use database_name;
go
 
if exists(select * from sys.schemas where name=schema_name)
begin

--删除数据库架构注释
exec sys.sp_dropextendedproperty @name=n'architecturename',@level0type=n'schema',@level0name=n'schema_name';

    --删除架构下的所有表
    if exists(select * from sys.tables where name=schema_tablename)
		drop table schema_name.schema_tablename;

--删除数据库架构
drop schema schema_name; 

end
go

语法解析

--语法解析
--database_name
--当前架构所在数据库名称。

--schema_name
--架构在数据库中所使用的名称。

--architecturename
--架构扩展属性名称。

--schema_tablename
--架构下存在的类型(本例以数据表为例)。

--schema_tablename
--要删除的架构下的表名

--if exists
--适用范围:sql server(sql server 2016 (13.x)到当前版本)。
--只有在架构已存在时才对其进行有条件地删除。

示例

--声明数据库引用
use [testss];
go
 
if exists(select * from sys.schemas where name='testarchitecture')
begin

--删除数据库架构注释
exec sys.sp_dropextendedproperty @name=n'testcrituer' , @level0type=n'schema',@level0name=n'testarchitecture';

    --删除架构下的所有表
    if exists(select * from sys.tables where name='schema_table1')
    drop table [testarchitecture].[schema_table1];

--删除数据库架构
drop schema testarchitecture; 

end
go

示例结果:使用t-sql脚本删除数据库架构需要刷新数据库架构文件夹查看删除结果。

SQLServer之删除数据库架构