Utiliser SQL pour renvoyer une chaîne JSON

C'est une "meilleure pratique" en question. Nous avons des discussions à l'interne sur ce sujet et que vous souhaitez obtenir des commentaires d'un public plus large.

J'ai besoin de stocker mes données dans un traditionnel MS SQL Server table normale avec des colonnes et des lignes. J'ai parfois besoin de retourner un DataTable pour mon application web, et d'autres fois j'ai besoin de revenir un JSON chaîne.

Actuellement, je retourne à la table de la couche du milieu et de l'analyser dans un JSON chaîne. Cela semble bien fonctionner pour la plupart, mais parfois prendre du temps sur les grands ensembles de données (analyse des données, pas de retour de la table).

J'envisage de réviser les procédures stockées de manière sélective retour d'un DataTable ou un JSON chaîne. Je voudrais simplement ajouter un @isJson bit paramètre à la SP.

Si l'utilisateur voulait la chaîne au lieu de la table de la SP à l'exécution d'une requête comme ceci:

DECLARE @result varchar(MAX)
SELECT @result = COALESCE(@results ',', '') + '{id:"' + colId + '",name:"' + colName + '"}'
    FROM MyTable
SELECT @result

Ce produit quelque chose comme ce qui suit:

{id:"1342",name:"row1"},{id:"3424",name:"row2"}

Bien sûr, l'utilisateur peut également obtenir de la table en passant false à la @isJson paramètre.

Je veux être clair que le stockage des données n'est pas affectée, ni du point de vue existants et d'autres processus. C'est un changement pour que les résultats de certaines procédures stockées.

Mes questions sont:

  1. Quelqu'un a déjà essayé ce, dans une grande demande? Si oui, quel a été le résultat?
  2. Quelles questions avez-vous vu/peut-on s'attendre avec cette approche?
  3. Est-il un meilleur moyen plus rapide pour aller de table en JSON dans SQL Server autre que de modifier la procédure stockée de cette façon, l'analyse ou de la chaîne dans la couche du milieu?

source d'informationauteur davids | 2012-07-16