Проще говоря, как увеличить ограничение nvarchar (MAX), чтобы оно содержало 280 МБ текста, а не только 8000 МБ (поправьте меня, если я ошибаюсь)?
Итак, для моего финального проектаЯ делаю веб-сканер для клиента, который хочет иметь собственную настраиваемую поисковую систему для своего библиотечного веб-сайта, но моя проблема возникает, когда я пытаюсь сохранить информацию, полученную сканерами.
В частности, проблема, с которой я столкнулсяявляется то, что даже если я установлю для столбца "HTML" значение nvarchar (MAX), которое должно содержать 2 ГБ данных, оно не сохранит никакой информации, в данном случае 280 МБ, потому что это слишком долго.
Я попытался сократить длину сохраняемого текста, и когда я сделал его достаточно коротким, он наконец согласился сохранить данные, поэтому, насколько я понимаю, они ограничены.
РЕДАКТИРОВАТЬ: Кодпримеры по запросу
класс контейнера страницы:
public class Page
{
public int ID = -1;
public String URL;
public String HeadLine;
public List<String> Tags;
public String Description;
public String HTML;
public DateTime lastUpdate;
}
Фрагмент кода, когда сканер сохраняет найденную страницу:
//Save Page content to Database
Page page = new Page();
page.URL = url;
page.HeadLine = headline;
page.Tags = tags.Split(',').Where(s => !string.IsNullOrWhiteSpace(s)).ToList();
page.Description = description;
page.HTML = HTML;
page.lastUpdate = DateTime.Today;
new DBpage(Settings.instance.DBaddress,
Settings.instance.DBname).SavePage(page);
Метод, используемый для храненияЗвоните данные:
public void SavePage(Page page) {
String SqlString = "";
//Check is a page by the given URL already exists in the database and assign the SQL string acordingly
Page foundPage = GetPage(page.URL);
if(foundPage == null) {
SqlString = "INSERT INTO WebContent " +
"VALUES (@URL, @HeadLine, @Tags, @Description, @HTML, @LastUpdate)";
}
else {
SqlString = "UPDATE WebContent " +
"SET URL = @URL, HeadLine = @HeadLine, Tags = @Tags, Description = @Description, HTML = @HTML, LastUpdate = @LastUpdate " +
//"SET URL = '" + page.URL + "', HeadLine = '" + page.HeadLine + "', Tags = '" + String.Join(",", page.Tags) + "', Description = '" + page.Description + "', HTML = '" + page.HTML.Replace("'", "''") + "', LastUpdate = " + page.lastUpdate + " " +
"WHERE ID = " + foundPage.ID;
}
//Assign all variables and execute the SQL
try {
using(DBaccess db = new DBaccess(dblocation, dbname)) {
String html = page.HTML.Replace("'", "''"); //Replace all single quotes with double "single quotes" to escape the first single quote.
SqlCommand sqlCmd = db.GetSqlCommand(SqlString);
sqlCmd.Parameters.AddWithValue("@URL", page.URL);
sqlCmd.Parameters.AddWithValue("@HeadLine", page.HeadLine);
sqlCmd.Parameters.AddWithValue("@Tags", String.Join(",", page.Tags));
sqlCmd.Parameters.AddWithValue("@Description", page.Description);
sqlCmd.Parameters.AddWithValue("@HTML", html);
sqlCmd.Parameters.AddWithValue("@LastUpdate", page.lastUpdate);
sqlCmd.ExecuteNonQuery();
}
}
catch(SqlException e) {
Console.WriteLine(e.Message);
}
}
Печальный результат, который меня озадачивает: ![HTML is missing from this table](https://i.stack.imgur.com/bRLNy.png)