Разрешението INSERT беше отказано на обекта „Драйвер“

Опитвам се да стартирам следния скрипт от 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)

И получавам тази грешка:

Msg 229, ниво 14, състояние 5, ред 1
Разрешението INSERT е отказано на обекта „Шофьор“, база данни „SuburbanPortal2“, схема „Камион“.

Мога ръчно да добавя това в режим на редактиране и не получавам грешки. Имам всички разрешения, за които се сещам, зададени за моите потребители. Това е локална база данни, влизаща като локален потребител, върху която тествам някои данни, за да мога да се грижа по-малко за сигурността.

Но ето настройките за базата данни за моя потребител:

въведете описание на изображението тук

въведете описание на изображението тук

въведете описание на изображението тук

Някакви предположения?


person ErocM    schedule 12.07.2013    source източник
comment
Можете ли да предоставите ConnectionString? Опитайте също SQL Profiler, за да разберете какво се случва.   -  person Ralf de Kleine    schedule 12.07.2013
comment
Изглежда, че имате всички разрешения..... за схемата [dbo]. Но вашата таблица е в схемата [Truck]; имате ли разрешения и за тази схема??   -  person marc_s    schedule 12.07.2013
comment
Глупав въпрос, но не трябва ли да е INSERT INTO [Truck].[Driver]   -  person Andrew    schedule 12.07.2013
comment
@Andrew, INTO не е задължително. msdn.microsoft.com/en-us/library/ms174335 (SQL.105).aspx   -  person JSR    schedule 12.07.2013
comment
Тогава научаваш нещо ново всеки ден :)   -  person Andrew    schedule 12.07.2013
comment
@RalfdeKleine Нямам низ за връзка, използвам Sql Server Management Studio. Пускам го като скрипт от там.   -  person ErocM    schedule 12.07.2013
comment
@Andrew Освен това този скрипт е създаден от SSMS от друга база данни със същото оформление.   -  person ErocM    schedule 12.07.2013
comment
@marc_s Аз съм собственик на db, не съм сигурен дали това има значение. Проверих всички схеми, за да съм собственик и показва синьо поле, не съм сигурен дали това означава точно това без квадратче за отметка, но няма да ми позволи да ги проверя или премахна отметката.   -  person ErocM    schedule 12.07.2013
comment
Какво ще кажете за INSERT [Dbo].[Driver] ([DriverId], ...?   -  person Yuriy Galanter    schedule 12.07.2013
comment
Не съм сигурен защо трябваше да направя това, не съм експерт по Sql Server, но след като се добавих към основната база данни, успях да изпълня заявката. Ако някой има отговор на това, бих искал да знам. В противен случай след малко ще публикувам това като моя объркан отговор.   -  person ErocM    schedule 12.07.2013
comment
ErocM - преместихте ли или копирахте тази база данни от друг сървър? Ако е така, потребителските SSID може да са повредени.   -  person Graeme    schedule 12.07.2013
comment
В противен случай, няколко неща идват на ум: 1) вие сте разработчикът, така че трябва да сте член на sysadmin на собствения си компютър. така ли е 2) използвайте CREATE ROLE Truck_Users AUTHORIZATION dbo; и след това използвайте sp_addrolemember, за да добавите вашите потребители към РОЛЯТА. И накрая, използвайте оператори GRANT, за да дадете разрешения на РОЛЯТА, като например GRANT INSERT ON OBJECT::[Truck].[Driver] TO [Truck_Users]; Има и други разрешения, като например GRANT ALL, което дава всичко на ролята.   -  person Graeme    schedule 12.07.2013
comment
@Graeme Да, това беше възстановяване от резервно копие. Поставете това като отговор и ще гласувам за вас, моля :)   -  person ErocM    schedule 12.07.2013


Отговори (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.

person CRAFTY DBA    schedule 12.07.2013