日期:2014-05-17  浏览次数:20525 次

sqlserver在启动时出发什么事件
我在sqlserver中写了一个socket通信的服务端dll,create ASSEMBLY 注册到数据库了,因为是服务端,所以要在数据库开启的时候调用一下,应该在什么事件中写 数据库开启的时候都触发什么事件
sqlserver 数据库 socket 通信

------解决方案--------------------
use master 
go

--在数据库启动时,会自动调用这个存储过程,这个clr存储过程已注册
exec sp_procoption '存储过程名','startup','on' 



你在存储过程中,比如你是用c#写的,
你可以用c#代码去windows事件日志中去读取信息,然后记录到文件,或者表中。

c#代码,可以参考:http://www.cnblogs.com/luck0235/articles/834028.html

测试环境:.Net Framework 2.0、Windows Server 2003 SP2、Visual Studio 2005 SP1

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;

using System.Diagnostics;

public partial class Default3 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //Windows日志有:"Application"应用程序, "Security"安全, "System"系统
        string[] logs = new string[] { "Application", "System" };

        StringBuilder result = new StringBuilder();

        foreach (string log in logs)
        {
            EventLog myLog = new EventLog();
            myLog.Log = log;
            //myLog.MachineName = "rondi-agt0qf9op";
            foreach (EventLogEntry entry in myLog.Entries)
            {
                //EventLogEntryType枚举包括:
                //Error 错误事件。
                //FailureAudit 失败审核事件。
                //Information 信息事件。
                //SuccessAudit 成功审核事件。
                //Warning 警告事件。
               &n