消息2760,级别16,状态1,行5指定的模式名称"项目"要么不存在,要么您没有权限使用它

时间:2017-08-31 10:10:25

标签: sql sql-server temporal-tables

我正在尝试在SQL Server数据库中创建临时表。是否有人熟悉SQL Server中的此错误:

  

Msg 2760,Level 16,State 1,Line 5   指定的模式名称" items"要么不存在,要么您没有权限使用它。

我认为我的用户权限可能有问题。任何帮助都会很棒。

以下是代码:

CREATE TABLE [items].[items_Temporal](
    [itemsID] [int] NOT NULL, 
    [item_Name] [varchar](50) NOT NULL, 
    [item_Number] [int] NOT NULL, 
    [item_Price] [float] NOT NULL, 
    ValidFrom datetime2(7) GENERATED ALWAYS AS ROW START HIDDEN NOT NULL, 
    ValidTo datetime2(7) GENERATED ALWAYS AS ROW END HIDDEN NOT NULL,

    CONSTRAINT [PK_items_Temporal_items1ID] PRIMARY KEY CLUSTERED
    (
        [itemsID] ASC
    ), 
    PERIOD FOR SYSTEM_TIME(ValidFrom, ValidTo)
)

WITH(SYSTEM_VERSIONING = ON (HISTORY_TABLE = [items].[items_Temporal_History])); 

2 个答案:

答案 0 :(得分:2)

从Yogesh的答案中,您可以找到架构是否存在。

如果架构items不存在,请尝试运行

CREATE SCHEMA items

如果您没有创建架构的权限,

USE <database_name>;  
    GRANT CREATE SCHEMA TO <user_name>;  
GO 

然后创建模式并运行用于创建表的代码。

如果您拥有架构并且您没有使用它的权限,

USE <database_name>;  
    GRANT CREATE TABLE TO <user_name>;  
GO 

然后运行代码来创建表。

Read Docs here

答案 1 :(得分:1)

运行以下查询以检查实际上您正在尝试在数据库中运行查询是否包含项目架构

SELECT * FROM sys.schemas WHERE name = 'item'

如果您在上面的查询中有行,请检查您尝试运行此查询的登录用户。另外,检查此用户是否有权通过这种方式创建表,您将知道为什么会出现此错误