删除tsql中没有行的表

Mon*_*éhi 3 t-sql stored-procedures sql-server-2008

我写了这段代码:

SELECT o.name FROM sysobjects o,sysindexes i WHERE ( o.type = 'U'
      and o.id = i.id
      and i.indid in (0,1)
      and i.rows = 0 )
      order by o.name
GO
Run Code Online (Sandbox Code Playgroud)

你能帮我把那些空桌子放下吗?

Sub*_*nch 6

谨慎使用!

这将为您查询中的所有表生成一个删除脚本。当您打印变量时@sql,由于PRINT语句中的限制,您将只能看到其原始代码的前 4000 个字符。但是当你使用时EXEC(@sql),整个代码都会被执行。

DECLARE @sql NVARCHAR(MAX)
SET @sql  = ''
SELECT @sql = @sql + 'IF OBJECT_ID(''' + o.name + ''') IS NOT NULL DROP TABLE ' + o.name + CHAR(10)
FROM sysobjects o,sysindexes i 
WHERE 
(
    o.type = 'U'
    and o.id = i.id
    and i.indid in (0,1)
    and i.rows = 0
)order by o.name
PRINT @sql
Run Code Online (Sandbox Code Playgroud)