ผู้ดูแลฐานข้อมูล

ถามตอบสำหรับผู้เชี่ยวชาญด้านฐานข้อมูลที่ต้องการพัฒนาทักษะฐานข้อมูลและเรียนรู้จากผู้อื่นในชุมชน

2
จะบันทึก verbose output จาก mysqldump ได้อย่างไร?
คุณมักจะบันทึกเอาต์พุต verbose ของคำสั่ง Linux ดังนี้: # command > output.txt แต่เมื่อคุณใช้คำสั่งเช่นmysqldumpนั้น>ตัวเลือกจะส่งออกดัมพ์ของตารางฐานข้อมูลไปยังไฟล์ที่ต้องการ: # mysqldump --username=whatever --password=whatever -h localhost database > dump.sql หากคุณเพิ่มใน-vตัวเลือก (verbose) ไปที่mysqldumpมันจะแสดงผลข้อมูลความช่วยเหลือเกี่ยวกับสิ่งที่คำสั่งทำ ฉันจะบันทึกเอาต์พุต verbose นี้ไปยังไฟล์ได้อย่างไรเนื่องจาก>ตัวเลือกถูกใช้เพื่อส่งออกข้อมูลตารางฐานข้อมูลไปยังไฟล์ โดยเฉพาะอย่างยิ่งฉันจะทิ้งผลลัพธ์ของฐานข้อมูลหนึ่งลงในฐานข้อมูลอื่นเช่นนี้ mysqldump -alv -h 123.123.123.123 --user=username --password=p@ssw0rd --add-drop-table databasename | mysql --user=username --password=p@ssw0rd -h localhost localdatabase ฉันลองต่อไปนี้ แต่ไฟล์เอาต์พุตไม่มีข้อมูลในตอนท้าย mysqldump -alv -h 123.123.123.123 --user = ชื่อผู้ใช้ …

1
การถ่ายโอนข้อมูล MySQL คืนค่า - วิธีการเก็บความคิดเห็น
ดังนั้นฉันมีการถ่ายโอนข้อมูล MySQL ที่ซับซ้อนเป็นข้อมูลสำรอง น่าเสียดายที่การสำรองข้อมูลนั้นซับซ้อนและเราใช้ทริกเกอร์ชั่วร้าย ทริกเกอร์ชั่วร้ายของเราบางคนมีบรรทัดความคิดเห็นเริ่มต้นด้วยอักขระ # เมื่อฉันสำรองฐานข้อมูลการถ่ายโอนข้อมูลที่เป็นผลลัพธ์จะบันทึกบรรทัด # ปัญหาคือเมื่อฉันทำการคืนค่า บรรทัดที่ขึ้นต้นด้วย # จะถูกแทนที่ด้วยบรรทัดว่าง ดังนั้นฉันกำลังมองหาวิธีการคืนค่าการถ่ายโอนข้อมูลด้วยบรรทัดเริ่มต้นด้วยปอนด์

5
สิทธิ์ของผู้ใช้สับสนขึ้นหลังจากการสำรองข้อมูล -> การดำเนินการคืนค่า
ฉันต้องย้ายฐานข้อมูล SQL Server 2008 หลายตัวไปยังเซิร์ฟเวอร์ db ใหม่ของเราดังนั้นฉันจึงสำรองข้อมูลทั้งหมด (เป็นไฟล์. bak) คัดลอกไฟล์เหล่านี้ไปยังกล่องใหม่และเรียกคืนพวกเขา (ทั้งหมดทำได้โดยใช้ SQL Management Studio) ทุกอย่างก็โอเค แต่ตอนนี้ฉันพบว่าฉันไม่สามารถลงชื่อเข้าใช้ฐานข้อมูลใด ๆ โดยใช้บัญชี SQL Server ที่ยังคงทำงานบน RDBMS เก่าได้ การเข้าสู่ระบบที่ได้รับการรับรองความถูกต้องของ windows ของฉันยังคงทำงานได้ดี ฉันมีความคิดนี้ผู้ใช้และสิทธิ์ทั้งหมดจะถูกทำซ้ำอย่างราบรื่นบนเซิร์ฟเวอร์ฐานข้อมูลใหม่ แต่ดูเหมือนว่ามีบางอย่างผิดปกติ ฉันขอขอบคุณความเห็น / ข้อเสนอแนะ / ข้อเสนอการช่วยเหลือ ;-)

1
แผนแบบสอบถามแปลกเมื่อใช้หรือในข้อเข้าร่วม - สแกนอย่างต่อเนื่องสำหรับทุกแถวในตาราง
ฉันกำลังพยายามสร้างแผนการสืบค้นตัวอย่างเพื่อแสดงว่าทำไมชุดผลลัพธ์สองชุดของยูเนี่ยนจึงดีกว่าการใช้ OR ในประโยค JOIN แผนแบบสอบถามที่ฉันเขียนทำให้ฉันนิ่งงัน ฉันใช้ฐานข้อมูล StackOverflow กับดัชนีที่ไม่ได้เป็นคลัสเตอร์ใน Users.Reputation แบบสอบถามคือ CREATE NONCLUSTERED INDEX IX_NC_REPUTATION ON dbo.USERS(Reputation) SELECT DISTINCT Users.Id FROM dbo.Users INNER JOIN dbo.Posts ON Users.Id = Posts.OwnerUserId OR Users.Id = Posts.LastEditorUserId WHERE Users.Reputation = 5 แผนการสืบค้นอยู่ที่https://www.brentozar.com/pastetheplan/?id=BkpZU1MZEระยะเวลาการสืบค้นสำหรับฉันคือ 4:37 นาทีส่งคืนแถว 26612 ฉันไม่เคยเห็นรูปแบบการสแกนคงที่นี้ถูกสร้างขึ้นจากตารางที่มีอยู่ก่อนหน้านี้ - ฉันไม่คุ้นเคยกับสาเหตุที่มีการสแกนค่าคงที่สำหรับทุก ๆ แถวเมื่อการสแกนแบบคงที่มักใช้กับแถวเดียวที่ป้อนโดยผู้ใช้ เช่น SELECT GETDATE () ทำไมถึงใช้ที่นี่? …

6
สถานการณ์ที่ดีที่สุดในการใช้ระดับการแยก READ UNCOMMITTED
ดังที่เราทุกคนทราบกันดีว่าการอ่านไม่ได้รับการยอมรับนั้นเป็นระดับการแยกต่ำสุดที่สิ่งต่าง ๆ เช่นการอ่านสกปรกและการอ่าน phantom อาจเพิ่มขึ้น เวลาที่ดีที่สุดในการใช้ระดับการแยกนี้เมื่อใดและด้วยเหตุผลใดบ้างที่ควรใช้ ที่จริงฉันอ่านคำตอบก่อนหน้านี้ แต่ฉันไม่สามารถเข้าใจได้อย่างสมบูรณ์เพราะมีตัวอย่างไม่เพียงพอ

1
การเรียกใช้แพคเกจ SSIS ที่ผู้ใช้โดเมนเป็นเจ้าของจาก SQL Server ที่ทำงานบนบัญชีบริการในเครื่อง
ฉันต้องการเรียกใช้แพคเกจ SSIS ที่มีภารกิจการถ่ายโอน SQL Server Objects เซิร์ฟเวอร์ที่เกี่ยวข้องอยู่ในโดเมนเดียวกัน แต่บริการเซิร์ฟเวอร์ SQL กำลังทำงานอยู่ในบัญชีบริการภายใน ดังนั้นสภาพแวดล้อมจะเป็นดังนี้: โดเมน เซิร์ฟเวอร์ 1 SQL Server ทำงานบนบัญชีท้องถิ่น บนระบบไฟล์: แพคเกจ SSIS ใน บริษัท ตัวแทนของเซิร์ฟเวอร์ SQL: งาน เซิร์ฟเวอร์ 2 SQL Server ทำงานบนบัญชีท้องถิ่น เพื่อให้สามารถเข้าสู่เซิร์ฟเวอร์ทั้งสองได้ฉันได้สร้างบัญชีโดเมนเพื่อใช้เป็นบัญชีบริการ เมื่อฉันใช้บัญชีโดเมนนี้เพื่อเข้าสู่ระบบเซิร์ฟเวอร์ 1 จากนั้นดำเนินการแพคเกจจากระบบไฟล์ทุกขั้นตอนสำเร็จ อย่างไรก็ตามเมื่อฉันพยายามเพิ่มงานไปยัง SQL Server ฉันพบปัญหาอย่างใดอย่างหนึ่งต่อไปนี้: สถานการณ์ 1. เจ้าของงาน: บัญชีท้องถิ่น; เรียกขั้นตอน SSIS เป็นผู้รับมอบฉันทะเพื่อบัญชีโดเมน เมื่อฉันตั้งเจ้าของงานเป็นบัญชีท้องถิ่น แต่ใช้งานเป็นพร็อกซีไปยังบัญชีโดเมนงานของตัวเองจะดำเนินการได้สำเร็จ แต่แพคเกจมีข้อผิดพลาดเช่น การดำเนินการล้มเหลวโดยมีข้อผิดพลาดต่อไปนี้: "ไดเรกทอรี …
10 sql-server  ssis 

1
“ ธุรกรรมที่ถูกแฮช” ในคำศัพท์การจำลองแบบเซิร์ฟเวอร์ SQL คืออะไร
sys.dm_repl_tranhashมีข้อมูลเกี่ยวกับการแปลงธุรกรรม แต่ฉันมีปัญหาในการเข้าใจคำศัพท์ "ธุรกรรมที่ถูกแฮช" คืออะไร

2
คำเตือน sys.dm_exec_query_stats มีผลกระทบอย่างไรในเอกสารประกอบ?
เอกสารสำหรับsys.dm_exec_query_statsรัฐต่อไปนี้: เคียวรีเริ่มต้นของ sys.dm_exec_query_stats อาจสร้างผลลัพธ์ที่ไม่ถูกต้องหากมีเวิร์กโหลดที่กำลังเรียกใช้งานบนเซิร์ฟเวอร์ในปัจจุบัน ผลลัพธ์ที่แม่นยำยิ่งขึ้นอาจถูกกำหนดโดยทำการค้นหาใหม่ บางครั้งฉันค้นหา DMV นั้นในระหว่างที่มีปริมาณงานที่ใช้งานอยู่และต้องการผลลัพธ์ที่แม่นยำ ฉันไม่ทราบวิธีการใช้คำเตือนข้างต้นในทางปฏิบัติ ฉันควรสอบถาม DMV เสมอสองครั้งและใช้ชุดผลลัพธ์ที่สองเพราะนั่นจะแม่นยำยิ่งขึ้นหรือไม่ ที่รู้สึกลึกซึ้งเล็กน้อย ฉันจำเป็นต้องทราบถึงวิธีการที่ DMV ไม่ถูกต้องหรือไม่เพื่อให้ฉันสามารถแยกแยะสิ่งนั้นออกจากการวิเคราะห์ของฉันได้ ถ้าเป็นเช่นนั้นความผิดพลาดประเภทใดที่จะปรากฏ: แถวที่หายไปค่าที่ล้าสมัยแถวที่ไม่สอดคล้องกันหรืออย่างอื่น แนวปฏิบัติที่เหมาะสมที่สุดเมื่อใช้sys.dm_exec_query_statsในระหว่างเวิร์กโหลดที่ใช้งานอยู่คืออะไร
10 sql-server  dmv 

1
แฮชรวม bailout
คำถามที่เกิดขึ้นในการสนทนาการแชท: ฉันรู้ว่าแฮชเข้าร่วม bailout สวิตช์ภายในเพื่อเรียงลำดับของลูปซ้อนกัน SQL Server ทำอะไรให้กับแฮชรวม bailout (ถ้ามันสามารถเกิดขึ้นได้ทั้งหมด)?

2
ล็อคผู้ใช้ sa ของฉันออก
ดังนั้นฉันจึงพยายามเปลี่ยนการตั้งค่าบางอย่างใน Microsoft SQL Server Management Studio 2019 ของฉันฉันเปลี่ยนโหมดการเข้าสู่ระบบจากแบบผสม (การตรวจสอบ Windows และ SQL) เป็น Windows เท่านั้นและตอนนี้ฉันไม่สามารถเข้าสู่ระบบด้วยบัญชี sa ของฉันและฉันไม่ได้ มีบัญชีอื่นที่มีสิทธิ์ของผู้ดูแลระบบ ฉันควรทำอย่างไรดี? ข้อเสนอแนะใด ๆ จะได้รับการชื่นชมอย่างมาก

1
สิ่งที่เป็นประโยชน์ของการตั้งค่า ARITHABORT ON สำหรับการเชื่อมต่อทั้งหมดใน SQL Server?
ดังนั้นผมจึงได้พิจารณาแล้วว่าพฤติกรรมผิดปกติของ SQL Server ของฉันคือเนื่องจากการตั้งค่าเริ่มต้นของผู้ให้บริการสุทธิ SqlClient SET ARITHABORT OFFข้อมูลของ ด้วยที่กล่าวว่าฉันได้อ่านบทความต่าง ๆ ที่ถกเถียงวิธีที่ดีที่สุดในการใช้งาน สำหรับฉันฉันแค่ต้องการวิธีที่ง่ายเพราะ SQL Server กำลังทนทุกข์และการปรับแต่งการสืบค้นของฉันยังไม่ได้มีการข้ามผ่านแอพอย่างสมบูรณ์ (และแน่นอนว่าการเพิ่มSETใน sp ไม่ทำงาน) ในบทความยอดเยี่ยมเกี่ยวกับหัวข้อของ Erland Sommarskog เขาแนะนำให้ใช้วิธีการที่ปลอดภัยโดยการเปลี่ยนแอพให้เป็นปัญหาSET ARITHABORT ONสำหรับการเชื่อมต่อ อย่างไรก็ตามในคำตอบนี้จากคำถาม dba.stackexchange โซโลมอน Rutzky เสนอวิธีการแบบกว้างและแบบฐานข้อมูล ฉันหายไปที่นี่โดยการตั้งค่าทั้งอินสแตนซ์นี้ได้อย่างไร ตามที่ฉันเห็น ... เนื่องจาก SSMS มีการตั้งค่านี้ONตามค่าเริ่มต้นฉันไม่เห็นอันตรายใด ๆ ในการตั้งค่าทั้งONเซิร์ฟเวอร์สำหรับการเชื่อมต่อทั้งหมด ในตอนท้ายของวันฉันแค่ต้องการ SQL Server นี้เพื่อดำเนินการเหนือสิ่งอื่นใด

5
การนับ SQL แตกต่างกันในพาร์ติชัน
ฉันมีตารางที่มีสองคอลัมน์ฉันต้องการนับค่าที่แตกต่างใน Col_B มากกว่า (เงื่อนไขโดย) Col_A MyTable Col_A | Col_B A | 1 A | 1 A | 2 A | 2 A | 2 A | 3 b | 4 b | 4 b | 5 ผลลัพธ์ที่คาดหวัง Col_A | Col_B | Result A | 1 | 3 A | 1 …

1
สร้างวิธีเรียงสับเปลี่ยนและชุดค่าผสมสำหรับคอลัมน์ชื่อ
ฉันมีข้อมูลตัวอย่างต่อไปนี้สำหรับการเรียงสับเปลี่ยนและการรวมกัน create table tbltest ( name varchar(50), addres varchar(100) ); insert into tbltest values('Sam Mak John','Street 1 HNo 101 USA'); insert into tbltest values('Donatella Nobatti','HNo 101 UK'); insert into tbltest values('Sam Buca','Main Road B Block UAE'); insert into tbltest values('Juan Soponatime','Hight Street CA'); insert into tbltest values('Aaron Spacemuseum','HNo A10 100 …

5
การใช้คีย์ต่างประเทศหลายรายการในคอลัมน์เดียวกันใน SQL Server
SQL Server อนุญาตให้ฉันสร้างคีย์ต่างประเทศหลายอันในคอลัมน์และแต่ละครั้งที่ใช้ชื่อต่างกันฉันสามารถสร้างคีย์อื่นที่อ้างอิงถึงวัตถุเดียวกันได้ โดยทั่วไปกุญแจทั้งหมดจะกำหนดความสัมพันธ์เดียวกัน ฉันต้องการที่จะรู้ว่าสิ่งที่ใช้มีคีย์ต่างประเทศหลายที่กำหนดไว้ในคอลัมน์เดียวกันและอ้างอิงถึงคอลัมน์เดียวกันในตารางอื่น ประโยชน์ของมันคืออะไรที่ SQL Server อนุญาตให้เราทำสิ่งนั้น

1
ผลรวมของการลอยตัวแบบไม่กำหนดค่า
ผมขอรัฐกำปั้นชัดเจน: ฉันสมบูรณ์เข้าใจว่าลอยชนิดจุดไม่ถูกต้องแทนค่าทศนิยม นี่ไม่เกี่ยวกับเรื่องนั้น! อย่างไรก็ตามการคำนวณจุดลอยตัวควรจะถูกกำหนดไว้ล่วงหน้า ตอนนี้มันออกไปให้ฉันแสดงให้คุณเห็นกรณีแปลก ๆ ที่ฉันสังเกตเห็นในวันนี้ ฉันมีรายการค่าจุดลอยตัวและฉันต้องการรวมค่าเหล่านี้: CREATE TABLE #someFloats (val float); INSERT INTO #someFloats (val) VALUES (1), (1), (1.2), (1.2), (1.2), (3), (5); SELECT STR(SUM(#someFloats.val), 30, 15) FROM #someFloats; DROP TABLE #someFloats; -- yields: -- 13.600000000000001 จนถึงตอนนี้ดีมาก - ไม่น่าประหลาดใจที่นี่ เราทุกคนรู้ว่า1.2ไม่สามารถแสดงได้อย่างแน่นอนในการเป็นตัวแทนไบนารีดังนั้นคาดว่าจะได้ผลลัพธ์ที่ "ไม่ชัดเจน" ต่อไปนี้เป็นสิ่งที่แปลกประหลาดเกิดขึ้นเมื่อฉันออกจากโต๊ะอื่น: CREATE TABLE #A (a int); INSERT …

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