D盘

workspace
posts - 165, comments - 53, trackbacks - 0, articles - 0
  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

How to configure a store proc automatically exec when SQL Server Services start

 

通过这个例子,我们将大致了解如何使用Raiserror抛出错误信息以及让SQLServer启动时自动运行存储过程.

 

1.先为我们的SQLServer增加一个错误号为50008message,然后我们就可以使用这个信息,在本例子中我们将会看到这个信息会被应用程序日志中:

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 number50008的的错误信息出现.

 

 

 

通过这个例子希望我们能够大致了解到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 启动时执行。
只有注册用户登录后才能发表评论。