You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Automate同步SQL Server时替代诊所结束日期默认1900-01-01排查

问题:替代诊所结束日期同步至SQL Server时被设为默认值1900-01-01

场景概述

我搭建了一套自动化流程:通过MS Forms收集医师提交的主诊所及替代诊所结束日期,再通过Power Automate将数据同步到SQL Server。目前主诊所的结束日期更新完全正常,但所有替代诊所的结束日期始终被插入SQL默认值1900-01-01,而非表单中选择的日期。

流程步骤

  • 医师提交MS Forms表单,填写主诊所+最多3个替代诊所的结束日期
  • Power Automate捕获表单提交事件,提取数据后调用SQL Server存储过程
  • 执行存储过程UpdatePhysicianClinicInfo更新mh_clinics_physicians表中的结束日期字段

环境

  • SQL Server
  • 使用Azure Data Studio管理数据库

已尝试的解决动作

  • 直接执行SQL UPDATE语句插入替代诊所日期:正常生效
  • 在Power Automate中对日期字段进行格式化(转为yyyy-MM-dd格式):无效
  • 在存储过程内添加参数非空校验逻辑:无效
  • 手动调用存储过程传入替代诊所日期参数:可正常更新目标字段,但自动化流程调用时失效

存储过程核心代码片段

WHILE @i <= 3
BEGIN
    SET @EndDate = CASE
                       WHEN @i = 0 THEN @EndDateForCurrentPrimaryClinic
                       WHEN @i = 1 THEN @EndDateForCurrentAlternateClinic1
                       WHEN @i = 2 THEN @EndDateForCurrentAlternateClinic2
                       WHEN @i = 3 THEN @EndDateForCurrentAlternateClinic3
                   END;

    SET @ClinicName = CASE
                          WHEN @i = 0 THEN @CurrentPrimaryClinicName
                          WHEN @i = 1 THEN @CurrentAlternateClinicName1
                          WHEN @i = 2 THEN @CurrentAlternateClinicName2
                          WHEN @i = 3 THEN @CurrentAlternateClinicName3
                      END;

    SET @PortionOfPractice = CASE 
                                 WHEN @i = 0 THEN 'Primary'
                                 ELSE 'Alternate'
                             END;

    IF @ClinicName IS NOT NULL
    BEGIN
        SELECT @ClinicID = clinic_id 
        FROM mh_clinics 
        WHERE clinic_name = @ClinicName;
    END

    IF @EndDate IS NOT NULL
    BEGIN
        UPDATE mh_clinics_physicians 
        SET date_left_clinic = @EndDate,
            date_modified = GETDATE(),
            modified_by = @ModifiedBy
        WHERE physician_id = @PhysicianID 
          AND clinic_id = @ClinicID 
          AND portion_of_practice = @PortionOfPractice;
    END

    SET @i = @i + 1;
END

目标表mh_clinics_physicians示例数据

clinics_physicians_IDphysician_idphysician_nameclinic_idclinic_nameportion_of_practicedate_active_in_clinicdate_left_clinic
304254John Doe3Clinic APrimary2023-11-032023-11-18
305254John Doe4Clinic BAlternate2023-11-031900-01-01
306254John Doe5Clinic CAlternate2023-11-201900-01-01

排查方向

  1. 校验Power Automate参数传递:检查替代诊所日期参数在传递时是否存在值丢失或类型不匹配。比如表单未填写时是否传递空值,或者日期格式在传递中被转为非SQL兼容的字符串,导致存储过程无法识别,触发字段默认值。
  2. 检查存储过程参数定义:确认@EndDateForCurrentAlternateClinic1/2/3的参数类型是否为DATE或DATETIME,同时核对Power Automate中传递的参数名与存储过程定义是否完全一致(大小写、拼写)。
  3. 验证ClinicID匹配逻辑:处理替代诊所时,检查@ClinicName是否能在mh_clinics表中匹配到对应的clinic_id。如果clinic_id为NULL,UPDATE语句的WHERE条件不满足,若表中date_left_clinic字段存在默认值,可能会被误插入(需结合执行日志确认是否进入UPDATE分支)。
  4. 查看Power Automate运行日志:调取流程运行日志,确认传递给存储过程的替代诊所日期参数值是否正确,是否在传递过程中被篡改或丢失。
  5. 捕获SQL执行日志:启用SQL Server的执行日志,记录自动化流程调用存储过程时的实际参数值,与手动调用时的参数对比,定位差异点。

内容的提问来源于stack exchange,提问作者slickspidey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 00:07:03