2013-07-12 38 views
5

Próbuję uruchomić następujący skrypt z SQL Server Management Studio:Pozwolenie INSERT została odrzucona na obiekcie 'Sterownik'

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) 

A ja dostaję ten błąd:

Msg 229, Level 14, State 5, Line 1
The INSERT permission was denied on the object 'Driver', database 'SuburbanPortal2', schema 'Truck'.

Mogę ręcznie dodać to w trybie edycji i nie otrzymuję żadnych błędów. Mam wszelkie pozwolenia, które mogę wymyślić dla moich użytkowników. Jest to lokalna baza danych logująca się jako lokalny użytkownik, który testuję niektóre dane, więc mogłem mniej dbać o bezpieczeństwo.

Ale oto ustawienia bazy danych dla mojego użytkownika:

enter image description here

enter image description here

enter image description here

jakieś sugestie?

+0

Czy możesz podać ConnectionString? Wypróbuj także program SQL Profiler, aby to się stało. –

+1

Wygląda na to, że masz wszystkie uprawnienia ..... na schemacie '[dbo]'. Ale twój stół jest w schemacie "[Truck]"; czy masz również uprawnienia do tego schematu? –

+0

Głupie pytanie, ale nie powinno być INSERT INTO [Truck]. [Driver] – Andrew

Odpowiedz

4
-- 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 

Ten kod konfiguruje przykładową bazę danych, taką jaka jest. Nie mam problemów z wkładką.

Kto jest właścicielem schematu?

Jeśli chcesz ukryć tabele z jednej grupy bazy danych i innej, dodaj użytkownika do grupy bazy danych.

Ustaw grupę bazy danych jako właściciela schematu. Myślę, że możesz mieć problem własności schematu ...

Czy można wiercić w bazie danych -> bezpieczeństwo -> schematy -> Ciężarówka, kliknij prawym przyciskiem myszy i pokaż mi właściciela schematu. Proszę opublikuj zdjęcie.

Usuń również wszystkie uprawnienia do bazy danych z wyjątkiem użytkownika db_owner.