First, parametrized roots are tricky, both with Root[] and with radicals. Branches come together and split, sometimes changing between real and complex, as the parameter values change. There is a canonical order to Root[] objects when the coefficients of the polynomial are explicit numerical values.
Nonetheless, sometimes it is possible to pick out, say, a root expression that is always positive. With a little human intervention, we can see below that the case at hand is one of these times. I don't know how to automate this. In particular, I feel the dimension reduction step, s -> Sqrt[ssq] σ, probably helps a lot.
assum = s > 0 && σ > 0 && n > 0 && d > 0;
pos = Solve[{CorrelationDPrime[s, σ, n] == d, s > 0} /.
{s -> Sqrt[ssq] σ, d -> Sqrt[dsq]}
, ssq, Reals
, Assumptions -> assum && dsq>0
] /.
{ssq -> rt_} :> {s -> σ*Sqrt@rt /. dsq -> d^2}
(*
{{s -> Sqrt[(3 d^2 + d^2 n)/(4 n) +
Sqrt[16 d^2 + 9 d^4 + 16 d^2 n + 6 d^4 n + d^4 n^2]/(4 n)] σ}}
*)
CorrelationDPrime[s, σ, n] == d /. pos // FullSimplify[#, assum] &
(* {True} *)
FullSimplify[s > 0 /. pos, assum]
(* {True} *)