从 mssql 触发器运行 php 脚本

Posted

技术标签:

【中文标题】从 mssql 触发器运行 php 脚本【英文标题】:running a php script from mssql trigger 【发布时间】:2012-03-15 16:11:08 【问题描述】:

如何从 MSSQL 触发器中运行 php 脚本(以运行 REST)命令?

我需要它在用户登录后从远程 Web 服务运行 REST 命令。

【问题讨论】:

【参考方案1】:

您确定要在数据库层执行此操作吗?

您是否希望您的数据库事务在您的 REST 请求返回时等待(并持有锁)?如果您的 Web 服务运行缓慢并在 1 分钟后超时,会发生什么情况?

这是可能的,但同样,请谨慎使用。

在 SQL Server 中,有一个名为 XP_CMDSHELL 的扩展存储过程,它允许您在命令行上运行脚本。 http://msdn.microsoft.com/en-us/library/ms175046.aspx

默认情况下它是禁用的,但您可以像这样启用它:

EXEC sp_configure 'show advanced options', 1
GO
EXEC sp_configure'xp_cmdshell', 1  
GO

然后在你的触发器中,你可以调用你的脚本:

xp_cmdshell 'C:\path\to\php\php.exe -f C:\Path\to\your\script.php'

如果您必须在数据库中执行此操作,我强烈建议您将 php 脚本移植到 .net 语言并将其作为 CLR 存储过程执行。这将更加安全,并且不太可能导致问题。

【讨论】:

谢谢你的回复,你说得对,这会扼住DB的脖子,你有什么建议?

以上是关于从 mssql 触发器运行 php 脚本的主要内容,如果未能解决你的问题,请参考以下文章

Python3 脚本在 shell 中运行良好,但在 PHP 中触发 UnicodeEncodeError

从 MySQL 触发器调用 PHP 脚本

mssql sqlserver 使用sql脚本 清空所有数据库表数据的方法分享

MSSQL 触发 *** 连接

MSsql数据库中的表级通知[关闭]

从Ethernet-Shield Arduino运行远程PHP脚本