Sql 删除集合[DB].[audit].[tables]中的所有表数据

Sql 删除集合[DB].[audit].[tables]中的所有表数据,sql,sql-server-2005,Sql,Sql Server 2005,所以,我有一个大约有100个审计表的数据库,我想最好在1个sql查询中清空它们。数据库有两组表[audit]和[dbo]。我甚至不知道我应该如何称呼这些表格组,所以从谷歌搜索任何类型的结果都很困难 有什么建议吗?您可以找到具有特定架构名称的所有表,如: select name from sys.tables where schema_name(schema_id) = 'audit' 使用光标,您可以迭代这些表,并使用以下命令清空它们: 如果要删除这些表,请使用: set @query = N

所以,我有一个大约有100个审计表的数据库,我想最好在1个sql查询中清空它们。数据库有两组表[audit]和[dbo]。我甚至不知道我应该如何称呼这些表格组,所以从谷歌搜索任何类型的结果都很困难


有什么建议吗?

您可以找到具有特定架构名称的所有表,如:

select name from sys.tables where schema_name(schema_id) = 'audit'
使用光标,您可以迭代这些表,并使用以下命令清空它们:

如果要删除这些表,请使用:

set @query = N'drop table audit.' + @tablename

您可以找到具有特定架构名称的所有表,如:

select name from sys.tables where schema_name(schema_id) = 'audit'
使用光标,您可以迭代这些表,并使用以下命令清空它们:

如果要删除这些表,请使用:

set @query = N'drop table audit.' + @tablename

您还可以使用spmsforeachtable存储过程。 它允许您对当前数据库中的每个用户表执行查询

例如,以下命令将截断数据库中的所有用户表

Use YourDB
Exec sp_msforeachtable 'TRUNCATE TABLE ?'
这将截断指定数据库中属于审核模式的所有用户表

Use YourDB
Exec sp_msforeachtable @command1 = '
    if (Select Object_Schema_name(object_id(''?''))) = ''dbo''
    Begin 
        TRUNCATE TABLE ?
        print ''truncated '' + ''?'' 
    End
    '

这也是一篇博客文章,对这个存储过程有更多的用途

您还可以使用spmsforeachtable存储过程。 它允许您对当前数据库中的每个用户表执行查询

例如,以下命令将截断数据库中的所有用户表

Use YourDB
Exec sp_msforeachtable 'TRUNCATE TABLE ?'
这将截断指定数据库中属于审核模式的所有用户表

Use YourDB
Exec sp_msforeachtable @command1 = '
    if (Select Object_Schema_name(object_id(''?''))) = ''dbo''
    Begin 
        TRUNCATE TABLE ?
        print ''truncated '' + ''?'' 
    End
    '

这也是一篇博客文章,对这个存储过程有更多的用途

您可以打印出所有sql语句而不是执行它们,并在运行它们之前对它们进行可视化检查。您可以打印出所有sql语句而不是执行它们,并在运行它们之前对它们进行可视化检查。