คำถามติดแท็ก xml

ย่อมาจาก 'eXtensible Markup Language' ภาษามาร์กอัปข้อความสำหรับการถ่ายโอนข้อมูลที่มีโครงสร้าง

2
การปรับแผนให้เหมาะสมด้วยตัวอ่าน XML
ดำเนินการค้นหาจากที่นี่เพื่อดึงเหตุการณ์ deadlock ออกจากเซสชันเพิ่มเติมของเหตุการณ์ที่ขยายเริ่มต้น SELECT CAST ( REPLACE ( REPLACE ( XEventData.XEvent.value ('(data/value)[1]', 'varchar(max)'), '<victim-list>', '<deadlock><victim-list>'), '<process-list>', '</victim-list><process-list>') AS XML) AS DeadlockGraph FROM (SELECT CAST (target_data AS XML) AS TargetData FROM sys.dm_xe_session_targets st JOIN sys.dm_xe_sessions s ON s.address = st.event_session_address WHERE [name] = 'system_health') AS Data CROSS APPLY TargetData.nodes ('//RingBufferTarget/event') AS …

1
ประสิทธิภาพที่แปลกประหลาดมากกับดัชนี XML
คำถามของฉันเป็นไปตามนี้: https://stackoverflow.com/q/35575990/5089204 เพื่อให้คำตอบนั้นฉันได้ทำการทดสอบสถานการณ์ต่อไปนี้ สถานการณ์การทดสอบ ก่อนอื่นฉันจะสร้างตารางทดสอบและเติมเต็ม 100.000 แถว ตัวเลขสุ่ม (0 ถึง 1,000) ควรนำไปสู่ ​​~ 100 แถวสำหรับแต่ละหมายเลขสุ่ม หมายเลขนี้ถูกใส่ในคอลัมน์ varchar และเป็นค่าใน XML ของคุณ จากนั้นฉันจะโทรเช่น OP มีความต้องการด้วย. exist () และ. nodes () โดยมีข้อได้เปรียบเล็กน้อยสำหรับวินาที แต่ทั้งคู่ใช้เวลา 5 ถึง 6 วินาที ในความเป็นจริงฉันทำการโทรสองครั้ง: ครั้งที่สองในลำดับที่สลับกันและเปลี่ยนการค้นหาเล็กน้อยและใช้ "// item" แทนพา ธ เต็มเพื่อหลีกเลี่ยงผลบวกปลอมผ่านผลลัพธ์หรือแผนแคช จากนั้นฉันจะสร้างดัชนี XML และทำการโทรเดียวกัน ตอนนี้ - อะไรทำให้ฉันประหลาดใจจริงๆ! - the .nodeswith …

2
LOB_DATA สแกนตารางช้าและคำถาม I / O บางข้อ
ฉันมีตารางที่ค่อนข้างใหญ่โดยหนึ่งในคอลัมน์เป็นข้อมูล XML และขนาดเฉลี่ยของรายการ XML อยู่ที่ประมาณ 15 กิโลไบต์ คอลัมน์อื่น ๆ ทั้งหมดเป็น ints ปกติ bigints GUIDs ฯลฯ หากต้องการมีตัวเลขที่เป็นรูปธรรมสมมติว่าตารางมีหนึ่งล้านแถวและมีขนาดประมาณ 15 GB สิ่งที่ฉันสังเกตคือตารางนี้ช้ามากในการเลือกข้อมูลจากถ้าฉันต้องการเลือกคอลัมน์ทั้งหมด เมื่อฉันทำ SELECT TOP 1000 * FROM TABLE ใช้เวลาประมาณ 20-25 วินาทีในการอ่านข้อมูลจากดิสก์ - แม้ว่าฉันจะไม่ได้กำหนดผลลัพธ์ไว้ก็ตาม ฉันเรียกใช้แบบสอบถามด้วยแคชเย็น (เช่นหลังจากDBCC DROPCLEANBUFFERS) นี่คือผลสถิติ IO: จำนวนการสแกน 1, อ่านโลจิคัล 364, อ่านฟิสิคัล 24 อ่านล่วงหน้าอ่าน 7191, ล็อบโลจิคัลอ่าน 7924, lob ฟิสิคัลอ่าน 1690, lob …

4
สำหรับ XML ไม่สามารถทำให้ข้อมูลเป็นอนุกรมเนื่องจากมีอักขระ (0x0000)
ฉันมีคำถามใหญ่ (ถ้าจำเป็นฉันจะโพสต์ไว้ที่นี่) และฉันได้รับข้อผิดพลาดนี้: ข่าวสารเกี่ยวกับ 6841, ระดับ 16, สถานะ 1, บรรทัดที่ 1 สำหรับ XML ไม่สามารถทำให้เป็นอนุกรมข้อมูลสำหรับโหนด 'NoName' เนื่องจากมีอักขระ (0x0000) ซึ่งไม่ได้รับอนุญาตใน XML ในการดึงข้อมูลนี้โดยใช้ FOR XML ให้แปลงเป็นประเภทข้อมูลไบนารี, varbinary หรือรูปภาพและใช้คำสั่ง BINARY BASE64 ส่วนเดียวที่ฉันใช้FOR XMLอยู่ที่นี่: WHERE (CodFuncionario = Results.CodFuncionario) FOR XML PATH(''), TYPE).value('(./text())[1]', 'VARCHAR(MAX)'), 1, 2, '') AS [Experiencia] แต่อะไรนะnode noname? และฉันจะมองหาค่านี้ได้อย่างไร:(0x0000) นี่เป็นหนึ่งในแบบสอบถามย่อย (ส่วนเดียวที่ฉันมีสำหรับ XML): SELECT …

2
การแปลง VARCHAR เป็น VARBINARY
ฉันได้เก็บบันทึกข้อความค้นหาที่ใช้งานราคาแพงพร้อมกับแผนแบบสอบถามไว้ในตารางเพื่อให้เราสามารถตรวจสอบแนวโน้มด้านประสิทธิภาพและระบุพื้นที่ที่ต้องการเพิ่มประสิทธิภาพ อย่างไรก็ตามมาถึงจุดที่แผนการสืบค้นใช้พื้นที่มากเกินไป (เนื่องจากเราจัดเก็บทั้งแผนกับแต่ละแบบสอบถาม) ฉันจึงพยายามทำให้ข้อมูลที่มีอยู่เป็นปกติด้วยการแยก QueryPlanHash และ QueryPlan ไปยังตารางอื่น CREATE TABLE QueryPlans ( QueryPlanHash VARBINARY(25), QueryPlan XML, CONSTRAINT PK_QueryPlans PRIMARY KEY ( QueryPlanHash ) ); เนื่องจากคำจำกัดความของquery_plan_hashin sys.dm_exec_query_statsเป็นเขตข้อมูลไบนารี (และฉันจะแทรกข้อมูลใหม่เป็นประจำ) ฉันจึงใช้VARBINARYกับชนิดข้อมูลในตารางใหม่ของฉัน อย่างไรก็ตามการแทรกด้านล่างล้มเหลว ... INSERT INTO QueryPlans ( QueryPlanHash, QueryPlan ) SELECT queryplanhash, queryplan FROM ( SELECT p.value('(./@QueryPlanHash)[1]', 'varchar(20)') queryplanhash, QueryPlan, ROW_NUMBER() OVER (PARTITION …

3
SQL Server เปลี่ยนโครงสร้าง XML เมื่อแทรก
ฉันกำลังแทรกข้อมูล XML บางอย่างไปยังคอลัมน์ XML ใน SQL server แต่หลังจากที่แทรกข้อมูลแล้วมันก็ถูกเปลี่ยนแปลงโดยเซิร์ฟเวอร์ sql นี่คือข้อมูลที่ฉันใส่ <xsl:value-of select="name/n/given" /> <xsl:text> </xsl:text> <xsl:value-of select="name/n/family" /> เมื่อฉันอ่านมันกลับมาดูเหมือนว่านี้ <xsl:value-of select="name/n/given" /> <xsl:text /> <xsl:value-of select="name/n/family" /> ใส่ใจกับบรรทัดที่สอง นี่เป็นปัญหาเนื่องจากจะเปลี่ยนวิธีที่เอาต์พุตการแปลง XSLT จะเป็น ตัวอย่างแรกจะสร้างช่องว่างระหว่างชื่อที่ให้และชื่อสกุลในขณะที่สองจะไม่สร้างช่องว่างใด ๆ ดังนั้นมันจะเป็นเหมือน JohnJohnsen ในขณะที่คนแรกจะเป็นเหมือน John Johnsen มีวิธีแก้ปัญหานี้ไหม?
15 sql-server  xml 

3
เชื่อมค่าทั้งหมดขององค์ประกอบ XML เดียวกันโดยใช้ XPath / XQuery
ฉันมีค่า XML ดังนี้: <R> <I>A</I> <I>B</I> <I>C</I> ... </R> ฉันต้องการที่จะเชื่อมทุกค่าและพวกเขากลับเป็นสตริงเดียว:IABC... ตอนนี้ฉันรู้แล้วว่าฉันสามารถทำลาย XML, รวมผลลัพธ์กลับเป็น XML แบบไม่มีโหนดและนำ.values('text()[1]', ...)ไปใช้กับผลลัพธ์: SELECT ( SELECT n.n.value('text()[1]', 'varchar(50)') AS [text()] FROM @MyXml.nodes('/R/I') AS n (n) FOR XML PATH (''), TYPE ).value('text()[1]', 'varchar(50)') ; อย่างไรก็ตามฉันต้องการทำทุกอย่างที่ใช้วิธี XPath / XQuery เท่านั้นสิ่งนี้: SELECT @MyXml. ? ( ? ); มีวิธีดังกล่าวหรือไม่? เหตุผลที่ฉันกำลังมองหาวิธีแก้ปัญหาในทิศทางนี้เป็นเพราะ XML …

1
ฉันจะทำลาย XML ของเหตุการณ์ขยายนี้ได้เร็วที่สุดเท่าที่จะเป็นไปได้อย่างไร
ฉันสร้างเซสชันเพิ่มเติมในเหตุการณ์ใน SQL Server 2008 R2 เซสชั่นจะทำงานและรวบรวมกิจกรรมตามที่เกิดขึ้นเช่นเดียวกับที่คุณคาดหวัง ถ้าฉันฉีก xml เมื่อมีเหตุการณ์ค่อนข้างน้อยประสิทธิภาพเป็นที่ยอมรับได้ เมื่อฉันมีเหตุการณ์นับพันใช้เวลานานในการฉีก xml ฉันรู้ว่าฉันกำลังทำสิ่งผิดปกติฉันไม่มีความรู้เพียงพอเกี่ยวกับ internals ของเอ็นจิน XML เพื่อทำความเข้าใจกับสิ่งที่ นี่คือคำจำกัดความของเซสชันเพิ่มเติมของฉัน: IF EXISTS ( SELECT 1 FROM sys.server_event_sessions dxs WHERE dxs.name = 'queries' ) BEGIN IF EXISTS ( SELECT 1 FROM sys.dm_xe_sessions dxs WHERE dxs.name = 'queries' ) BEGIN ALTER EVENT SESSION queries ON …

2
sp_send_dbmail กระบวนงานที่เก็บไว้ส่งพร้อมแนบ
ฉันได้รับมอบหมายให้ส่งรายงานรายเดือนเล็ก ๆ ให้กับหนึ่งในลูกค้าของฉัน รายงานก่อนหน้านี้ได้รับการดำเนินการด้วยตนเองในอินสแตนซ์เอาท์พุทคัดลอกไปยังสเปรดชีตและส่งให้กับลูกค้าเป็นสิ่งที่แนบมา ฉันกำลังมองหาโซลูชันที่ถาวรกว่าดังนั้นฉันตั้งใจจะใช้sp_send_dbmailขั้นตอนการจัดเก็บเพื่อเรียกใช้แบบสอบถามและส่งเป็นสิ่งที่แนบมา ทุกอย่างทำงานได้ แต่การจัดรูปแบบของข้อความ ตอนแรกฉันพยายามแนบผลลัพธ์เป็นไฟล์ CSV ด้วย@query_result_seperator = ','แต่ผลลัพธ์มีอยู่ทุกที่! เมื่อฉันเรียกใช้รายงานตามปกติผลลัพธ์ที่ได้จะดูดีใน SQL แต่การส่งเป็น CSV หรือเพียงแค่ในเนื้อหาของข้อความไม่ได้ ฉันคิดว่ามันอาจทำงานได้ดีกว่าถ้าฉันส่งออกผลลัพธ์เป็น HTML และส่งเป็นไฟล์แนบ / หรือเป็น XML แต่ฉันไม่รู้วิธีการทำเช่นนี้ ไม่มีใครมีข้อเสนอแนะใด ๆ ? ขอบคุณล่วงหน้า!

1
ทำไมดัชนีการเลือกรองไม่ได้ใช้เมื่อตัวกรองส่วนคำสั่ง where บน value () `?
ติดตั้ง: create table dbo.T ( ID int identity primary key, XMLDoc xml not null ); insert into dbo.T(XMLDoc) select ( select N.Number for xml path(''), type ) from ( select top(10000) row_number() over(order by (select null)) as Number from sys.columns as c1, sys.columns as c2 ) as N; ตัวอย่าง XML …

4
วิธีเก็บข้อมูลในฐานข้อมูลโดยไม่มีตาราง
สิ่งที่ฉันเรียนรู้ในโรงเรียนคือ SQL ซึ่งบันทึกข้อมูลลงในตาราง ตอนนี้ฉันกำลังทำงานในโครงการที่จัดเก็บข้อมูลในไฟล์ XML นอกจากนี้ XML ทุกตัวยังมีการอ้างอิงไปยังไฟล์ภาพ (JPEG) XML นั้นมีจุดพิกัดมากกว่าหนึ่งพันจุดพร้อมข้อมูลเพิ่มเติมเกี่ยวกับข้อมูล ในความคิดของฉันมันจะไม่มีเหตุผลที่จะเก็บข้อมูลนี้ไว้ในตาราง นอกจากนี้ฉันไม่สามารถจัดเก็บไฟล์ JPEG ด้วย SQL ได้เช่นกัน อะไรจะเป็นทางออกที่เหมาะสมหรือมีข้อผิดพลาดในการให้เหตุผลในด้านของฉัน อย่างที่คุณเห็นฉันค่อนข้างใหม่ในฐานข้อมูล ดังนั้นคำแนะนำที่สร้างสรรค์ลิงค์และคำแนะนำก็ยินดีต้อนรับ

3
SQL อ่าน XML จากไฟล์ลงในฐานข้อมูล PostgreSQL
ฉันจะเขียน SQL เพื่ออ่านไฟล์ XML ลงในXMLค่าPostgreSQL ได้อย่างไร PostgreSQL มีประเภทข้อมูล XMLดั้งเดิมพร้อมXMLPARSEฟังก์ชันแยกวิเคราะห์สตริงข้อความให้เป็นประเภทนั้น นอกจากนี้ยังมีวิธีการอ่านข้อมูลจากระบบไฟล์ COPYคำสั่งอื่น ๆ ในกลุ่ม แต่ฉันไม่เห็นวิธีการเขียนคำสั่ง PostgreSQL SQL ดั้งเดิมเพื่ออ่านเนื้อหาจากรายการระบบไฟล์และใช้เพื่อเติมXMLค่า ฉันจะทำสิ่งนี้ได้อย่างไร
12 postgresql  xml 

4
ควรใช้ประเภทข้อมูล XML เมื่อใด
ฉันรับผิดชอบในการสร้างฐานข้อมูลในโครงการ เรามีสาขาที่ไม่ค่อยมีค่า (1 ในทุก ๆ 10,000 เรคคอร์ด) และฉันพยายามหาวิธีที่ดีที่สุดในการจัดเก็บในฐานข้อมูล เท่าที่ฉันเห็นฉันมี 3 ตัวเลือก: เพิ่มคอลัมน์ในตารางสำหรับแต่ละค่าพิเศษ เพิ่มตารางที่เชื่อมโยงซึ่งอ้างอิงถึงตารางต้นฉบับและมีการบันทึกเฉพาะที่เราจำเป็นต้องเก็บค่า ใช้ชนิดข้อมูล XML ในตารางต้นฉบับและเก็บค่าทั้งหมดในนี้ มีตัวเลือกอื่น ๆ ที่ฉันไม่ได้พิจารณาหรือไม่? ฉันพยายามหาข้อดีข้อเสียของแต่ละวิธี เท่าที่ฉันสามารถบอกได้ว่า 1 จะเป็นวิธีที่ง่ายที่สุดและ 2 จะใช้พื้นที่น้อยที่สุด แต่ฉันพยายามหาแหล่งข้อมูลจำนวนมากสำหรับ 3 คน


1
SQL Server Query Plan XML: ความยาว QueryPlanHash
UPDATE:นี่เป็นข้อผิดพลาดอย่างแน่นอน สำหรับรายละเอียดทั้งหมดดูรายการเชื่อมต่อนี้ ในขณะที่ทดสอบการเปลี่ยนแปลงบางอย่างกับsp_BlitzCache (การเปิดเผยอย่างสมบูรณ์ฉันเป็นหนึ่งในผู้แต่ง) ฉันเจอสิ่งที่ฉันคิดว่าเป็นข้อบกพร่องในรหัสของเรา ณ จุดหนึ่งเรากำลังจับคู่แฮชแผนแบบสอบถามเพื่อรับค่าใช้จ่ายแบบสอบถาม เราทำเช่นนั้นเกี่ยวกับเช่น: statement.value('sum(/p:StmtSimple[xs:hexBinary(substring(@QueryHash, 3)) = xs:hexBinary(sql:column("b.QueryHash"))]/@StatementSubTreeCost)', 'float') สิ่งนี้ได้ผลเท่าที่ฉันเคยเห็น อย่างไรก็ตามในกรณีที่แปลกหนึ่งสตริงย่อยใน XML กำลังส่งNULLค่าและแผนแสดงค่า 0 แม้ว่ามันจะค่อนข้างสูง เมื่อขุดเข้าไปในแผนปฏิบัติการ (การเปิดเผยอย่างเต็มรูปแบบฉันทำงานให้กับ บริษัท ที่เป็นเจ้าภาพวางแผน) ฉันสังเกตเห็นว่าแฮชแผนแบบสอบถามสำหรับแฮชปัญหาเดียวมีแฮช 17 ตัวในขณะที่ที่เหลือคือ 18 นี่คือตัวอย่าง: QueryPlanHash = "0x4410B0CA640CDA89" QueryPlanHash = "0x2262FEA4CE645569" QueryPlanHash = "0xED4F225CC0E97E5" - ปัญหา! QueryPlanHash = "0xBF878EEE6DB955EA" QueryPlanHash = "0x263B53BC8C14A452" QueryPlanHash = "0x89F5F146CF4B476F" QueryPlanHash = …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.