문제

ASP.NET WebForms 응용 프로그램에서 최종 사용자가 SQL-Server 데이터베이스에서 선택한 원시 데이터를 찾아 볼 수 있도록합니다.

그러나 사용자가 사용자 이름을 기반으로 일부 데이터 만 볼 수 있도록 사용자의 액세스를 제한하고 싶습니다.

SQL이 반드시 사용자에게 알려진 것은 아니기 때문에 사용자가 이해할 수있는 방식 으로이 작업을 수행하는 방법을 잘 모르겠습니다.

여기에 어떤 옵션이 있습니까?


이에 대한 기초로 나는 해당 테이블 당 하나의 SQL 기능을 만드는 것을 고려했습니다. 이 기능은 사용자가 볼 수있는 데이터를 반환해야합니다.

CREATE FUNCTION ufn_RawData_Employee(@username nvarchar(256))
RETURNS TABLE
AS ( SELECT * FROM Employee 
  WHERE [@username is allowed to view the given Employee] )

웹 페이지에서 최종 사용자는 다음과 같은 SQL과 같은 문을 입력 할 수 있습니다.

SELECT Name, HireDate FROM ((Employee))

어디 (([TableName])) 그런 다음 교체 할 수 있습니다 ufn_RawData_[TableName]([UserName]) 데이터베이스를 호출하기 전에. (보안상의 이유로 그러한 통화는 SQL 사용자가 수행 할 수 있습니다. 권한은 이러한 기능에 대한 선택 권한입니다.)

그러나이 접근법은 최종 사용자에게는 너무 어려울 수 있습니다. 최종 사용자가 선택한 원시 데이터를 탐색 할 수있는 더 쉬운/사용자 친화적 인 솔루션이 존재하는지 알고 싶습니다.

도움이 되었습니까?

해결책

하나의 테이블에서 사용자 데이터 만 표시하거나 한보기 (아마도 더 유용 할 것입니다) 예, 해당보기의 이름을 테이블에 저장하고 기능으로 검색 할 수 있습니다. 그런 다음 페이지에 데이터를 표시하고 필요한 경우 표준 선택 스크립트에 내장 검색 기능이 있는지 확인할 수 있습니다.

사용자가 한 테이블이나보기에서 데이터 만 가져 오면 SQL을 작성할 필요가 없습니다. 여러 잠재적 테이블/ 뷰를 제공 해야하는 경우 드롭 다운 중에서 선택하도록하지만 자체 SQL 쿼리를 작성할 수있는 가치가 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top