그래서, 나는 내 친구의 웹 사이트에있는 코드와 레슬링 봤는데 설정 :이 sp_MSforeachdb와 데이터베이스를 통해 "반복"을 반환 한 데이터가
나는 데이터베이스 레벨 보안을 생성 할8 Steps to Moving Database Logins
, 역할 및 Explicit Permissions 문을 하나의 출력에 저장하므로 반복적으로 복사 및 붙여 넣기가 수행되지 않으므로 서버의 모든 데이터베이스 (물론 tempdb 제외)에서 실행됩니다.
Declare @FullStatement varchar(MAX)
Set @FullStatement = ' use [?]; SELECT dp.state_desc + N'' '' + dp.permission_name + N'' TO '' + cast(QUOTENAME(dpl.name COLLATE DATABASE_DEFAULT) as nvarchar(500)) AS TSQLScript
FROM sys.database_permissions AS dp
INNER JOIN sys.database_principals AS dpl ON (dp.grantee_principal_id = dpl.principal_id)
WHERE dp.major_id = 0
and dpl.name not like ''##%'' -- excluds PBM accounts
and dpl.name not in (''dbo'', ''sa'', ''public'')
ORDER BY dp.permission_name ASC, dp.state_desc ASC'
Exec sp_MSforeachdb @FullStatement
어떻게 내가 그대로 작동하지만 문이 모두 하나 개의 데이터 세트에 그렇게 등 테이블 변수, 임시 테이블을 사용하여, 불편하다, 무엇을 수정할 수 있습니다?
그게 효과가있어. 다른 2 개의 데이터베이스 카테고리를 추가하려고합니다. 나는 그게 그렇게 간단하지 않다고 믿을 수 없다. 나는 그 근처에서 뭔가를 시도했지만 오류가 계속 발생했습니다. – DavidStein
차가움. 내 잘못, 나는 당신이 데이터베이스마다 되돌려주는 perms가 필요하다고 생각했다. 그 이유는 내가 사용 문을 추가 SELECT ''를 사용하여 제거 [?] ''; @FullStatement 초기화의 처음부터. – Norman
죄송합니다. 정상적으로, 나는 그것을 깨닫고 내 의견을 삭제하고 다시 입력했습니다. 그래 네가 맞아. Use Statements 만 남겼습니다. – DavidStein