개체 'xxxxxxx', 데이터베이스 'zzzzzzz', 스키마 'dbo'에 대한 EXECUTE 권한이 거부되었습니다.
함수를 실행하는 데 문제가 있습니다.
내가 한 일은 다음과 같습니다.
- SQL Server Management Studio를 사용하여 함수를 만듭니다. 성공적으로 작성되었습니다.
- 그런 다음 새로 생성 된 기능을 실행하려고 시도했으며 다음과 같은 결과를 얻었습니다.
개체 'xxxxxxx', 데이터베이스 'zzzzzzz', 스키마 'dbo'에 대한 EXECUTE 권한이 거부되었습니다.
해당 저장 프로 시저에 대해 사용자 (또는 그룹의 일부)에 실행 권한을 부여해야하는 것처럼 들립니다.
예를 들어, 당신은 할 수 따라서 액세스 권한을 부여 :
USE zzzzzzz;
GRANT EXEC ON dbo.xxxxxxx TO PUBLIC
내가 찾은 최고의 솔루션은 새로운 데이터베이스 역할을 만드는 것입니다.
CREATE ROLE db_executor;
그런 다음 해당 역할 실행 권한을 부여하십시오.
GRANT EXECUTE TO db_executor;
이제 사용자의 속성으로 이동하여 사용자 매핑으로 이동하여 새 역할을 추가 한 데이터베이스를 선택하면 다음에 대한 데이터베이스 역할 멤버 자격에 새 역할이 표시됩니다.
Sql Server Management Studio에서 :
로 이동하십시오 security->schema->dbo
.
dbo를 두 번 클릭 한 다음을 클릭 하고 사용 또는 제어 선택을 permission tab->(blue font)view database permission
위한 "execute".
도움말 과 같은 필수 필드를 자유롭게 스크롤 하십시오 . 이것이 도움이되기를 바랍니다 :)grant
deny
당신은 이런 식으로 뭔가를 실행해야합니다
GRANT Execute ON [dbo].fnc_whatEver TO [domain\user]
사용자 또는 역할에 권한을 부여하려고 할 때 작동합니다.
Microsoft SQL Server Management Studio 사용 :
- 이동 : 데이터베이스
- dbo.my_database를 마우스 오른쪽 버튼으로 클릭하십시오.
- 선택 : 속성
- 왼쪽 패널에서 다음을 클릭하십시오. 권한
- 이름 패널에서 사용자 또는 역할을 선택하십시오.
- 권한 및 확인 표시에서 실행 찾기 : Grant, With Grant 또는 Deny
특히 웹 응용 프로그램에서 동일한 사용자 이름을 사용하는 경우 이러한 권한을 부여하는 것은 위험 할 수 있습니다.
이제 웹 사용자 (및 전 세계 웹)도 데이터베이스 내에서 객체를 생성하고 삭제할 수있는 권한이 있습니다. SQL 인젝션을 생각하십시오!
다음과 같이 지정된 객체의 특정 사용자에게만 실행 권한을 부여하는 것이 좋습니다.
grant execute on storedProcedureNameNoquotes to myusernameNoquotes
이제 사용자 myusernameNoquotes는 소중한 데이터에 대한 다른 불필요한 권한없이 storedProcedureNameNoquotes 프로 시저를 실행할 수 있습니다.
실행할 권한이 있지만 실행할 권한이 없습니다.
자세한 내용은 GRANT 개체 권한 (Transact-SQL)을 참조하십시오.
솔루션을 실행할 때 발생하는 예외와 관련하여 위의 질문과 같은 문제가있는 경우 문제는 해당 그룹의 사용자에게 데이터베이스 / 저장 프로 시저에 액세스 할 수있는 권한이 아닌 권한입니다. 데이터베이스 이름, 저장 프로 시저 (함수) 및 권한 유형 또는 역할 또는 액세스 권한을 부여한 사람으로 내 것을 대신하여 아래에있는 것과 같은 작업을 수행하면됩니다.
USE [StableEmployee]
GO
GRANT EXEC ON dbo.GetAllEmployees TO PUBLIC
/ ****** 개체 : StoredProcedure [dbo]. [GetAllEmployees] 스크립트 날짜 : 2016/01/27/2016 16:27:27 ****** /
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[GetAllEmployees]
as
Begin
Select EmployeeId, Name, Gender, City, DepartmentId
From tblEmployee
End
모든 사람에게 실행 권한을 부여 할 수 있습니다.
GRANT Execute on [dbo].your_object to [public]
"공개"는 모든 사용자가 속한 기본 데이터베이스 역할입니다.
you'd better off modifying server roles, which was designed for security privileges. add sysadmin server role to your user. for better security you may have your custom server roles. but this approach will give you what you want for now.
- Object Explorer -> Server -> Security -> Logins
- Right click on your desired user
- Go to Server Roles on left hand side
- Make sure sysadmin is checked
- Hit OK and restart your SQL server
Good luck
I have faced the same problem and I solved as give db_owner permission too to the Database user.
If you make this user especial for a specific database, then maybe you do not set it as db_owner in "user mapping" of properties
here is how to give permission for one user not public,
Direct Query:
Use MyDatabase Grant execute on [dbo].[My-procedures-name] to [IIS APPPOOL\my-iis-pool] Go
'IT' 카테고리의 다른 글
오류 메시지 'java.net.SocketException : 소켓 실패 : EACCES (권한 거부)' (0) | 2020.05.28 |
---|---|
당신은 (0) | 2020.05.28 |
Oracle 암호 만기를 끄려면 어떻게합니까? (0) | 2020.05.28 |
jQuery의 $ .proxy () 이해 (0) | 2020.05.28 |
iOS UITableView HeaderView 추가하기 (섹션 헤더 아님) (0) | 2020.05.28 |