MSSQL设置自动启动与自动停止

1. 环境相关设置

在设置MSSQL的自动启动与自动停止之前,需要对环境进行相关设置。

1.1 配置MSSQL启动为自动启动

在Windows中,可以通过服务(Services)管理实现MSSQL的自动启动。具体步骤如下:

打开“服务”管理器:Win+R打开运行窗口,输入 services.msc,打开“服务”管理器。

找到“SQL Server”服务:在服务列表中找到“SQL Server”服务,双击进入该服务的属性界面。

设置为“自动启动”:在属性界面中,将“启动类型”设置为“自动”,然后点击“应用”和“确定”按钮即可。

这样,MSSQL服务就会在每次开机后自动启动。

1.2 配置MSSQL停止为自动停止

在默认情况下,MSSQL服务是不会自动停止的。但是,在出现错误或意外情况时,MSSQL服务可能会停止工作,需要手动启动,这样会影响生产效率。因此,我们需要将MSSQL设置为自动停止。

首先,需要在SSMS中创建一个“Agent”作业,该作业用于停止MSSQL服务。具体配置如下:

USE [msdb]

GO

BEGIN TRANSACTION

DECLARE @ReturnCode INT

SELECT @ReturnCode = 0

IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)

BEGIN

EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

END

DECLARE @jobId BINARY(16)

EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'StopMssqlService',

@description=N'Stop Mssql service automatically',

@category_name=N'[Uncategorized (Local)]',

@owner_login_name=N'sa',

@job_id = @jobId OUTPUT

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'StopMssqlService',

@step_id=1,

@cmdexec_success_code=0,

@on_success_action=3,

@on_failure_action=2,

@retry_attempts=0,

@retry_interval=0,

@os_run_priority=0, @subsystem=N'TSQL',

@command=N'sp_configure ''show advanced options'', 1;

RECONFIGURE;

sp_configure ''Agent XPs'', 1;

RECONFIGURE;

DECLARE @Sql NVARCHAR(255) = '''''' + (SELECT [physical_name]

FROM master.sys.master_files

WHERE Name = ''Mssqlsystemresource'' and Type = 2)+''''''+ '' 0x2 ''+ ''Stop''+ CHAR(13) + CHAR(10);

EXEC xp_cmdshell @Sql'

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Everyday',

@enabled=1,

@freq_type=4,

@freq_interval=1,

@freq_subday_type=1,

@freq_subday_interval=0,

@freq_relative_interval=0,

@freq_recurrence_factor=0,

@active_start_date=20210415,

@active_end_date=99991231,

@active_start_time=0,

@active_end_time=235959,

@schedule_uid=N'76e3b6de-90b1-4069-85d1-60de61597507'

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

EXECUTE @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'

IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

COMMIT TRANSACTION

GOTO EndSave

QuitWithRollback:

IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION

EndSave:

创建该作业后,需要在Agent中将其设置为自动运行。具体步骤如下:

在Object Explorer中找到“SQL Server Agent”节点,并展开。

右击“Jobs”节点,选择“New Job”来创建新的作业。

在“New Job”对话框中,输入作业名称和描述,然后选择“Schedules”标签页。

在“Schedules”标签页中,选择合适的时间表,如每天定时执行一次。

在“Steps”标签页中,选择之前创建的作业“StopMssqlService”。

在“Notifications”标签页中,设置作业完成后的通知方式。

单击“OK”完成作业的创建,并使其自动运行。

这样,MSSQL服务就会自动停止并重启。

2. MSSQL服务相关设置

在完成环境的相关设置之后,需要对MSSQL服务进行一些操作来实现自动启动与自动停止。

2.1 配置MSSQL自动启动

在默认情况下,MSSQL服务不会自动启动。但是,我们可以通过修改注册表的方式来实现MSSQL的自动启动。具体步骤如下:

进入注册表编辑器:Win+R打开运行窗口,输入regedit,打开注册表编辑器。

找到MSSQL相关项:在注册表中,找到“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SvcHost”项,右键单击,选择“新建”->“键值”。

输入键名:输入“MSSQL$<实例名>”作为键名,然后按下“Enter”键。

设置键值:将键值设置为“MSSQL$<实例名>”(不包含引号),然后按下“Enter”键,保存更改。

重启计算机:重启计算机使更改生效。

这样,MSSQL服务就会在每次开机后自动启动。

2.2 配置MSSQL自动停止

在默认情况下,MSSQL服务不会自动停止。但是,我们可以通过在注册表中增加一个键来实现MSSQL的自动停止。具体步骤如下:

进入注册表编辑器:Win+R打开运行窗口,输入regedit,打开注册表编辑器。

找到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control”项,右键单击,选择“新建”->“键值”。

输入键名:输入“WaitToKillServiceTimeout”作为键名,然后按下“Enter”键。

设置键值:将键值设置为“60000”(单位为毫秒),然后按下“Enter”键,保存更改。

这样,MSSQL服务就会在停止命令发送后60秒内自动停止。

3. 总结

本文介绍了如何设置MSSQL的自动启动与自动停止。在设置之前,需要对环境进行相关设置,例如将MSSQL服务设置为自动启动、创建一个Agent作业用于自动停止MSSQL服务等。而在设置MSSQL的自动启动与自动停止时,需要修改注册表信息。通过按照上述步骤操作,就能够轻松地实现MSSQL的自动启动和自动停止,提高了生产效率,减少了系统管理员的工作量。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签