Acredito que o db_ddladmin é destinado a esse propósito. Não lhes dará a capacidade de dados CRUD, então eles também precisarão do db_datawriter e do db_datareader também.
Dito isto, não tenho 100% de certeza de que isso impedirá que o usuário solte o banco de dados, portanto, talvez você queira testá-lo.
Se isso não atender às suas necessidades, você precisará definir sua própria função. No nó Segurança do banco de dados, você deseja criar uma nova função de banco de dados. Você pode então adicionar um Securable para o banco de dados, que conterá muitas das permissões que você está procurando.