How to configure a store proc automatically exec when SQL Server Services start
通过这个例子,我们将大致了解如何使用Raiserror抛出错误信息以及让SQLServer启动时自动运行存储过程.
1.先为我们的SQLServer增加一个错误号为50008的message,然后我们就可以使用这个信息,在本例子中我们将会看到这个信息会被应用程序日志中:
SP_ADDMESSAGE 50008, 16,
'The current database ID is:%d, the current date is: %s.'
GO
2.创建一个存储过程,此存储过程实现模拟一个错误处理过程,抛出错误号为50008的错误.
CREATE PROC UP_SETUPPROC
AS
BEGIN
DECLARE @DBID INT
SET @DBID = DB_ID()
DECLARE @TIME varchar(100)
SET @TIME = convert(varchar,getdate(),110)
RAISERROR (50008, 16, 1, @DBID, @TIME)
WITH log
END
3.打开高级配置选项:如果不打开此选项,我们看不到很多高级的数据库配置选项.
EXEC SP_CONFIGURE 'SHOW ADVANCED OPTION',1
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
Configuration option 'show advanced options' changed from 0 to 1. Run the RECONFIGURE statement to install.
THEN EXECUTE THE FOLLOW COMMAND:
RECONFIGURE
4.现在看一下当前的可以被配置的选项.
EXEC SP_CONFIGURE
可以看到与启动自动运行一个程序相关的选项是:
NAME MINIMUM MAXINUM CONFIG_VALUE RUN_VALUE
scan for startup procs 0 1 0 0
第一列是个选项的名字,下面的两个是这个选项的最小值和最大值,CONFIG_VALUE是当前的的配置值,RUN_VALUE是当前SQL Server
使用的值.
5.打开这个'scan for startup procs’选项,以使我们的SQLServer能够在启动时自动执行我们指定的存储过程:
EXEC SP_CONFIGURE 'scan for startup procs',1
RECONFIGURE
6:配置需要自动随SQLSERVER启动的存储过程,我们使用系统存储过程sp_procoption来进行设置,如下:
sp_procoption @ProcName = 'UP_SETUPPROC', @OptionName = 'startup',
@OptionValue = 'true'
7:重启SQLServer Services:
START->RUN->CMD->NET STOP MSSQLSERVER
START->RUN->CMD->NET START MSSQLSERVER
9:查看应用程序日志:现在我们看一下我们的应用程序日志,就会发现我有一个Error number为50008的的错误信息出现.
通过这个例子希望我们能够大致了解到RaiseError和怎么设置让一个存储过程随SQLServer 的启动而自动运行.
---Writen by 董晓涛
如何在启动SQL SERVER的时候,执行一个存储过程?
被过滤广告 将存储过程创建在master数据库中,然后企业管理器中找到这个存储过程--右键--属性--勾选"每当sql server启动时执行"。
--或者在master中创建存储过程后,执行语句设置为自动启动
use master
exec sp_procoption '存储过程名','startup','on'
---------------------------------------------------------------
自动执行存储过程 SQL Server 启动时可以自动执行一个或多个存储过程。这些存储过程必须由系统管理员创建,并在 sysadmin 固定服务器角色下作为后台过程执行。这些过程不能有任何输入参数。
对启动过程的数目没有限制,但是要注意,每个启动过程在执行时都会占用一个连接。如果必须在启动时执行多个过程,但不需要并行执行,则可以指定一个过程作为启动过程,让该过程调用其它过程。这样就只占用一个连接。
在启动时恢复了最后一个数据库后,即开始执行存储过程。若要跳过这些存储过程的执行,请将启动参数指定为跟踪标记 4022。如果以最低配置启动 SQL Server(使用 -f 标记),则启动存储过程也不会执行。有关更多信息,请参见跟踪标记。
若要创建启动存储过程,必须作为 sysadmin 固定服务器角色的成员登录,并在 master 数据库中创建存储过程。
使用 sp_procoption 可以:
将现有存储过程指定为启动过程。
阻止过程在 SQL Server 启动时执行。