如何在SQL Server中修复“数据库中已经存在一个名为''的对象”的错误

4

我创建了这个表格,但由于出现错误,无法手动输入数据。

    USE [Butterfly]
    GO

    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    CREATE TABLE [dbo].[VM_Vehicles](
        [VehicleID] [nvarchar](100) NOT NULL,
        [VehicleType] [nvarchar](100) NULL,
        [RegistrationNo] [nvarchar](100) NULL,
        [PurchaseDate] [date] NULL,
        [Make] [nvarchar](100) NULL,
        [Model] [nvarchar](100) NULL,
        [ChassisNo] [nvarchar](100) NULL,
        [EngineNo] [nvarchar](100) NULL,
        [EngineCapacity] [nvarchar](100) NULL,
        [YearofManufacture] [nvarchar](100) NULL,
        [SeatingCapacity] [nvarchar](100) NULL,
        [ContactName] [nvarchar](100) NULL,
        [Phone] [nvarchar](50) NULL,
        [VendorID] [int] NOT NULL,
        [Picture] [image] NULL,
        [VoucherNo] [int] NOT NULL,

     CONSTRAINT [PK_VM_Vehicles1] PRIMARY KEY CLUSTERED 
    (
        [VehicleID] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

    GO

我尝试使用这段代码来查找我的数据库中出现的问题,但迄今为止没有找到错误。

IF object_id("tempdb..#VM_Vehicles") is not null
DROP TABLE #VM_Vehicles
CREATE TABLE #VM_Vehicles (vehicleID nvarchar(100), ...);

我已经尝试更改约束名和表名,但这也没有给我答案。


关于如何仅在表不存在时创建一个表,请阅读此SO问题。至于您的错误,可能有许多原因导致对象过期。 - Tim Biegeleisen
2
#VM_Vehicles <> [dbo].[VM_Vehicles]。一个是临时表,另一个是持久表。 - Thom A
1个回答

5
你正在数据库Butterfly中创建一个持久表VM_Vehicles。但是你正在检查数据库TempDB中的临时表#VM_Vehicles。关于持久表临时表的介绍可以参见链接。请注意保留HTML标记。
IF object_id("tempdb..#VM_Vehicles") is not null

所以,您正在从另一个数据库检查另一个表格,因此出现了以下错误:

数据库中已经存在一个名为''的对象

正确的检查语句应该如下:

USE Butterfly

IF OBJECT_ID("VM_Vehicles") IS NOT NULL DROP TABLE VM_Vehicles

CREATE TABLE [dbo].[VM_Vehicles](VehicleID nvarchar(100), ...);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接