自动定时重启sql server回收内存 [转自 http://www.chinaz.com/Program/MSSQL/11264E512008.html]
我突然想到了windows自带的计划任务,我们可不可以利用计划任务来定时重新启动sqlserver呢?
现在脉络基本清楚,基于平时重新启动sqlserver 时经常提示要关闭自动备份功能(也就是sqlserver代理),于是我新建一个记事本,然后重命名为sql.bat ,单击右键编辑输入以下内容
以下为引用的内容: net stop sqlserveragent net stop mssqlserver net start mssqlserver net start sqlserveragent |
基于这样的内容,自动运行时不会出现任何提示,不信大家可以试试看更换或者删减下上面的4个语句,运行后应该都会有提示,需要手工操作才可以。
下面就是在控制面板里面新建一个计划任务了,这里省掉。
http://www.itpub.net/thread-271710-1-1.html
1、使用dos命令做个批处理;
2、执行批处理文件(或做到计划任务里,定时执行)
用xp_cmdshell 重启SQL服务应该可以
-------------------------------------------------------------------------------------
god,都是被win惯坏的孩子。
dos是操作系统。现在一般说Use DOS command 就是要你用命令行。
楼住要代码吗?用delphi编译
// W3SVC ---Web Service MSSQLSERVER --- MS SQL Service OverTime 为超时处理,单位秒
Function CtrlService(ServiceName: string; Status: Boolean; OverTime:Integer): Boolean; //控制WINDOWS的服务启动与停止
var
lpServiceArgVectors: Pchar;
hscmanager, hService: SC_HANDLE;
returnstatus: TServiceStatus;
i:Integer;
begin
Result := True;
lpServiceArgVectors := nil;
hscmanager := OpenSCManager(nil, nil, SC_MANAGER_ENUMERATE_SERVICE); // 打开service control manager database
if hscmanager = 0 then begin Result := False; exit; end;
hService := OpenService(hscmanager, Pchar(ServiceName), SERVICE_ALL_ACCESS); //打开W3SVC服务
if hService = 0 then
begin
CloseServiceHandle(hscmanager);
CloseServiceHandle(hService);
Result := False;
exit;
end;
if not QueryServiceStatus(hService, returnstatus) then
begin
CloseServiceHandle(hscmanager);
CloseServiceHandle(hService);
Result := False;
exit;
end; //查看该Service的状态
i:=0;
if Status then //如果是启动服务
begin
if (returnstatus.dwCurrentState = SERVICE_STOPPED) and (not StartService(hService, 0, lpServiceArgVectors)) then
Result := False
else
while (i<OverTime) and (returnstatus.dwCurrentState <> SERVICE_RUNNING) do
begin
Sleep(1000);
QueryServiceStatus(hService, returnstatus);
Application.ProcessMessages;
inc(i);
end;
CloseServiceHandle(hscmanager);
CloseServiceHandle(hService);
exit;
end
else //如果是停止服务
begin
if (returnstatus.dwCurrentState = SERVICE_RUNNING) and (not ControlService(hService, SERVICE_CONTROL_STOP, returnstatus)) then
Result := False
else
while (i<OverTime) and (returnstatus.dwCurrentState <> SERVICE_STOPPED) do
begin
Sleep(1000);
QueryServiceStatus(hService, returnstatus);
Application.ProcessMessages;
inc(i);
end;
CloseServiceHandle(hscmanager);
CloseServiceHandle(hService);
exit;
end;
end;
-------------------------------------------------------------------------------------
我这有个简单的:
1、写批处理语句:(停止服务)
NET STOP MSSQLSERVER
NET STOP SQLEXECUTIVE
net stop "SQLSERVERAGENT"
将语句保存在.bat文件中(比如stop.bat)
2、写批处理语句:(启动服务)
NET START MSSQLSERVER
NET START SQLEXECUTIVE
net start "SQLSERVERAGENT"
将将语句保存在.bat文件中(比如start.ba't)
3、这两个.bat文件可以直接执行,也可以放在计划任务中调度。
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------