SQL中刪除所有約束、表、視圖等指令碼

來源:互聯網
上載者:User

--刪除所有約束、表、視圖等SQL指令碼

--###############################################
--刪除所有外鍵約束
--###############################################

 代碼如下 複製代碼
DECLARE @SQL VARCHAR(99)
DECLARE CUR_CONSTRAINT CURSOR LOCAL FOR
 SELECT
  'ALTER TABLE '+
  CASE WHEN O.schema_id IS NOT NULL THEN (SELECT NAME+'.' FROM sys.schemas WHERE schema_id = O.schema_id) ELSE '' END
  +OBJECT_NAME(parent_object_id)+' DROP CONSTRAINT '+OBJECT_NAME(object_id)
 FROM sys.objects AS O JOIN sys.schemas AS S on O.schema_id=S.schema_id
 WHERE O.type IN('C','D','F')
OPEN CUR_CONSTRAINT
FETCH CUR_CONSTRAINT INTO @SQL
WHILE @@FETCH_STATUS =0
 BEGIN
  EXEC(@SQL)
  FETCH CUR_CONSTRAINT INTO @SQL
 END
CLOSE CUR_CONSTRAINT
DEALLOCATE CUR_CONSTRAINT

--###############################################
--刪除所有視圖(預存程序、函數等用同樣的方法)
--###############################################
--DECLARE @SQL VARCHAR(99)

 代碼如下 複製代碼
DECLARE CUR_VIEW CURSOR LOCAL FOR
 SELECT
  'IF OBJECT_ID('''+
  CASE WHEN O.schema_id IS NOT NULL THEN (SELECT NAME+'.' FROM sys.schemas WHERE schema_id = O.schema_id) ELSE '' END
  +OBJECT_NAME(object_id)
  +''') IS NOT NULL'+
  +' DROP VIEW '+
  CASE WHEN O.schema_id IS NOT NULL THEN (SELECT NAME+'.' FROM sys.schemas WHERE schema_id = O.schema_id) ELSE '' END
  +OBJECT_NAME(object_id)
 FROM sys.objects AS O JOIN sys.schemas AS S on O.schema_id=S.schema_id
 WHERE O.type IN('V')
OPEN CUR_VIEW
FETCH CUR_VIEW INTO @SQL
WHILE @@FETCH_STATUS =0
 BEGIN
  EXEC(@SQL)
  FETCH CUR_VIEW INTO @SQL
 END
CLOSE CUR_VIEW
DEALLOCATE CUR_VIEW

--###############################################
-- 刪除所有表
--###############################################

 代碼如下 複製代碼

--DECLARE @SQL VARCHAR(99)
DECLARE CUR_TABLE CURSOR LOCAL FOR
SELECT
 'DROP TABLE '+
  CASE WHEN O.schema_id IS NOT NULL THEN (SELECT NAME+'.' FROM sys.schemas WHERE schema_id = O.schema_id) ELSE '' END
  +O.name
FROM sys.objects AS O JOIN sys.schemas AS S on O.schema_id=S.schema_id
WHERE O.type='U'
OPEN CUR_TABLE
FETCH CUR_TABLE INTO @SQL
WHILE @@FETCH_STATUS =0
 BEGIN
  EXEC(@SQL)
  FETCH CUR_TABLE INTO @SQL
 END
CLOSE CUR_TABLE
DEALLOCATE CUR_TABLE

 

--###############################################

再提供一下SQL Server裡的OBJECT_ID函數object_type參數類型

--###############################################

OBJECT_ID(object_name,object_type)
物件類型:
AF =彙總函式(CLR)
C = CHECK約束
D = DEFAULT(約束或獨立)
F = FOREIGN KEY約束
FN = SQL純量涵式
FS =大會(CLR)的純量涵式
FT =程式集(CLR)資料表值函式
IF = SQL內聯資料表值函式
IT =內部表
P = SQL預存程序
電腦大會(CLR)預存程序
PG =計劃指南
PK = PRIMARY KEY約束
R =規則(舊式,單機)
RF =複製過濾過程
S =系統基表
SN =同義字
SQ =服務隊列
TA =組件(CLR)DML觸發器
TF = SQL資料表值函式
TR = SQL DML觸發器
TT =表類型
U =表(使用者定義)
UQ = UNIQUE約束
V =視圖
X =擴充預存程序

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.