zoukankan      html  css  js  c++  java
  • 清空数据库错误:因为该表正由 FOREIGN KEY 约束引用 解决办法

    如下解决了五个问题 
    1. 清空数据 
    2. 有外键也可以, 因为是逆向删除, 从最后一张表删除. 且使用的是delete, 因为truncate不能对有外键的表 
    3. 种子问题, 如果表存在种子重设为0, 如不存在就不操作 
    4. 加了事务, 中间报错, 有后悔机会 
    5. 截断日志功能, 因为使用delete, 删除后日志文件会增大, 可以不使用

    if( object_id('pr_DataClear') is not null )  
        drop procedure pr_DataClear  
    go  
    create procedure pr_DataClear  
    as  
    begin transaction  
        declare @cTblName varchar(128)  
        declare cur_Clear cursor for select rtrim(name) from sysobjects where type = 'U' order by crdate desc  
        open cur_Clear  
        declare @cSQL varchar(255)  
        fetch next from cur_Clear into @cTblName  
        while( @@fetch_status = 0)  
        begin  
            set @cSQL = 'delete from ' + @cTblName  
            print @cSQL  
            exec( @cSQL )  
            if( ident_seed(@cTblName) is not null )  
            begin  
                dbcc checkident( @cTblName, reseed, 0 )  
                print '有种子且成功重置为1'  
            end  
            fetch next from cur_Clear into @cTblName  
        end  
        close cur_Clear  
        deallocate cur_Clear  
    commit  
    go  
    -- 清空所有表数据  
    exec pr_DataClear  
    -- 截断日志  
    backup log LZ的数据库 with no_log  
    dbcc shrinkdatabase( LZ的数据库 )  
    dbcc updateusage( LZ的数据库 )  
    -- 查看表空间(概数)  
    select object_name(id) as 表名, (rtrim(8*reserved/1024) + 'MB') as 总量, (rtrim(8*dpages/1024) + 'MB') as 已使用,  
        (rtrim(8*(reserved-dpages)/1024) + 'MB') as 未使用, (rtrim(8*dpages/1024-rows/1024*minlen/1024) + 'MB' ) as 空隙  
        from sysindexes  
        where indid=1  
        order by reserved desc  

    原文出处:http://topic.csdn.net/u/20090816/17/EE0FA21E-8616-4236-A9CB-8C5A3D45C9D9.html 中45楼

  • 相关阅读:
    centos6升级内核
    centos7启动盘制作
    sed匹配字符串并将匹配行的后几行注释
    cmd下调用xshell登录linux服务器
    centos清除历史命令
    yum错误Cannot retrieve metalink for repository: epel/x86_6
    ansible-playbook
    jdk升级到1.8
    shell瞎记录
    shell 循环
  • 原文地址:https://www.cnblogs.com/jearay/p/5227714.html
Copyright © 2011-2022 走看看