2016-02-16 13 views

回答

0
USE master 
GO 
EXEC sys.xp_instance_regwrite 
    N'HKEY_LOCAL_MACHINE' 
    ,N'Software\Microsoft\MSSQLServer\MSSQLServer' 
    ,N'NumErrorLogs' 
    ,REG_DWORD 
    ,20 

上面的代碼將創建20個錯誤日誌

+0

與問題xp_instance_regwrite權限,因爲服務帳戶不是本地管理員。 – SQLCH

0

- 我發現這種方式與所有版本的工作:

使用母 去

Declare @instance_name nvarchar(100)       
Declare @system_instance_name nvarchar(100)       
Declare @key nvarchar(1000)       
Declare @registry_key nvarchar(100)       
Declare @NBRofErrorLogs int       
Declare @NewValue int 

SET @NewValue = 12 

Set @instance_name= coalesce(convert(nvarchar(100), serverproperty('InstanceName')),'MSSQLSERVER');       
EXEC master.dbo.xp_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\Microsoft SQL Server\Instance Names\SQL', @instance_name, @system_instance_name output;       

SET @registry_key = N'Software\Microsoft\Microsoft SQL Server\' + @system_instance_name + '\MSSQLServer';       
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@registry_key,@value_name='NumErrorLogs',@[email protected] OUTPUT       

IF isnull(@NBRofErrorLogs,6) < @NewValue 
    EXECUTE [master].[sys].xp_regwrite --[xp_instance_regwrite] 
     @rootkey = N'HKEY_LOCAL_MACHINE' 
     ,@key = @registry_key 
     ,@value_name = N'NumErrorLogs' 
     ,@type = N'REG_DWORD' 
     ,@value = @NewValue; 


EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@registry_key,@value_name='NumErrorLogs',@[email protected] OUTPUT       
select @NBRofErrorLogs