首页 > 解决方案 > Sql Server 触发器和 PHP

问题描述

我在 al Sql Server 中有以下触发器

AFTER INSERT AS
BEGIN
DECLARE @exe nvarchar(255);
DECLARE @exe2 nvarchar(255);
DECLARE @idEmpl nvarchar(255);
DECLARE @fecha nvarchar(255);
DECLARE @entSal nvarchar(255);

SELECT @idEmpl = Id_de_People, @fecha = CONVERT(varchar,cast(60*60*24*(cast(Fecha as float)-25567) as int)-3600-7200), @entSal = EntSal FROM inserted;

SET @exe = 'C:\Program Files\PHP\v7.2\php.exe -f "C:\inetpub\wwwroot\marcaje_to_attendance.php" idEmpl=' + @idEmpl +' fecha='+ @fecha +' entSal='+ @entSal +'';
EXEC xp_cmdshell @exe;

SET @exe2 = '"C:\Program Files\PHP\v7.2\php.exe" -f C:\inetpub\wwwroot\attendance_bulk_2.php idEmpl=' + @idEmpl +' fecha='+ @fecha +' entSal='+ @entSal +'';
EXEC xp_cmdshell @exe2;

INSERT INTO log_trigger (log_fecha, log_id_empleado, momento_entrada, ent_o_sal) VALUES (@fecha, @idEmpl, GETDATE(), @entSal) ;

此代码调用任何插入(数据库每秒接收一些插入)到一个 php 文件,该文件接收该值以与其他系统连接。

我的问题是我的 php 没有收到任何调用,因为我为它们的任何调用写了一个日志。

我不知道如何查看触发器的 SQL Server 日志,或者触发器代码中是否有任何错误。

我将插入插入到其他表中,以了解触​​发器是否有效,这没关系,因为我看到了每一行的插入。

你能帮助我吗?。

谢谢

标签: phpsqlsql-servertriggers

解决方案


您说插入到log_trigger工作正常,但对 php.exe 的调用似乎没有发生。

在这种情况下,问题可能出在您的 php 文件内部,或者可能是您指定的位置不存在 php.exe 的结果。您在 SQL Server 的那个位置安装了 php.exe?


推荐阅读