모든 데이터베이스에 대한 단일 데이터베이스에 대한 stored procedure sp_Msforeachdb
문서화되지 않은 사용하는 모든 데이터베이스에 대한 오프 자동 증가 옵션을 설정 ALTER DATABASE command (병렬 데이터웨어 하우스의 경우 만 해당)
ALTER DATABASE [database_name] SET AUTOGROW = OFF
다음 실행할 수 있습니다
EXEC sp_Msforeachdb "ALTER DATABASE [?] SET AUTOGROW = OFF"
이것은 서버 변수 또는 인스턴스 설정이 아니지만 작업을 쉽게 수행하는 데 도움이 될 수 있습니다. f 또는 시스템 데이터베이스를 제외하면 다른 모든 데이터베이스에 대해 SQL Server 인스턴스
의 모든 데이터베이스를 업데이트, T-SQL은 모든 데이터베이스 파일의 목록을 얻을하고 준비 출력 명령을 실행할 수 있습니다 실행할 수있는 다음
select
'ALTER DATABASE [' + db_name(database_id) + '] MODIFY FILE (NAME = N''' + name + ''', FILEGROWTH = 0)'
from sys.master_files
where database_id > 4
데이터 파일의 자동 증가 특성이 변경되는 것을 방지하기 위해 일단 DDL 트리거를 사용하여 DROP 테이블 문을 기록한 후에는 SQL Server DDL trigger을 준비했습니다. 트리거를 수행하면이 속성을 변경할 수 없으므로이 속성을 업데이트해야하는 경우이 트리거를 먼저 삭제해야합니다.
CREATE TRIGGER prevent_filegrowth
ON ALL SERVER
FOR ALTER_DATABASE
AS
declare @SqlCommand nvarchar(max)
set @SqlCommand = (SELECT EVENTDATA().value('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]','nvarchar(max)'));
if(isnull(charindex('FILEGROWTH', @SqlCommand), 0) > 0)
begin
RAISERROR ('FILEGROWTH property cannot be altered', 16, 1)
ROLLBACK
end
GO
은 DDL 트리거에 대한 자세한 내용은, 귀하의 빠른 회신에 대한
Microsoft Docs
감사를 참조하십시오. 하지만 내가 할 때 사용자는 자신의 데이터베이스를 편집 할 수 있습니다. 이 옵션에 대한 액세스를 피하기 위해 사용자를 제한하는 옵션이 있습니까? – masoud
피드백을 주셔서 감사합니다 masoud, 모든 데이터베이스의 AutoGrow 속성에 대한 업데이트를 방지하는 DDL 트리거를 추가했습니다. 어쩌면 당신을 도울 수 있습니다. 요구 사항에 따라 마스터 또는 tempdb 등을 제외하는 필터를 추가 할 수 있습니다. – Eralper