### Body

Currently `start_date` is mandatory parameter.
For DAGs with `schedule=None` we can relax this requirement as no scheduling calculation needed so the `start_date` parameter isn't used.

### Committer

- [X] I acknowledge that I am a maintainer/committer of the Apache Airflow project.
return self.execution_date
    def get_state(self):
        return self._state
    def set_state(self, state: DagRunState) -> None:
        if state not in State.dag_states:
            raise ValueError(f"invalid DagRun state: {state}")
        if self._state != state:
            self._state = state
            self.end_date = timezone.utcnow() if self._state in State.finished_dr_states else None
            if state == DagRunState.QUEUED:
                self.queued_at = timezone.utcnow()
    @declared_attr
    def state(self):
        return synonym("_state", descriptor=property(self.get_state, self.set_state))
    @provide_session
    def refresh_from_db(self, session: Session = NEW_SESSION) -> None:
        """
        Reload the current dagrun from the database.
        :param session: database session
        """
        dr = session.scalars(
            select(DagRun).where(DagRun.dag_id == self.dag_id, DagRun.run_id == self.run_id)
        ).one()
        self.id = dr.id
        self.state = dr.state
    @classmethod
    @provide_session
    def active_runs_of_dags(