229: The SELECT/EXECUTE permission was denied on the object
SQL Server의미
사용자에게 객체에 대해 요청한 작업(SELECT, INSERT, EXECUTE 등)을 수행할 권한이 없다. 보안상 접근이 거부되었다.
원인
필요한 권한이 사용자/롤에 부여되지 않음, 잘못된 스키마 소유권(ownership chaining 단절), 객체에 대한 명시적 DENY, 또는 사용자가 충분한 롤의 멤버가 아님.
해결 방법
필요한 권한을 부여한다: GRANT SELECT ON dbo.MyTable TO UserName(또는 GRANT EXECUTE ON dbo.MyProcedure TO ...). 사용자를 적절한 롤(예: db_datareader)에 추가한다. 명시적 DENY가 있으면 제거한다. 최소 권한 원칙에 따라 권한을 구성한다. sys.database_permissions로 기존 권한을 감사한다.
같은 데이터베이스의 다른 항목
- 9002The transaction log for database is full due to ...
- 1105Could not allocate space for object in database because the filegroup is full
- 208Invalid object name
- 4060Cannot open database requested by the login. The login failed
- 233A connection was successfully established with the server, but then an error occurred (no process is on the other end of the pipe)
- 823The operating system returned error to SQL Server during a read/write at offset in file (I/O error)
- 824SQL Server detected a logical consistency-based I/O error (page corruption)