刪除數據庫架構注意事項
要刪除的架構不能包含任何對象。 如果架構包含對象,則 DROP 語句將失敗。
可以在 sys.schemas 目錄視圖中查看有關架構的信息。
要求對架構具有 CONTROL 權限,或者對數據庫具有 ALTER ANY SCHEMA 權限。
使用SSMS數據庫管理工具刪除數據庫架構
1、連接服務器-》展開數據庫文件夾-》選擇數據庫並展開-》展開安全性文件夾-》展開架構文件夾-》選擇要刪除的數據庫架構右鍵點擊-》選擇刪除。
2、在刪除對象彈出框-》點擊確定。
3、查看刪除結果(不需要刷新架構文件夾)。
使用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腳本刪除數據庫架構需要刷新數據庫架構文件夾查看刪除結果。