คำถามติดแท็ก bulk-insert

4
เพราะเหตุใด INSERT BULK จึงถือว่าเป็นอันตราย
คำถามนี้ถูกย้ายจากการแลกเปลี่ยนความปลอดภัยข้อมูลกองซ้อนเนื่องจากสามารถตอบได้ในการแลกเปลี่ยนผู้ดูแลฐานข้อมูล อพยพ 2 ปีที่แล้ว ฉันต้องการที่จะเข้าใจว่าทำไมทีมรักษาความปลอดภัยทางไซเบอร์โดยทั่วไป (มากกว่าหนึ่งองค์กรที่ฉันจัดการ) ถูกตั้งค่าให้ตายต่อการให้สิทธิ์BULK INSERT(เช่น TSQL) กับแอปพลิเคชันและโปรแกรมเมอร์ฐานข้อมูล ฉันไม่อยากจะเชื่อข้อแก้ตัว "เติมดิสก์ที่ไม่เหมาะสม" เว้นแต่ฉันจะพลาดบางสิ่งเนื่องจากผลลัพธ์ที่ได้ไม่ต่างจากแอพพลิเคชั่นที่ทำสิ่งต่อไปนี้: for (long i = 0; i < LONG_MAX; ++i) executeSQL("INSERT INTO table VALUES(...)"); และINSERTเป็นคำสั่ง DML ทั่วไปที่ทุกคนที่มีสิทธิ์เขียนขั้นพื้นฐานสามารถดำเนินการได้ เพื่อประโยชน์ของแอปพลิเคชันBULK INSERTมีประสิทธิภาพมากขึ้นเร็วขึ้นและบรรเทาความต้องการโปรแกรมเมอร์ในการแยกวิเคราะห์ไฟล์นอก SQL แก้ไข: เดิมฉันถามคำถามนี้ในเว็บไซต์ความปลอดภัยของข้อมูลด้วยเหตุผล - ไม่ใช่ DBA ที่ขัดกับการใช้ BULK INSERT มันคือ "การรับรองข้อมูล" (IA สำหรับย่อ - กลุ่มความปลอดภัยทางไซเบอร์) ที่บังคับให้ออก ฉันจะปล่อยให้คำถามนี้ตุ๋นอีกหนึ่งหรือสองวัน แต่ถ้าการดำเนินการเป็นกลุ่มทำผ่านข้อ จำกัด …

1
จะปลอดภัยหรือไม่ที่จะพึ่งพาคำสั่งของส่วนคำสั่งเอาท์พุทของ INSERT?
รับตารางนี้: CREATE TABLE dbo.Target ( TargetId int identity(1, 1) NOT NULL, Color varchar(20) NOT NULL, Action varchar(10) NOT NULL, -- of course this should be normalized Code int NOT NULL, CONSTRAINT PK_Target PRIMARY KEY CLUSTERED (TargetId) ); ในสองสถานการณ์ที่แตกต่างกันเล็กน้อยฉันต้องการแทรกแถวและคืนค่าจากคอลัมน์ข้อมูลประจำตัว สถานการณ์ 1 INSERT dbo.Target (Color, Action, Code) OUTPUT inserted.TargetId SELECT t.Color, t.Action, …

3
คัดลอกจากตาราง MySQL หนึ่งไปยังอีกตาราง MySQL ของฐานข้อมูลเดียวกัน
ฉันมีประมาณ 40 ล้านแถวในตาราง MySQL และฉันต้องการคัดลอกตารางนี้ไปยังตารางอื่นในฐานข้อมูลเดียวกัน วิธีที่มีประสิทธิภาพที่สุดในการทำเช่นนี้คืออะไร? ใช้เวลานานเท่าไร (ประมาณ)

4
แทรกจำนวนมากผ่านเครือข่าย
ใครสามารถช่วยฉันด้วยสิ่งเหล่านี้? BULK INSERT DATABESE01.dbo.TABLE01 FROM '\\COMPUTER01\FOLDER01\TextFile.txt' WITH ( FIELDTERMINATOR = ' ', rowterminator = '\n', tablock ) ข้อผิดพลาดแสดงไม่สามารถเปิดได้: ไม่สามารถแทรกจำนวนมากได้เนื่องจากไม่สามารถเปิดไฟล์ '\ SERVERNAME \ FOLDERNAME \ textFile.txt' รหัสข้อผิดพลาดของระบบปฏิบัติการ 5 (ปฏิเสธการเข้าถึง) พา ธ อยู่บนคอมพิวเตอร์เครื่องอื่นบนเครือข่าย

2
กำหนดค่าการมอบหมายที่ไม่ จำกัด สำหรับ BULK INSERT
ฉันมีโหนด Microsoft SQL Server 2016 คู่หนึ่งในกลุ่ม Always On Availability ฉันกำลังพยายามดำเนินการBULK INSERT(โดยใช้แบบสอบถาม SQL Server 2016 Management Studio) ในไฟล์ที่อยู่ในคลัสเตอร์เซิร์ฟเวอร์ล้มเหลวของ Windows Server 2016 แต่ฉันได้รับข้อผิดพลาดต่อไปนี้: เกี่ยวกับข่าวสาร 4861 ระดับ 16 สถานะ 1 ไม่สามารถโหลดจำนวนมากได้เนื่องจากไม่สามารถเปิดไฟล์ "\ nas2.my.domain \ Microsoft SQL Server 2016 Enterprise \ test.txt" รหัสข้อผิดพลาดของระบบปฏิบัติการ 5 (ปฏิเสธการเข้าถึง) สิ่งนี้จะเกิดขึ้นโดยไม่คำนึงว่าฉันใช้ชื่อโหนดที่ใช้งาน ( nas2.my.domain) หรือฟังคลัสเตอร์ล้มเหลว ( nas.my.domain) หรือไม่ หลังจากมองไปรอบ ๆ …

2
คำใบ้ Tablock ทำให้เกิดการหยุดชะงัก
ฉันใส่ชุดข้อมูลสองชุดโดยใช้การบันทึกขั้นต่ำลงในตาราง heap ที่ว่างโดยใช้ Execute SQL Tasks สองชุดที่ทำงานแบบขนานและ SQL ในรูปแบบต่อไปนี้ INSERT INTO Table (TABLOCK) SELECT FROM ... หลังจากงานหยุดทำงานหนึ่งในงาน SQL กลายเป็นเหยื่อการหยุดชะงัก ด้านล่างคือเอาต์พุต XML ของกราฟเดดล็อก ใครสามารถอธิบายสิ่งที่เกิดขึ้นภายใต้ประทุนได้หรือไม่? <resource-list> <objectlock lockPartition="0" objid="1586156746" subresource="FULL" dbid="7" objectname="dbo.TargetTable" id="lock7374a00" mode="IX" associatedObjectId="1586156746"> <owner-list> <owner id="process9609dc8" mode="Sch-S"/> <owner id="process9609dc8" mode="IX"/> </owner-list> <waiter-list> <waiter id="process5e13048" mode="X" requestType="convert"/> </waiter-list> </objectlock> <objectlock lockPartition="0" …

1
เงื่อนไขการบันทึกขั้นต่ำใน SQL
ฉันได้เขียนสคริปต์เพื่อทดสอบการอ้างสิทธิ์ที่เกิดขึ้นในหน้านี้http://technet.microsoft.com/en-us/library/dd425070(v=sql.100).aspxในตารางชื่อสรุปเงื่อนไขการบันทึกขั้นต่ำเกี่ยวกับเมื่อ การบันทึกที่น้อยที่สุดจะเกิดขึ้นหรือไม่เกิดขึ้น การใช้สคริปต์นี้ฉันพบว่าผลรวมของความยาวบันทึกการใช้งานสำหรับเม็ดมีดแต่ละประเภทมีดังต่อไปนี้: กองว่างไม่มี tablock 60000 กองว่างเปล่าด้วย tablock 56000 กองไม่ว่างเปล่าไม่มี tablock 60000 กองไม่ว่างเปล่าด้วย tablock 56000 ฮีปบวกดัชนีว่างเปล่าไม่มี tablock 126188 ฮีปบวกดัชนีว่างเปล่าด้วย tablock 114188 Heap plus index ไม่ว่างเปล่าไม่มี tablock 138696 ฮีปบวกดัชนีไม่ว่างด้วย tablock 112000 คลัสเตอร์ว่างไม่มีคำสั่ง tablock 64168 คลัสเตอร์ว่างเปล่าเรียงลำดับด้วย tablock 56168 คลัสเตอร์ว่างเปล่าไม่มีการเรียงลำดับ tablock 73388 คลัสเตอร์ว่างเปล่าเรียงลำดับด้วย tablock 65388 คลัสเตอร์ไม่ว่างเปล่าไม่มี tablock 63912 คลัสเตอร์ไม่ว่างเปล่าด้วย tablock 55944 คลัสเตอร์และดัชนีว่างเปล่าไม่มี tablock …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.