用TSQL清除sql-server中数据库的模式?

用TSQL清除sql-server中数据库的模式?,第1张

用TSQL清除sql-server中数据库的模式?

想通了,我会分享我最终想出的东西。该脚本创建一个游标,以遍历数据库的INFORMATION_SCHEMA中的表。它对表进行3次传递,分别是外键,然后是主键,最后是表本身。它基于Raj
More的想法,并考虑了devio的评论。

-- Helper ProcedureCREATE PROC #DropConstraints  @tableSchema nvarchar(max),  @tableName nvarchar(max),  @constraintType nvarchar(20)ASBEGIN  DECLARE @cName nvarchar(max);  DECLARE constraint_cursor CURSOR FOR    SELECT CONSTRAINT_NAME     FROM INFORMATION_SCHEMA.TABLE_ConSTRAINTS    WHERe       CONSTRAINT_TYPE = @constraintType      AND TABLE_NAME = @tableName      AND TABLE_SCHEMA = @tableSchema  OPEN constraint_cursor  FETCH NEXT FROM constraint_cursor INTO @cName  WHILE @@FETCH_STATUS = 0  BEGIN    EXEC ('ALTER TABLE ' + @tableSchema + '.' + @tableName + ' DROp ConSTRAINT ' + @cName);    FETCH NEXT FROM constraint_cursor INTO @cName  END  CLOSE constraint_cursor  DEALLOCATE constraint_cursorENDGO-- DROp DATAbase TABLESBEGIN TRANSACTION  DECLARE @tableSchema varchar(max), @tableName varchar(max);  -- Setup Cursor for looping  DECLARE table_cursor SCROLL CURSOR FOR    SELECT TABLE_SCHEMA, TABLE_NAME     FROM INFORMATION_SCHEMA.TABLES  OPEN table_cursor  -- Drop Foreign Keys  FETCH NEXT FROM table_cursor INTO @tableSchema, @tableName  WHILE @@FETCH_STATUS = 0  BEGIN      EXEC #DropConstraints @tableSchema, @tableName, 'FOREIGN KEY';    FETCH NEXT FROM table_cursor INTO @tableSchema, @tableName  END  -- Drop Primary Keys  FETCH FIRST FROM table_cursor INTO @tableSchema, @tableName  WHILE @@FETCH_STATUS = 0  BEGIN    EXEC #DropConstraints @tableSchema, @tableName, 'PRIMARY KEY';    FETCH NEXT FROM table_cursor INTO @tableSchema, @tableName  END  -- Drop Tables  FETCH FIRST FROM table_cursor INTO @tableSchema, @tableName  WHILE @@FETCH_STATUS = 0  BEGIN    EXEC ('DROp TABLE ' + @tableSchema + '.' + @tableName);    FETCH NEXT FROM table_cursor INTO @tableSchema, @tableName  END  -- Cleanup  CLOSE table_cursor  DEALLOCATE table_cursorCOMMIT TRANSACTIONGO


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5017294.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存