30 lines
1.0 KiB
Transact-SQL
30 lines
1.0 KiB
Transact-SQL
BEGIN TRANSACTION;
|
|
IF NOT EXISTS (
|
|
SELECT * FROM [__EFMigrationsHistory]
|
|
WHERE [MigrationId] = N'20260709105112_FixAuditPurgerRoleGrants'
|
|
)
|
|
BEGIN
|
|
|
|
IF DATABASE_PRINCIPAL_ID('scadabridge_audit_purger') IS NULL
|
|
EXEC sp_executesql N'CREATE ROLE scadabridge_audit_purger';
|
|
-- The switch-out dance CREATEs a staging table; ALTER ON SCHEMA::dbo alone does not
|
|
-- confer the database-level CREATE TABLE permission (review finding S3).
|
|
GRANT CREATE TABLE TO scadabridge_audit_purger;
|
|
-- The per-channel retention override (PurgeChannelOlderThanAsync) is a bounded row
|
|
-- DELETE on the maintenance path; a segregated purger principal needs this grant.
|
|
GRANT DELETE ON dbo.AuditLog TO scadabridge_audit_purger;
|
|
END;
|
|
|
|
IF NOT EXISTS (
|
|
SELECT * FROM [__EFMigrationsHistory]
|
|
WHERE [MigrationId] = N'20260709105112_FixAuditPurgerRoleGrants'
|
|
)
|
|
BEGIN
|
|
INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion])
|
|
VALUES (N'20260709105112_FixAuditPurgerRoleGrants', N'10.0.7');
|
|
END;
|
|
|
|
COMMIT;
|
|
GO
|
|
|