SQL:数据库中已经有一个名为X的对象

时间:2015-07-15 16:08:35

标签: sql debugging

到目前为止,这是我的整个代码

select Region
    into #C
    from ResearchDB.dbo.tC
    where Tier=0

但我已经收到错误:

There is already an object named '#C' in the database.

现在,如果我将该行评论为“#C”,那么它的效果非常好。怎么回事?

1 个答案:

答案 0 :(得分:0)

我使用两个选项:1(快速但临时) - 只需点击SSMS中的更改连接按钮,然后重新连接而不更改任何细节。这将重新建立连接,在此过程中删除临时表。不要忘记重新选择数据库,因为它将默认为Master或任何默认数据库设置为。 2.我有一个SP,只删除当前会话的所有临时表,并添加此行 EXEC dbf_DropTempTables 在我使用的每段代码的顶部创建临时表,我需要在故障排除时多次重新运行。以下是SP的参考:

`CREATE PROCEDURE dbf_DropTempTables
AS
-- drop all #temp tables for current session
begin
DECLARE @sql VARCHAR(60),
    @name VARCHAR(60)
DECLARE dtt CURSOR
    FOR SELECT  SUBSTRING(t.name, 1, CHARINDEX('___', t.name) - 1)
        FROM    tempdb.sys.tables AS t
        WHERE   t.name LIKE '#%[_][_][_]%'
                AND t.[object_id] = OBJECT_ID('tempdb..' + SUBSTRING(t.name, 1, CHARINDEX('___', t.name) - 1))
open dtt
fetch next from dtt into @name
while @@fetch_status <> -1
    BEGIN
        SELECT  @sql = 'DROP TABLE ' + @name
                EXEC ( @sql )
                fetch next from dtt into @name
    END
CLOSE dtt
deallocate dtt
END`