SP里调用SP,导致Tempdb的LOG文件疯狂的往上涨:
具体: SP1 是主SP, 里面调用了一个 SP2, 而 SP2里又调用了一个 SQL的 Function - FN1, (在SP1 和 SP2 里调用了一些 Temp Table, 但是在SP的最后都已经 Drop 了 temp Table),可是在运行 SP1 的时候,发现 Tempdb的LOG文件疯狂的往上涨,请问大家有没有知道是什么问题的, 急啊!!! 被客户追。 

解决方案 »

  1.   

    tempdb的日志模式本来就应该设为简单,他的log是没有价值的
      

  2.   

    tempdb的日志模式本来就应该设为简单 ?
    不太明白哦 ?? 
      

  3.   

    tempdb的日志模式本来就应该设为简单   ? 
    不太明白哦   ??   
    ----------------
    就是不要让log记录那么信息,自然就不会疯长了.另外可以适当的减少一些临时表,用表变量.
      

  4.   

    临时表我在嵌套的那个SP最后都已经Drop掉了哦
    表变量 ?? 
      

  5.   

    tempdb的故障还原模式 默认就是简单你这里既然这样就尽量减少使用临时表,用表变量吧
      

  6.   


    而且Drop前最好先执行一下truncate
      

  7.   


    少量使用临时表,或应用频率低,drop table #table_tmp即可
    如果循环频繁使用,就先truncate table #table_tmp下,会有好处
      

  8.   

    declare @t table(col1 int ,...)
      

  9.   

    SP1 循环调用 SP2, 如果 SP2里的临时表改为表变量用的话, 每次调用完 SP2, SP2 里表变量的内容会自动清除吗,对应的内存资源会被释放吗??    
      

  10.   

    我现在查到原因了,是 SP1里用 临时表调用 SP2, 才产生了很大的LOG文件,
    insert into #tmp_ds (va, .........) exec sp2 argumet1 = 'sd',... 
    insert into #tmp_ewe (va, .........) exec sp3 argumet1 = 'dwe',... 
    像 #tmp_ds / #tmp_ewe 这两个临时表也不可以换成 表变量用, 还有请问各位大侠还有其他好的方法解决这个问题呢?
    (#tmp_ds / #tmp_ewe 这两个 临时表在 SP1里还有调用)