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的自动启动和自动停止,提高了生产效率,减少了系统管理员的工作量。