Мы столкнулись с той же проблемой.Возиться с БД не было возможным для нас ( и не должно быть для вас ), но вы можете обойти это.К сожалению, для обновления метаданных потребуется прикоснуться к каждой странице.
Сначала создайте столбец так, как он должен быть в списке.Затем вы можете копировать данные из старого столбца в новый столбец различными способами:
- Представление таблицы данных
- Программно через веб-службы (не требуется доступна сервер)
- Программно через консольное приложение (нужно будет запускать локально на сервере)
Честно говоря, написание небольшого консольного приложения будет самым быстрым.Например:
string siteUrl = "http://server/sitecollection/";
string webUrl = "subsite1/subsite2/";
string listName = "Your List Name";
using (SPSite site = new SPSite(siteUrl))
{
using (SPWeb web = site.OpenWeb(webUrl))
{
SPList list = web.Lists[listName];
foreach (SPListItem item in list.Items)
{
item["New_x0020_Column_x0020_Name"] = item["Old_x0020_Column_x0020_Name"];
}
}
}
Кроме того, он НАСТОЯТЕЛЬНО рекомендует сначала попробовать это в среде DEV.Просто выполните восстановление STSADM из производственной среды и протестируйте консольное приложение.Затем подтвердите свои данные и удалите старый столбец!