数千のレコードを返すストアド プロシージャがあります。この SP の出力に XSL を適用する必要があります。それを行うための最良の方法は何でしょうか
- データセットのデータを読み取り、XmlDataDocument を使用して XSL を適用する
- SP から XML を出力し、それに XSL を適用する
2 については、XML のサイズが大きくなりすぎて、それを読み取る C# コードがタイムアウトになることが心配です。提案してください。
数千のレコードを返すストアド プロシージャがあります。この SP の出力に XSL を適用する必要があります。それを行うための最良の方法は何でしょうか
2 については、XML のサイズが大きくなりすぎて、それを読み取る C# コードがタイムアウトになることが心配です。提案してください。
SqlXmlCommand
名前空間の型を使用できますMicrosoft.Data.SqlXml
。
ここのmsdnから:
SqlXmlCommand cmd = new SqlXmlCommand(ConnString);
cmd.CommandText = "SELECT TOP 20 FirstName, LastName FROM Person.Contact FOR XML AUTO";
cmd.XslPath = "MyXSL.xsl";
cmd.RootTag = "root";
...etc
タイムアウトが心配な場合は、接続文字列に大きなタイムアウトを設定してください。
プラットフォームでも同様のアプローチを使用しています。ただし、MS SQL Server Expressを使用しており、XSLを適用できないため、ストアドプロシージャにXSLを直接適用しません。少なくとも、この特定の主題を探しているときに私が見つけたのは、そのような変換にはMSSQLServerの優れたバージョンが必要です。
XMLを出力するストアドプロシージャは大きくて不潔であり(ただしスムーズに実行されます)、結果を読み戻すのに問題はありません。リクエストごとに最大で数秒、通常は結果として数千行になり、複数のテーブルを結合します。TelerikコンポーネントでのVS2010およびVB.Netの使用。