【问题标题】:SQL Server global temp table - Invalid object errorSQL Server 全局临时表 - 无效对象错误
【发布时间】:2016-04-25 01:55:17
【问题描述】:
SELECT  @SqlCmdEnd =',Member_Cd as x_Member_Cd,
            LOD.Val_Seq as x_GroupSort,
            vs.Member_RCID  as x_Org_Key,
            LOD.Val_Cd  as x_Level_Text,
            Type_RCID   as x_Type_RCID  
        into ##VS_Wide'+@l_Random+'

我们在使用全局临时表的存储过程中有一个动态查询,如上所示。它在正常情况下工作正常,但在加载、并发测试期间我们收到错误:

无效对象##VS_Wide12345

12345 是使用以下脚本生成的随机数。

那么这个错误的可能原因是什么?对此的任何帮助将不胜感激。

select @l_Random = replace(right(rand(), 5), '.', '')

【问题讨论】:

    标签: sql-server dynamic


    【解决方案1】:

    试试这个 -

    DECLARE @l_Random CHAR(32) = REPLACE(NEWID(), '-', '')
    
    DECLARE @SQL NVARCHAR(MAX)
    SET @SQL = '
    IF OBJECT_ID(''##VS_Wide' + @l_Random + ''') IS NOT NULL
        DROP TABLE ##VS_Wide' + @l_Random + '
    
    SELECT 1 AS a
    INTO ##VS_Wide' + @l_Random + '
    
    SELECT * FROM ##VS_Wide' + @l_Random + '
    '
    
    PRINT @SQL
    EXEC sys.sp_executesql @SQL
    

    输出 -

    IF OBJECT_ID('##VS_WideC016ADF003FD4254B6BBFB5053E9C956') IS NOT NULL
        DROP TABLE ##VS_WideC016ADF003FD4254B6BBFB5053E9C956
    
    SELECT 1 AS a
    INTO ##VS_WideC016ADF003FD4254B6BBFB5053E9C956
    
    SELECT * FROM ##VS_WideC016ADF003FD4254B6BBFB5053E9C956
    

    【讨论】:

      猜你喜欢
      • 2014-09-01
      • 2012-02-13
      • 2011-07-10
      • 1970-01-01
      • 2010-10-15
      • 2010-11-18
      • 1970-01-01
      • 2019-12-09
      • 1970-01-01
      相关资源
      最近更新 更多