Sql server 2008 r2 在不使用游标的情况下批量删除表

Sql server 2008 r2 在不使用游标的情况下批量删除表,sql-server-2008-r2,Sql Server 2008 R2,我想删除来自此查询的所有表。可以有多个表 此查询将返回我的后台数据库的表名 SELECT name FROM sys.objects WHERE create_date < GETDATE()-7 如何在不使用游标的情况下删除表?假设您希望获取所有比游标早7天或更长时间的表的名称 SELECT name FROM sys.tables WHERE DATEDIFF(day,create_date,GETDATE()) >= 7 sys.objects不适用于其表。对于其对象,您应

我想删除来自此查询的所有表。可以有多个表

此查询将返回我的后台数据库的表名

SELECT name FROM sys.objects WHERE create_date < GETDATE()-7

如何在不使用游标的情况下删除表?

假设您希望获取所有比游标早7天或更长时间的表的名称

SELECT name FROM sys.tables WHERE DATEDIFF(day,create_date,GETDATE()) >= 7
sys.objects不适用于其表。对于其对象,您应使用sys.tables

和无光标删除

使用风险自负

BEGIN TRAN
DECLARE @DropTables NVARCHAR(MAX)
SET @DropTables = ''

SELECT @DropTables = @DropTables + 
    'DROP TABLE '+name+CHAR(10)
FROM sys.tables 
WHERE DATEDIFF(day,create_date,GETDATE()) >= 7
EXEC(@DropTables)
ROLLBACK