Google 서버에서 원칙을 작성하는 데 사용 된 만료 된 인증서를 다시 작성하려고 시도하고 이러한 원칙이 가장하여 저장 프로 시저를 실행하는 중입니다.인증서 기반 교장을 사용하여 EXECUTE AS를 사용하여 저장 프로 시저를 만들 수 없음
이것은 내가하고있는 것입니다 (물론 생산 과정에서 훨씬 더 복잡하지만이 정확한 테스트도 실패합니다).
Use ReportingDb
GO
CREATE CERTIFICATE MyCertTest ENCRYPTION BY PASSWORD = 'acrazygoodpassword'
WITH SUBJECT = 'Stored procedure signing for Reports'
,EXPIRY_DATE = '11/18/2019';
GO
BACKUP CERTIFICATE MyCertTest TO FILE = 'D:\MyCertTest.CER';
GO
CREATE USER TestReportUser
FROM CERTIFICATE MyCertTest;
GO
EXEC sp_addrolemember 'db_datareader','TestReportUser';
GRANT AUTHENTICATE
TO TestReportUser;
GO
GRANT EXECUTE
TO TestReportUser;
GO
USE Master;
GO
CREATE CERTIFICATE MyCertTest
FROM FILE = 'D:\MyCertTest.CER';
GO
CREATE USER TestReportUser
FROM CERTIFICATE MyCertTest;
GO
EXEC sp_addrolemember 'db_datareader','TestReportUser';
GRANT AUTHENTICATE
TO TestReportUser;
GRANT EXECUTE
TO TestReportUser;
GO
use ReportingDb
GO
CREATE PROCEDURE dbo.Reports_DC_Project_sp
WITH EXECUTE AS 'TestReportUser'
AS
SELECT 1
GO
정말 마스터 db 조각이 필요한지 확실하지 않습니다. 이 후, 저장 프로 시저를 만들 때까지 모든 성공 :
메시지 15517, 수준 16, 상태 1, 프로 시저 Reports_DC_Project_sp 교장 "TestReportUser"가 존재하지 않기 때문에 데이터베이스 사용자로 실행할 수 없습니다 라인 47
, 이 유형의 핵심부는 가장 할 수 없거나 권한이 없습니다.
또한 EXECUTE AS 'dbo'를 사용하여 저장 프로 시저를 만들려고했습니다. 그건 잘 작동 ... 다음 저장 프로 시저에 서명을 추가하고 내 cert 사용자로 실행되도록 저장 프로 시저를 마지막으로 변경. 마지막 단계에서 같은 오류가 발생했습니다.
설정/단계가 있습니까?
안녕하세요. 이것을 작동시킬 수 있었습니까? 아래에 [answer] (http://stackoverflow.com/a/41421145/577765)를 게시하여 왜 이런 일이 일어나고 어떻게 해결할 수 있는지 설명합니다. –