Sql Server批量处理操作

对数据表的批量操作(增/删/查/改)

--确定批量操作对象
select 
    *,
    0 as 'Flag' 
into 
    #temp 
from 
    INFORMATION_SCHEMA.TABLES 
where 
    (table_name like '_del%' or table_name like '_stop%') 
    and table_type = 'BASE TABLE'
--定义实现参数
declare @sql NVARCHAR(100)
declare @Table_catalog NVARCHAR(100)
declare @Table_Schema NVARCHAR(100)
declare @Table_Name NVARCHAR(100)
declare @total int
declare @num int
select @total = count(1) from #temp
set @num = 1
--循环操作
while @num <= @total
    begin
        select 
            top 1  @Table_catalog = Table_catalog, 
            @Table_Schema = Table_Schema ,
            @Table_Name = Table_Name 
        from #temp where Flag = 0
        set @sql = 'drop table '+@Table_catalog+'.'+@Table_Schema+'.'+@Table_Name+';'
        update #temp set Flag = 1 where Table_Name = @Table_Name
        EXEC sp_executesql @sql
        set @num = @num +1
    end

查看DB下所有表的空间

if exists(select 1 from tempdb..sysobjects where id=object_id('tempdb..#tabName') and xtype='u')
drop table #tabName
go
create table #tabName(
tabname varchar(100),
rowsNum varchar(100),
reserved varchar(100),
data varchar(100),
index_size varchar(100),
unused_size varchar(100)
)
 
declare @name varchar(100)
declare cur cursor for
select name from sysobjects where xtype='u' order by name
open cur
fetch next from cur into @name
while @@fetch_status=0
begin
    insert into #tabName
    exec sp_spaceused @name
    --print @name
 
    fetch next from cur into @name
end
close cur
deallocate cur
 
select tabname as '表名',rowsNum as '表数据行数',reserved as '保留大小',data as '数据大小',index_size as '索引大小',unused_size as '未使用大小'
from #tabName
--where tabName not like 't%'
order by cast(rowsNum as int) desc

你可能感兴趣的:(Sql Server批量处理操作)