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)
主站蜘蛛池模板: 威客电竞(vk·game)·电子竞技赛事官网 | 考勤系统_人事考勤管理系统_本地部署BS考勤系统_考勤软件_天时考勤管理专家 | 冷却塔减速机器_冷却塔皮带箱维修厂家_凉水塔风机电机更换-广东康明冷却塔厂家 | 正压密封性测试仪-静态发色仪-导丝头柔软性测试仪-济南恒品机电技术有限公司 | 生态板-实木生态板-生态板厂家-源木原作生态板品牌-深圳市方舟木业有限公司 | 耐火砖厂家,异形耐火砖-山东瑞耐耐火材料厂 | 安徽合肥格力空调专卖店_格力中央空调_格力空调总经销公司代理-皖格制冷设备 | 一体化预制泵站-一体化提升泵站-一体化泵站厂家-山东康威环保 | 南京技嘉环保科技有限公司-杀菌除臭剂|污水|垃圾|厕所|橡胶厂|化工厂|铸造厂除臭剂 | 防火阀、排烟防火阀、电动防火阀产品生产销售商-德州凯亿空调设备有限公司 | 半自动预灌装机,卡式瓶灌装机,注射器灌装机,给药器灌装机,大输液灌装机,西林瓶灌装机-长沙一星制药机械有限公司 | 砍排机-锯骨机-冻肉切丁机-熟肉切片机-预制菜生产线一站式服务厂商 - 广州市祥九瑞盈机械设备有限公司 | 同步带轮_同步带_同步轮_iHF合发齿轮厂家-深圳市合发齿轮机械有限公司 | MOOG伺服阀维修,ATOS比例流量阀维修,伺服阀维修-上海纽顿液压设备有限公司 | 油漆辅料厂家_阴阳脚线_艺术漆厂家_内外墙涂料施工_乳胶漆专用防霉腻子粉_轻质粉刷石膏-魔法涂涂 | 量子管通环-自清洗过滤器-全自动反冲洗过滤器-沼河浸过滤器 | 航空障碍灯_高中低光强航空障碍灯_民航许可认证航空警示灯厂家-东莞市天翔航天科技有限公司 | 舞台木地板厂家_体育运动木地板_室内篮球馆木地板_实木运动地板厂家_欧氏篮球地板推荐 | 北京西风东韵品牌与包装设计公司,创造视觉销售力! | 建筑消防设施检测系统检测箱-电梯**检测仪器箱-北京宇成伟业科技有限责任公司 | 固诺家居-全屋定制十大品牌_整体衣柜木门橱柜招商加盟 | 无菌实验室规划装修设计-一体化实验室承包-北京洁净净化工程建设施工-北京航天科恩实验室装备工程技术有限公司 | 郑州水质检测中心_井水检测_河南废气检测_河南中环嘉创检测 | BHK汞灯-百科|上海熙浩实业有限公司 | 冷库安装厂家_杭州冷库_保鲜库建设-浙江克冷制冷设备有限公司 | 印刷人才网 印刷、包装、造纸,中国80%的印刷企业人才招聘选印刷人才网! | 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | 模具硅橡胶,人体硅胶,移印硅胶浆厂家-宏图硅胶科技 | 1000帧高速摄像机|工业高速相机厂家|科天健光电技术 | 山东led显示屏,山东led全彩显示屏,山东LED小间距屏,临沂全彩电子屏-山东亚泰视讯传媒有限公司 | 高低温万能试验机-复合材料万能试验机-馥勒仪器 | 对夹式止回阀_对夹式蝶形止回阀_对夹式软密封止回阀_超薄型止回阀_不锈钢底阀-温州上炬阀门科技有限公司 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | 薄壁轴承-等截面薄壁轴承生产厂家-洛阳薄壁精密轴承有限公司 | 下水道疏通_管道疏通_马桶疏通_附近疏通电话- 立刻通 | 便携式表面粗糙度仪-彩屏硬度计-分体式粗糙度仪-北京凯达科仪科技有限公司 | 云南标线|昆明划线|道路标线|交通标线-就选云南云路施工公司-云南云路科技有限公司 | 收录网| 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 电磁流量计_智能防腐防爆管道式计量表-金湖凯铭仪表有限公司 | 科昊仪器超纯水机系统-可成气相液氮罐-美菱超低温冰箱-西安昊兴生物科技有限公司 |