最近、Azure SQLデータベースの新しいfor json auto
機能を使用しました。その後、SqlDataReaderとSQL Server 2016 JSONがjsonを2kバイトの塊で分割します
Select
Wiki.WikiId
, Wiki.WikiText
, Wiki.Title
, Wiki.CreatedOn
, Tags.TagId
, Tags.TagText
, Tags.CreatedOn
From
Wiki
Left Join
(WikiTag
Inner Join
Tag as Tags on WikiTag.TagId = Tags.TagId) on Wiki.WikiId = WikiTag.WikiId
For Json Auto
とC#SqlDataReader
で選択を行います:
私はこのクエリを使用して、たとえば、レコードの多くを選択
var connectionString = ""; // connection string
var sql = ""; // query from above
var chunks = new List<string>();
using (var connection = new SqlConnection(connectionString))
using (var command = connection.CreateCommand()) {
command.CommandText = sql;
connection.Open();
var reader = command.ExecuteReader();
while (reader.Read()) {
chunks.Add(reader.GetString(0)); // Reads in chunks of ~2K Bytes
}
}
var json = string.Concat(chunks);
私は、データのチャンクの多くを得ます。
なぜこの制限がありますか?すべてのものを1つの大きなチャンクで取得してみませんか?
nvarchar(max)
の列を読むと、すべてが1つのチャンクになります。 Format Query Results as JSON with FOR JSONから説明