27

システムに初めて SQL Server Management Studio Express と Visual Studio 2005 をインストールしました。現在、以下のスクリプトを使用してテーブルを作成しようとしています。しかし、一度実行すると、次のようなエラーに直面しています

データベース 'tempdb' で CREATE TABLE 権限が拒否されました。

それはなぜですか?誰でもこれを解決する方法を教えてもらえますか?

USE [tempdb]
GO

SET ANSI_NULLS ON
SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Employee]
([FirstName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
 [LastName] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) ON [PRIMARY]

ありがとうラジュ

4

6 に答える 6

31

データベース、セキュリティ、ユーザーに移動し、ユーザー、プロパティを右クリックします。メンバーシップ、db_ownerを確認しました。

于 2012-06-28T16:14:36.720 に答える
19

私の最初の推測では、このサーバーでCREATEテーブルの権限がありません。以下の一連のクエリを実行していただけますか?


-- get login first 
select suser_name() 
--or 
SELECT SYSTEM_USER

-- Now get the permissions assigned to you by the server administrator 
use tempDB 
GO 

;with getPermissions as ( SELECT * FROM fn_my_permissions (NULL, 'DATABASE') ) 
select permission_name from getPermissions 
where permission_name like 'create%' 
GO

permit_name列が0行を返す場合は、このDBに対するCREATE権限がないことを意味します。DBAに連絡して、tempDBのdb_ddladminを付与してください。ただし、Andomarが指摘したように、一時テーブルは、#が事前に追加されると、tempDBに自動的に作成されます。

于 2011-07-03T17:47:36.270 に答える
15
Use tempdb
GO
Create User MyUserName For Login MyUserName with Default_Schema= [dbo];
go
use tempdb
go
EXEC sp_addrolemember 'db_ddladmin', N'MyUserName'
go

目的のユーザーが新しいテーブルを作成するには、db_ddladmin ロールが必要です。したがって、db_datawriter ロールでは不十分です。

于 2013-02-22T12:32:58.117 に答える
12

で永久テーブルを作成しようとしていますtempdb。これはかなり珍しいことですが、SQL Server サービスが再起動されるたびに tempdb が完全に消去されます。

一時テーブルを作成する通常の方法は次のとおりです。

create table #TempTable (...

これ#により、ローカル (接続固有) の一時テーブルになります。グローバル一時テーブルは で始まります##。この方法で一時テーブルを作成するのに、特別な権限は必要ありません。

于 2011-07-03T14:55:23.913 に答える