pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

將參數從 C# 流式傳輸到 T-SQL SP?

Stream a parameter to T-SQL SP from C#?(將參數從 C# 流式傳輸到 T-SQL SP?)
本文介紹了將參數從 C# 流式傳輸到 T-SQL SP?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

是否可以將 XML 文件作為參數從 C# 應用程序流式傳輸到 MS SQL 存儲過程,而無需將其加載到 C# 端的內存中?

我擁有的 XML 文件非常大,大約 600MB,包含 200 萬個條目.可以想象,這需要大量內存.

一旦 SQL 上的 SP 從這些文件中插入/更新數據庫中的值,它就不再使用它們并且可以處理.

SQL 示例:

創建程序 [dbo].[AddAllFromList](@XmlData XML)開始用@XmlData 做點什么;結尾;

C# 示例

using (Stream XMLFileStream = new someFileInfo.OpenRead())使用 (SqlConnection Connection = new SqlConnection(SQLConnectionString)){var opensql = Connection.OpenAsync();SqlCommand sqlcommand = new SqlCommand("AddAllFromList", Connection){CommandType = System.Data.CommandType.StoredProcedure,命令超時 = 360};sqlcommand.Parameters.Add("@XmlData", SqlDbType.Xml).Value = XMLFileStream;嘗試{等待 sqlcommand.ExecuteNonQueryAsync()}抓住{Console.WriteLine("失敗");}

這樣的事情行得通嗎?有人有成功的案例嗎?

解決方案

對于如此大的負載,我建議無論如何分兩步完成.首先將其讀入臨時表,然后從那里完成其余的工作.

如果文件位于 SQL-Server 可以訪問的位置,您可以直接從 T-SQL 加載 XML.

這個問題要求上傳多個 XML(使用 CURSOR),但是你會看到怎么走.

這個問題解決了導出到 XML 的問題,但關于文件的編碼,有幾件重要的事情需要了解.>

這個問題涵蓋了一些人們可能會陷入的陷阱.

一般情況

  • C# 在任何情況下都對字符串使用 unicode(2 字節編碼).這樣的字符串可以傳遞給 SQL Server 的 NVARCHAR(MAX) 類型.如果 XML 格式正確,您可以將其直接傳遞給 XML 類型變量.

  • SQL-Server 的編碼非常有限.很多時候,這樣的大文件都是用 utf-8 存儲的.提供的鏈接提供了相關信息.

  • SQL-Server 沒有像您一樣運行.如果它在不同的機器上運行,它將看到其他驅動器和路徑,如您所見.而且權利也可能不同.

  • 無論是使用 C# 加載 XML 并將其傳遞給 SQL-Server 還是使用來自 T-SQL 的某些命令,數據量都將完全相同,必須從 A 傳送到 B.

  • 如果內存很重要,您可以將其分成幾部分.

Is it possible to stream an XML file to a MS SQL Stored Procedure as a parameter from a C# application without having to load it into memory on the c# end?

The XML files i have are quite large, ~600MB with 2mil entries. Which as you can imagine, takes a bucket load of memory.

Once the SP on SQL inserts/updates values in the database from these files it has no further use for them and can be disposed.

SQL Example:

CREATE PROCEDURE [dbo].[AddAllFromList] 
(
    @XmlData XML
)
BEGIN
    Do something with @XmlData;
END;

C# Example

using (Stream XMLFileStream = new someFileInfo.OpenRead())
using (SqlConnection Connection = new SqlConnection(SQLConnectionString))
{
    var opensql = Connection.OpenAsync();
    SqlCommand sqlcommand = new SqlCommand("AddAllFromList", Connection)
    {
        CommandType = System.Data.CommandType.StoredProcedure,
        CommandTimeout = 360
    };
    sqlcommand.Parameters.Add("@XmlData", SqlDbType.Xml).Value = XMLFileStream;
try
{
    await sqlcommand.ExecuteNonQueryAsync()
}
catch
{
    Console.WriteLine("Failed");
}

Would something like this work? Does anyone have any success stories?

解決方案

With such a big load I'd suggest to do this in two steps anyway. First read this into a staging table, then do the rest from there.

If the file is located where SQL-Server has access you can load the XML from T-SQL directly.

This question asks for the upload of multiple XMLs (using a CURSOR), but you will see how to go.

This question addresses the export to XML, but there are several important things to know about the file's encoding.

This question covers some traps one might get into.

In general

  • C# uses unicode (2-byte-encoding) in any case for strings. Such a string can be passed over to SQL Server's NVARCHAR(MAX) type. If the XML is well-formed you can pass it directly to an XML typed variable.

  • SQL-Server is very limited in encodings. Very often such big files are stored with utf-8. The provided links give information about that.

  • SQL-Server is not running as you. If it is running on a different machine it will see other drives and paths as you see. And the rights may be different too.

  • Whether you load the XML with C# and pass it over to SQL-Server or if you use some command from T-SQL will be quite the same amout of data, which must be shipped from A to B.

  • If memory matters you might split this in parts.

這篇關于將參數從 C# 流式傳輸到 T-SQL SP?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Modify Existing decimal places info(修改現有小數位信息)
The correlation name #39;CONVERT#39; is specified multiple times(多次指定相關名稱“CONVERT)
T-SQL left join not returning null columns(T-SQL 左連接不返回空列)
remove duplicates from comma or pipeline operator string(從逗號或管道運算符字符串中刪除重復項)
Change an iterative query to a relational set-based query(將迭代查詢更改為基于關系集的查詢)
concatenate a zero onto sql server select value shows 4 digits still and not 5(將零連接到 sql server 選擇值仍然顯示 4 位而不是 5)
主站蜘蛛池模板: 有机废气处理-rto焚烧炉-催化燃烧设备-VOC冷凝回收装置-三梯环境 | 复合肥,化肥厂,复合肥批发,化肥代理,复合肥品牌-红四方 | 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 亮点云建站-网站建设制作平台 | 二手注塑机回收_旧注塑机回收_二手注塑机买卖 - 大鑫二手注塑机 二手光谱仪维修-德国OBLF光谱仪|进口斯派克光谱仪-热电ARL光谱仪-意大利GNR光谱仪-永晖检测 | 太阳能发电系统-太阳能逆变器,控制器-河北沐天太阳能科技首页 | 亳州网络公司 - 亳州网站制作 - 亳州网站建设 - 亳州易天科技 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 谷梁科技 | 南京泽朗生物科技有限公司-液体饮料代加工_果汁饮料代加工_固体饮料代加工 | 大巴租车平台承接包车,通勤班车,巴士租赁业务 - 鸿鸣巴士 | 通风天窗,通风气楼,屋顶通风天窗,屋顶通风天窗公司 | 磁力抛光机_磁力研磨机_磁力去毛刺机_精密五金零件抛光设备厂家-冠古科技 | 半自动预灌装机,卡式瓶灌装机,注射器灌装机,给药器灌装机,大输液灌装机,西林瓶灌装机-长沙一星制药机械有限公司 | 引领中高档酒店加盟_含舍·美素酒店品牌官网 | 河南正规膏药生产厂家-膏药贴牌-膏药代加工-修康药业集团官网 | 无轨电动平车_轨道平车_蓄电池电动平车★尽在新乡百特智能转运设备有限公司 | 北京企业宣传片拍摄_公司宣传片制作-广告短视频制作_北京宣传片拍摄公司 | 东莞螺丝|东莞螺丝厂|东莞不锈钢螺丝|东莞组合螺丝|东莞精密螺丝厂家-东莞利浩五金专业紧固件厂家 | 长春网站建设,五合一网站设计制作,免费优化推广-长春网站建设 | 东莞市天进机械有限公司-钉箱机-粘箱机-糊箱机-打钉机认准东莞天进机械-厂家直供更放心! | 一体化隔油提升设备-餐饮油水分离器-餐厨垃圾处理设备-隔油池-盐城金球环保产业发展有限公司 | 一体化污水处理设备-一体化净水设备-「山东梦之洁水处理」 | 企业微信营销_企业微信服务商_私域流量运营_艾客SCRM官网 | 小港信息港-鹤壁信息港 鹤壁老百姓便民生活信息网站 | 西安标准厂房_陕西工业厂房_西咸新区独栋厂房_长信科技产业园官方网站 | 橡胶接头|可曲挠橡胶接头|橡胶软接头安装使用教程-上海松夏官方网站 | 河南中整光饰机械有限公司-抛光机,去毛刺抛光机,精密镜面抛光机,全自动抛光机械设备 | 曙光腾达官网-天津脚手架租赁-木板架出租-移动门式脚手架租赁「免费搭设」 | 浙江浩盛阀门有限公司| 苏州伊诺尔拆除公司_专业酒店厂房拆除_商场学校拆除_办公楼房屋拆除_家工装拆除拆旧 | 苏州防水公司_厂房屋面外墙防水_地下室卫生间防水堵漏-苏州伊诺尔防水工程有限公司 | 网站优化公司_北京网站优化_抖音短视频代运营_抖音关键词seo优化排名-通则达网络 | 医学模型生产厂家-显微手术模拟训练器-仿真手术模拟训练系统-北京医教科技 | 基业箱_环网柜_配电柜厂家_开关柜厂家_开关断路器-东莞基业电气设备有限公司 | 贴片电容代理-三星电容-村田电容-风华电容-国巨电容-深圳市昂洋科技有限公司 | 偏心半球阀-电动偏心半球阀-调流调压阀-旋球阀-上欧阀门有限公司 | 深圳公司注册-工商注册代理-注册公司流程和费用_护航财税 | 电杆荷载挠度测试仪-电杆荷载位移-管桩测试仪-北京绿野创能机电设备有限公司 | 不锈钢监控杆_监控立杆厂家-廊坊耀星光电科技有限公司 | 济南宣传册设计-画册设计_济南莫都品牌设计公司 |