从SQL触发器内部调用C#方法

从SQL触发器内部调用C#方法,c#,sql,visual-studio-2010,sql-server-2008,C#,Sql,Visual Studio 2010,Sql Server 2008,我喜欢使用C#和VisualStudio2010以及SQLServerManagementStudio 2008 R2的Winforms应用程序 我的应用程序检查数据库中以前的值,如果插入的当前值在某个范围内,我需要执行一个用C#即宿主语言编写的方法。该方法实际上将电子邮件发送到数据库中存储的电子邮件地址 现在,使用触发器可以轻松完成检查部分,但后者对我来说很麻烦 有人能帮我吗?有几种方法可以解决这个问题 您可以将一个条目记录到C#service监视的数据库中,当添加条目时,它会发送电子邮件。这

我喜欢使用C#和VisualStudio2010以及SQLServerManagementStudio 2008 R2的Winforms应用程序

我的应用程序检查数据库中以前的值,如果插入的当前值在某个范围内,我需要执行一个用C#即宿主语言编写的方法。该方法实际上将电子邮件发送到数据库中存储的电子邮件地址

现在,使用触发器可以轻松完成检查部分,但后者对我来说很麻烦


有人能帮我吗?

有几种方法可以解决这个问题

  • 您可以将一个条目记录到C#service监视的数据库中,当添加条目时,它会发送电子邮件。这可能是某种Windows服务,每1分钟在计时器上运行一次以检查更新
  • 您可以使用来集成C#代码和SQL代码。这需要打开几个安全点,并将项目中的二进制文件嵌入SQL Server。出于安全原因,这是一种不太受欢迎的方法,但它可以完成这项工作

  • 你可能想调查一下。这将在SQL Server中集成电子邮件发送功能


    否则,我强烈建议不要尝试直接在触发器中执行此操作-发送电子邮件可能是一个耗时的过程,如果电子邮件功能当前不起作用,您也不会希望延迟交易的完成。

    将使用方法1。如果我的Win Forms应用程序关闭,是否工作?假设n条记录被添加到数据库中,但当它们试图通过电子邮件发送时,用户关闭了应用程序。如果它真的有效,我们该怎么做?我认为mellamokb建议的(1)是第二个程序(一个windows服务,从数据库服务器上的windows操作系统开始),它监视表中的新条目,然后执行该工作。这是一种常见的模式,我知道有几个地方使用它。不需要运行主应用程序。