对象“驱动程序”的插入权限被拒绝
Posted
技术标签:
【中文标题】对象“驱动程序”的插入权限被拒绝【英文标题】:The INSERT permission was denied on the object 'Driver' 【发布时间】:2013-07-12 14:12:19 【问题描述】:我正在尝试从 SQL Server Management Studio 运行以下脚本:
INSERT [Truck].[Driver] ([DriverId], [CorporationId], [DriverNumber], [Name], [PhoneNumber])
VALUES (N'b78f90a6-ed6d-4f0e-9f35-1f3e9c516ca9', N'0a48eeeb-37f6-44de-aff5-fe9107d821f5', N'12', N'Unknown', NULL)
我收到了这个错误:
消息 229,第 14 级,状态 5,第 1 行 对象“Driver”、数据库“SuburbanPortal2”、模式“Truck”的 INSERT 权限被拒绝。
我可以在编辑模式下手动添加它,并且不会出错。我拥有我能想到的为我的用户设置的所有权限。这是一个以本地用户身份登录的本地数据库,我正在测试一些数据,因此我不太关心安全性。
但是,这里是我的用户的数据库设置:
有什么建议吗?
【问题讨论】:
你能提供 ConnectionString 吗?也可以尝试 SQL Profiler 来看看会发生什么。 您似乎拥有[dbo]
架构的所有权限.....。但是您的表在[Truck]
模式中;你也有那个架构的权限吗??
愚蠢的问题,但不应该是 INSERT INTO [Truck].[Driver]
@Andrew,“INTO”是可选的。 msdn.microsoft.com/en-us/library/ms174335(SQL.105).aspx
那么你每天都会学到一些新东西:)
【参考方案1】:
-- Use master
USE msdb;
go
-- Make database
CREATE DATABASE SuburbanPortal2;
go
-- Use the database
USE SuburbanPortal2;
GO
-- Make schema
CREATE SCHEMA Truck AUTHORIZATION dbo;
go
-- Make table
CREATE TABLE Truck.Driver
(
[DriverId] uniqueidentifier,
[CorporationId] uniqueidentifier,
[DriverNumber] varchar(64),
[Name] varchar(128),
[PhoneNumber] varchar(12)
);
-- Add data
INSERT [Truck].[Driver] ([DriverId], [CorporationId], [DriverNumber], [Name], [PhoneNumber])
VALUES (N'b78f90a6-ed6d-4f0e-9f35-1f3e9c516ca9', N'0a48eeeb-37f6-44de-aff5-fe9107d821f5', N'12', N'Unknown', NULL);
GO
此代码像您一样设置了一个示例数据库。我对插入没有任何问题。
谁是架构的所有者??
如果您想从一个数据库组和另一个数据库组中隐藏表,请将您的用户添加到数据库组。
使数据库组成为架构的所有者。我认为您可能遇到架构所有权问题...
你能深入数据库 -> 安全 -> 架构 -> 卡车,右键单击并显示架构的所有者。请张贴图片。
另外,删除用户的所有数据库权限,db_owner 除外。
【讨论】:
以上是关于对象“驱动程序”的插入权限被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
SQLSTATE[HY000] [2002] 权限被拒绝 Laravel PDO 驱动程序(凭证通过工匠迁移工作)
尝试使用 java 将数据插入 PostgresQL 表时,序列应用程序的权限被拒绝