[SQL] 그랜트는 데이터베이스의 모든 저장 프로 시저에 대한 사용자의 권한을 실행?
SQL그랜트는 데이터베이스의 모든 저장 프로 시저에 대한 사용자의 권한을 실행?
나는 기존 데이터베이스에서 스크립트를 생성 된 새 데이터베이스를 만들고 이전 데이터베이스에서 모든 데이터를 가져옵니다. 지금까지 좋은, 그래서, 그러나, 사용자가 저장 프로 시저에 대한 실행 권한이 없습니다. 내가 사용할 수 있습니다 알고
GRANT EXECUTE ON [storedProcName] TO [userName]
그냥 몇 가지 절차를했다면, 그러나, 그래서 내가 그들 모두에 특정 사용자에 대한 액세스 권한을 부여하기위한 가장 쉬운 방법은 무엇입니까 (100)에 대해 있나요?
미리 감사드립니다.
해결법
-
==============================
1.역할이 사용자에게이 역할을 추가 만든 다음이 역할에 한 번에 모든 루틴을 실행할 부여 할 수 있습니다.
역할이 사용자에게이 역할을 추가 만든 다음이 역할에 한 번에 모든 루틴을 실행할 부여 할 수 있습니다.
CREATE ROLE <abc> GRANT EXECUTE TO <abc>
편집하다 SQL Server 2005의이 작품은, 내가이 기능의 이전 버전과의 호환성에 대해 확실하지 않다, 나는 괜찮을 있는지 아무것도 이후 2005 이상입니다.
-
==============================
2.문제를 지나치게 복잡없이,이 선택한 데이터베이스에서 실행을 부여하려면
문제를 지나치게 복잡없이,이 선택한 데이터베이스에서 실행을 부여하려면
USE [DB] GRANT EXEC TO [User_Name];
-
==============================
3.이 스키마에 새 저장 프로 시저를 추가 수단, 사용자가 새 저장 프로 시저에서 실행 호출 부여하지 않고도이를 실행할 수있는 솔루션입니다 :
이 스키마에 새 저장 프로 시저를 추가 수단, 사용자가 새 저장 프로 시저에서 실행 호출 부여하지 않고도이를 실행할 수있는 솔루션입니다 :
IF EXISTS (SELECT * FROM sys.database_principals WHERE name = N'asp_net') DROP USER asp_net GO IF EXISTS (SELECT * FROM sys.database_principals WHERE name = N'db_execproc' AND type = 'R') DROP ROLE [db_execproc] GO --Create a database role.... CREATE ROLE [db_execproc] AUTHORIZATION [dbo] GO --...with EXECUTE permission at the schema level... GRANT EXECUTE ON SCHEMA::dbo TO db_execproc; GO --http://www.patrickkeisler.com/2012/10/grant-execute-permission-on-all-stored.html --Any stored procedures that are created in the dbo schema can be --executed by users who are members of the db_execproc database role --...add a user e.g. for the NETWORK SERVICE login that asp.net uses CREATE USER asp_net FOR LOGIN [NT AUTHORITY\NETWORK SERVICE] WITH DEFAULT_SCHEMA=[dbo] GO --...and add them to the roles you need EXEC sp_addrolemember N'db_execproc', 'asp_net'; EXEC sp_addrolemember N'db_datareader', 'asp_net'; EXEC sp_addrolemember N'db_datawriter', 'asp_net'; GO
참조 : 그랜트 모든 저장 프로 시저에 대한 실행 권한
-
==============================
4.코드 아래 사용 적절한 데이터베이스 이름 및 사용자 이름을 변경하고 그 결과를 받아 SSMS에서 실행한다. SQL 2005 위를위한
코드 아래 사용 적절한 데이터베이스 이름 및 사용자 이름을 변경하고 그 결과를 받아 SSMS에서 실행한다. SQL 2005 위를위한
USE <database_name> select 'GRANT EXECUTE ON ['+name+'] TO [userName] ' from sys.objects where type ='P' and is_ms_shipped = 0
-
==============================
5.
USE [DATABASE] DECLARE @USERNAME VARCHAR(500) DECLARE @STRSQL NVARCHAR(MAX) SET @USERNAME='[USERNAME] ' SET @STRSQL='' select @STRSQL+=CHAR(13)+'GRANT EXECUTE ON ['+ s.name+'].['+obj.name+'] TO'+@USERNAME+';' from sys.all_objects as obj inner join sys.schemas s ON obj.schema_id = s.schema_id where obj.type in ('P','V','FK') AND s.NAME NOT IN ('SYS','INFORMATION_SCHEMA') EXEC SP_EXECUTESQL @STRSQL
from https://stackoverflow.com/questions/5428406/grant-execute-permission-for-a-user-on-all-stored-procedures-in-database by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 에서 VARCHAR 변환 HashBytes (0) | 2020.07.21 |
---|---|
[SQL] 어떻게 포스트 그레스의 잠금을 보유 쿼리를 감지? (0) | 2020.07.21 |
[SQL] 한 서버에서 다른 서버로 데이터 삽입? (0) | 2020.07.21 |
[SQL] 테이블이 존재하는지 확인하고 존재하지 않는 경우, SQL 서버 2008을 만들 (0) | 2020.07.21 |
[SQL] 행은 테라 데이타에서 무엇을 사용 위의 제한은 없습니다? (0) | 2020.07.21 |