由于权限,SQL Server无法在数据库中创建表

时间:2014-02-16 11:43:21

标签: sql sql-server sql-server-2008

我使用的是SQL Server 2008 Express R2。 当我开始收到此错误时,我试图测试几个查询:

  Msg 2760, Level 16, State 1, Line 2
    The specified schema name "t_one" either does not exist or you do not have permission to use it.

SQL:

  CREATE TABLE t_one.clients
(
t_id int NOT NULL PRIMARY KEY IDENTITY,
colOne varchar(255) NOT NULL,
colTwo varchar(255) NOT NULL,
colThree varchar(255) NOT NULL,
colFour varchar(255) NOT NULL,
CONSTRAINT pk_testID PRIMARY KEY(t_id)

)

我只是使用界面授予了我的用户个人资料的权限,在我点击确定/保存后它没有应用它们 - 当我回到用户的权限时,他们都被取消了。

3 个答案:

答案 0 :(得分:19)

尝试以这种方式运行:

CREATE SCHEMA t_one
CREATE TABLE t_one.clients
(
t_id int NOT NULL PRIMARY KEY IDENTITY,
colOne varchar(255) NOT NULL,
colTwo varchar(255) NOT NULL,
colThree varchar(255) NOT NULL,
colFour varchar(255) NOT NULL,
CONSTRAINT pk_testID PRIMARY KEY(t_id)

)

答案 1 :(得分:1)

要检查并创建架构是否不存在,您可以让以下在单独的批处理中运行

IF NOT EXISTS ( SELECT  *
                FROM    sys.schemas
                WHERE   name = N't_one' ) 
    EXEC('CREATE SCHEMA [t_one] AUTHORIZATION [dbo]');
GO

答案 2 :(得分:0)

  1. 要检查架构是否存在,请尝试
  2. SELECT * FROM sys.schemas WHERE name = 't_one'

    1. 如果架构t_one不存在,请尝试运行
    2. CREATE SCHEMA t_one

      1. 如果您没有创建架构的权限,
      2. USE <database_name>; GRANT CREATE SCHEMA TO <user_name>; GO

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

        1. 如果您拥有架构并且您无权使用它,

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

        2. 然后运行代码来创建表。

          Read Docs here