北宋开封祥符(今河南开封)人,字子元。以荫补官。端拱初,知定远军。时议调河南十三州民输饷,他以为军少粟多,不必劳民。后知梓州,镇压李顺、王小波起义。咸平初,知秦州,尽释羌人质子。景德三年(1006),擢签书枢密院事。时宋辽缔盟,他力言不可忘战去兵。大中祥符五年(1012)为枢密副使。出知潞州,移天雄军。天禧初,复知枢密院事,因病请罢,未几卒。