2013-07-20 88 views
0

名爲「角色」當我嘗試執行我的TSQL代碼的對象,我得到異常:已經有一個在數據庫

Msg 2714, Level 16, State 6, Line 2 
There is already an object named 'Role' in the database. 
Msg 2714, Level 16, State 6, Line 2 
There is already an object named 'User' in the database. 

但我沒有任何數據庫。我需要建議。

代碼如下所示:

USE master 
GO 
CREATE DATABASE PortalDB 
GO 

CREATE TABLE [Role] 
(
    [ID] INT IDENTITY(1,1) PRIMARY KEY CLUSTERED, 
    [Name] NVARCHAR(50) NOT NULL, 
) 
GO 

CREATE TABLE [User] 
(
    [ID] INT IDENTITY(1,1) PRIMARY KEY CLUSTERED, 
    [Name] NVARCHAR(50) NOT NULL, 
    [UserName] NVARCHAR(50) NOT NULL, 
    [Password] NVARCHAR (100) NOT NULL, 
    [Email] NVARCHAR (100) NOT NULL, 
    [RoleID] INT NOT NULL FOREIGN KEY REFERENCES [Role](ID) 
) 

回答

4

這不是說有一個表,它說有,你找兩個保留字作爲表名,這是不理想的對象,但moreso他們現有對象的名稱。你應該選擇其他的名字。

從技術上講,你可以創建一個用戶表是這樣的:

CREATE TABLE dbo.[user] 

但是你應該不使用保留字作爲表名。另外,確保在創建表格時使用了正確的數據庫。創建數據庫後,您可以使用:

USE PortalDB 
GO 

或者你可以在CREATE TABLE喜歡註明:

CREATE TABLE PortalDB.dbo.[tablename] 
+0

我改變了表名,但仍然是一個例外。我嘗試了太多的話。 – fuat

+0

我執行了 SELECT * FROM sys.objects Mssql服務器在sys.objects中創建了我所有的表名。什麼錯我不明白。 – fuat

+0

嘗試了CREATE TABLE dbo。[user]仍然是一個例外。 – fuat

0

問題得到解決。謝謝你。工作SQL代碼如下所示:

USE master 
GO 
CREATE DATABASE FancyDB 
GO 

    CREATE TABLE FancyDB..[Role] 
    (
     [ID] INT IDENTITY(1,1) PRIMARY KEY CLUSTERED, 
     [Name] NVARCHAR(50) NOT NULL, 
    ) 
GO 

    CREATE TABLE FancyDB..[User] 
    (
     [ID] INT IDENTITY(1,1) PRIMARY KEY CLUSTERED, 
     [Name] NVARCHAR(50) NOT NULL, 
     [UserName] NVARCHAR(50) NOT NULL, 
     [Password] NVARCHAR (100) NOT NULL, 
     [Email] NVARCHAR (100) NOT NULL, 
     [RoleID] INT NOT NULL FOREIGN KEY REFERENCES [Role](ID) 
    ) 
1

1)與此腳本的主要問題是,它試圖在master數據庫中創建兩個表([Role][User])。 發生這種情況是因爲CREATE DATABASE PortalDB當前連接的活動數據庫仍然是數據庫master。 你能做什麼? CREATE DATABASE PortalDB後,必須更改活動數據庫與另一USE當前連接:)

USE master 
GO 
CREATE DATABASE PortalDB 
GO 
SELECT DB_NAME() AS CurrentDBBefore; 
USE PortalDB; -- <- this statement will change active DB 
SELECT DB_NAME() AS CurrentDBAfter; 
GO 
CREATE TABLE [dbo].[Role]... 

2當你必須使用一個表名請使用,另外,該架構名稱:

CREATE TABLE [MySchema].[MyTable]... 

例子:

CREATE TABLE [dbo].[Role]... 
+0

謝謝你的幫助。這些信息非常有幫助。 – fuat

0

爲什麼在Master中創建對象?這是一個系統數據庫。

+0

謝謝你意識到這一點。 – fuat

相關問題