1. ホーム
  2. sql-server

[解決済み] データベース 'tempdb' で CREATE TABLE 権限が拒否されました。

2022-02-03 10:09:06

質問

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

<ブロッククオート

CREATE TABLEのパーミッションが拒否されました。 データベース 'tempdb' を使用しています。

なぜでしょうか?誰かこれを解決する方法を教えてください。

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]

ありがとうございます。 ラジュー

どのように解決するのですか?

私の最初の推測では、このサーバーで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


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