我试图使用以下脚本删除数据库中的所有表:
WHILE EXISTS(SELECT * FROM sys.tables where is_ms_shipped = 0)
BEGIN
EXEC sp_MSforeachtable 'DROP TABLE ?'
END
由于外键限制,我收到很多错误。但这很好,无论如何都要丢桌。我想用以下脚本删除错误消息。
WHILE EXISTS(SELECT * FROM sys.tables where is_ms_shipped = 0)
BEGIN
BEGIN TRY
EXEC sp_MSforeachtable 'DROP TABLE ?';
END TRY
BEGIN CATCH
END CATCH
END
这个脚本只是在尝试删除第一个表时永远运行。 我做错了什么?
答案 0 :(得分:0)
我不确定您的查询有什么问题,但是我使用这样的游标删除了表:
DECLARE @name as varchar(100)
DECLARE MyCursor CURSOR FAST_FORWARD FOR
SELECT name FROM sys.tables
OPEN MyCursor
FETCH NEXT FROM MyCursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
execute('drop table ' +@name)
FETCH NEXT FROM MyCursor INTO @name
END
CLOSE MyCursor
DEALLOCATE MyCursor