错误:已经有一个名为' TableName'在数据库中

时间:2015-01-16 20:28:06

标签: sql sql-server-2008

我收到错误消息,说数据库中已存在名为“Bank_Test”的对象。我使用了Drop tableDrop procedure函数,但仍然给出了相同的错误消息。我尝试更改名称但仍然提供相同的错误消息。请帮忙!

USE [Test_1]
GO
Create Procedure [dbo].[Bank_Test]
AS
SELECT DISTINCT a.PatientAccountID 'AccountId'
        ,a.PatientLocationName 'Location’
        ,b.OrderAbbreviation 'OrderAbbreviation'
        ,b.OrderId 'OrderId'
        ,b.CreationTime 'CreationTime'

INTO Test_1.dbo.Bank_Test 

FROM dbo.PatientVisit a with (nolock)
INNER JOIN dbo.Order b with (nolock)
ON a.PatientVisit_oid=b.PatientVisit_oid
WHERE a.VisitTypeCode= 'IP'
AND a.LastName != 'Testdummy'
ORDER BY a.PatientAccountID

错误讯息:

  

Msg 2714,Level 16,State 3,Procedure BloodTest,Line 3
有   已经是数据库中名为“BloodTest”的对象。

3 个答案:

答案 0 :(得分:1)

问题来自于您的存储过程在运行名为Bank_Test时尝试创建表的事实。由于您已经有一个名为Bank_Test的proc,它会因您提供的错误而失败。

只是一个猜测,但我打赌你想要将记录插入表中,而不是SELECT ... INTO。 "选择进入"每次都会创建一个新表,这可能不是你想要的。您可能希望将记录添加到现有表中,类似这样的

INSERT INTO your_table (columns)
SELECT things_go_here

答案 1 :(得分:0)

首先尝试删除该项:Drop Procedure

上次运行该过程时,创建了该对象,然后该过程失败。

USE [Test_1]
GO
Drop Procedure [dbo].[Bank_Test] -- call this first
Create Procedure [dbo].[Bank_Test]
AS
SELECT DISTINCT a.PatientAccountID 'AccountId'
        ,a.PatientLocationName 'Location’
        ,b.OrderAbbreviation 'OrderAbbreviation'
        ,b.OrderId 'OrderId'
        ,b.CreationTime 'CreationTime'

INTO Test_1.dbo.Bank_Test 

FROM dbo.PatientVisit a with (nolock)
INNER JOIN dbo.Order b with (nolock)
ON a.PatientVisit_oid=b.PatientVisit_oid
WHERE a.VisitTypeCode= 'IP'
AND a.LastName != 'Testdummy'
ORDER BY a.PatientAccountID

最有可能的是,该程序仍然存在(至少在垃圾收集器接受之前)。

答案 2 :(得分:0)

由于您的表处于相同的数据库状态,因此INTO Bank_Test而不是INTO Test_1.dbo.Bank_Test ...我相信DBMS认为您正在尝试插入存储过程。我只使用dbo.whatever引用另一个数据库中的表。

此外,在您的存储过程中添加一个动词,因为它是"做某事"

即。 CreateBankTest