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

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

1
บังคับให้ใช้แผนที่สำหรับบุคคลที่สองที่อ่านได้
หากมีการบังคับใช้แผนหลักในกลุ่มความพร้อมใช้งานจะมีการนำไปใช้กับคิวรีที่เรียกใช้บนรองหรือไม่? ฉันกำลังมองหาคำตอบที่ครอบคลุมความเป็นไปได้ทั้งในการวางแผนบังคับ: แนวทางการวางแผน แผนบังคับใช้ Query Store ฉันได้อ่านสิ่งต่อไปนี้ที่แนะนำแผนการบังคับใช้ QS ไม่ได้ดำเนินการ แต่ไม่พบสิ่งใดที่เชื่อถือได้ในเอกสารประกอบ Query Store และกลุ่มความพร้อมใช้งานโดย Erin Stellato แบบสอบถามข้อมูลที่เก็บบังคับพฤติกรรมแผนบนรอง AlwaysOn สามารถอ่านได้โดย Vikas Rana หลักฐานการบังคับจะมีการปรากฏตัวของUse PlanหรือPlanGuideNameและPlanGuideDBคุณสมบัติในการวางแผนการดำเนินการรอง

1
ไม่สามารถแทรกแถวคีย์ซ้ำในดัชนีที่ไม่ซ้ำกันใช่ไหม
เราพบข้อผิดพลาดแปลก ๆ สามครั้งในช่วงสองสามวันที่ผ่านมาหลังจากปราศจากข้อผิดพลาดเป็นเวลา 8 สัปดาห์และฉันก็นิ่งงัน นี่คือข้อความแสดงข้อผิดพลาด: Executing the query "EXEC dbo.MergeTransactions" failed with the following error: "Cannot insert duplicate key row in object 'sales.Transactions' with unique index 'NCI_Transactions_ClientID_TransactionDate'. The duplicate key value is (1001, 2018-12-14 19:16:29.00, 304050920).". ดัชนีที่เรามีไม่ซ้ำกัน หากคุณสังเกตเห็นค่าคีย์ที่ซ้ำกันในข้อความแสดงข้อผิดพลาดจะไม่ตรงกับดัชนี สิ่งที่แปลกคือถ้าฉันเรียกใช้ proc อีกครั้งมันก็ประสบความสำเร็จ นี่คือลิงค์ล่าสุดที่ฉันพบว่ามีปัญหาของฉัน แต่ฉันไม่เห็นวิธีแก้ปัญหา https://www.sqlservercentral.com/forums/topic/error-cannot-insert-duplicate-key-row-in-a-non-unique-index สองสามสิ่งเกี่ยวกับสถานการณ์ของฉัน: Proc กำลังอัปเดต TransactionID (ส่วนหนึ่งของคีย์หลัก) …

2
SQL Server สามารถสร้างการชนในชื่อข้อ จำกัด ที่ระบบสร้างได้หรือไม่?
ฉันมีแอปพลิเคชั่นที่สร้างตารางเป็นล้านตารางในฐานข้อมูล SQL Server 2008 (ไม่ใช่คลัสเตอร์) ฉันต้องการอัพเกรดเป็น SQL Server 2014 (เป็นกลุ่ม) แต่ฉันพบข้อความแสดงข้อผิดพลาดเมื่อโหลดไม่ครบ: “ มีวัตถุชื่อ 'PK__tablenameprefix__179E2ED8F259C33B' ในฐานข้อมูลอยู่แล้ว " นี่คือชื่อข้อ จำกัด ที่ระบบสร้างขึ้น ดูเหมือนว่าหมายเลข 64 บิตที่สร้างแบบสุ่ม เป็นไปได้ไหมที่ฉันเห็นการชนเนื่องจากตารางจำนวนมาก? สมมติว่าฉันมี 100 ล้านตารางฉันคำนวณโอกาสน้อยกว่า 1 ใน 1 ล้านล้านของการชนกันเมื่อเพิ่มตารางถัดไป แต่ถือว่าเป็นการกระจายแบบสม่ำเสมอ เป็นไปได้หรือไม่ที่ SQL Server เปลี่ยนอัลกอริธึมการสร้างชื่อระหว่างเวอร์ชั่น 2008 และ 2014 เพื่อเพิ่มโอกาสในการชน? ความแตกต่างที่สำคัญอื่น ๆ คืออินสแตนซ์ 2014 ของฉันเป็นคู่แบบคลัสเตอร์ แต่ฉันกำลังพยายามตั้งสมมติฐานเพื่อหาสาเหตุที่ทำให้เกิดข้อผิดพลาดด้านบน ป.ล. ใช่ฉันรู้ว่าการสร้างตารางนับล้านนั้นเสียสติ นี่คือรหัสสีดำของบุคคลที่สามซึ่งฉันไม่สามารถควบคุมได้ แม้จะมีความวิกลจริต แต่ก็ใช้งานได้ในเวอร์ชัน …

2
การเปลี่ยนรหัสผ่าน“ sa” ต้องการการเริ่ม SQL ใหม่ (ในโหมดผสม) หรือไม่?
เราค้นพบบัญชี SQL "sa" ที่ใช้งานในลักษณะที่ไม่ควรเป็นดังนั้นเราจึงเปลี่ยนรหัสผ่าน sa ในอินสแตนซ์ SQL ของเราทั้งหมด (เรามี SQL 2005 ถึง 2017 เซิร์ฟเวอร์ที่ทำงานในโหมดการตรวจสอบสิทธิ์แบบผสมผู้ใช้และแอปพลิเคชันทั้งหมดควรใช้บัญชีโดเมนหรือบัญชี SQL ที่ไม่ใช่ sa เพื่อเชื่อมต่อฉันได้รับการตรวจสอบ แต่ไม่พบแอปอื่น ๆ ผู้ใช้หรือไม่ - spids ภายในโดยใช้บัญชี sa) คำถามเล็กน้อย: คำถามที่ 1: การเปลี่ยนรหัสผ่าน sa ต้องมีการรีสตาร์ท SQL หรือไม่ ฉันพบการอ้างอิงบางอย่างที่บอกว่าจำเป็นต้องเริ่มบริการ SQL ใหม่หลังจากเปลี่ยนรหัสผ่านบัญชี sa: DBA SE: การเปลี่ยนรหัสผ่าน sa SQLAuthority: เปลี่ยนรหัสผ่านของการเข้าสู่ระบบ SA โดยใช้ Studio การจัดการ มันเป็นเรื่องจริงเหรอ? หรือเฉพาะในกรณีที่ฉันเปลี่ยนโหมดการตรวจสอบสิทธิ์ หรือเฉพาะถ้าฉันเข้าสู่ระบบเป็นประจำเป็น …

1
สถานะ IDLE หมายถึงอะไรในแถว pg_stat_activity
ใครสามารถแก้ไขข้อสงสัยด้านล่างของฉันpg_stat_activityในแง่ของ postgres 9.5 ได้ไหม บางคนให้ฉันรู้ว่าสิ่งที่state IDLEซึกในแถวของpg_stat_activity? มันเหมือนว่ามันจะตรวจสอบการเชื่อมต่อที่เปิดอยู่ทั้งหมดเพื่อ postgres และหากการเชื่อมต่อไม่ได้ดำเนินการค้นหาใด ๆ แล้วIDLEแสดงว่าแบบสอบถามล่าสุดที่ดำเนินการโดยการเชื่อมต่อ? ในผลลัพธ์ของselect * from pg_stat_activityฉันเห็นแถวด้วยstate IDLEและอายุquery_start_dateมากกว่า 2 วันหรือไม่ สิ่งนี้มีความหมายว่าอะไร? ฉันควรจะต้องกังวลเกี่ยวกับเรื่องนี้? บางคนสามารถแจ้งให้เราทราบได้อย่างไรว่าประชากร pg_stat_activity หากฉันกำลังดำเนินการค้นหาเช่นSelect * from pg_stat_activityจะสร้างรายละเอียดจากสแน็ปช็อตบางส่วนที่ดูแลโดย postgres หรือตรวจสอบการเชื่อมต่อปัจจุบันที่เปิดใน postgres เพื่อให้รายละเอียดหรือไม่
14 postgresql 

2
ปัญหาประสิทธิภาพการทำงานที่แปลกกับ SQL Server 2016
เรามีอินสแตนซ์เดียวของ SQL Server 2016 SP1 ที่ทำงานในเครื่องเสมือน VMware มันมี 4 ฐานข้อมูลสำหรับแต่ละแอปพลิเคชันที่แตกต่างกัน แอปพลิเคชั่นเหล่านั้นล้วน แต่อยู่บนเซิร์ฟเวอร์เสมือนแยกกัน ยังไม่มีการใช้งานจริง ผู้คนที่ทดสอบแอพพลิเคชั่นกำลังรายงานปัญหาด้านประสิทธิภาพ นี่คือสถิติของเซิร์ฟเวอร์: 128 GB RAM (หน่วยความจำสูงสุด 110GB สำหรับ SQL Server) 4 คอร์ที่ 4.6 GHz การเชื่อมต่อเครือข่าย 10 GBit ที่เก็บข้อมูลทั้งหมดใช้ SSD ไฟล์โปรแกรมไฟล์บันทึกไฟล์ฐานข้อมูลและ tempdb อยู่บนพาร์ติชันแยกต่างหากของเซิร์ฟเวอร์ asd ผู้ใช้ทำการเข้าถึงหน้าจอเดียวผ่านแอปพลิเคชัน ERP ที่ใช้ C ++ เมื่อฉันทดสอบ SQL Server กับ Microsoft ostressโดยใช้แบบสอบถามขนาดเล็กจำนวนมากหรือแบบสอบถามขนาดใหญ่ฉันได้รับประสิทธิภาพสูงสุด สิ่งเดียวที่ควบคุมปริมาณคือลูกค้าเพราะเขาไม่สามารถตอบได้เร็วพอ แต่เมื่อมีผู้ใช้แทบจะไม่ SQL …

4
ผู้ดูแลระบบเพียงคนเดียวเท่านั้นที่สามารถเชื่อมต่อได้ในขณะนี้ (MS SQL Server 18461 error)
ฉันกำลังทดลองผลของการให้ SQL Server มีหน่วยความจำเพียงเล็กน้อยที่ฉันคิดว่ามันกำลังจะกู้คืน ฉันกำหนดค่า SQL Server ให้ใช้หน่วยความจำ 200MB ในขณะนี้ไม่ต้องการเริ่มต้นฉันค้นหาบางอย่างบนอินเทอร์เน็ตและฉันแนะนำให้เริ่ม SQL Server ในโหมดผู้ใช้คนเดียว อย่างไรก็ตามฉันได้รับข้อผิดพลาด การเข้าสู่ระบบล้มเหลวสำหรับผู้ใช้ A. เหตุผล: เซิร์ฟเวอร์อยู่ในโหมดผู้ใช้คนเดียว ผู้ดูแลระบบเพียงคนเดียวเท่านั้นที่สามารถเชื่อมต่อได้ในขณะนี้ (Microsoft SQL Server, ข้อผิดพลาด: 18461) ฉันหยุดตัวแทนเซิร์ฟเวอร์ SQL
14 sql-server 

1
จำนวนการกระทำที่ถูกผูกไว้สูงสุดที่อนุญาตสำหรับเหตุการณ์ที่ขยายคืออะไร
หากคุณเพิ่มการกระทำ "มากเกินไป" ให้กับกิจกรรมในเซสชันกิจกรรมคุณจะได้รับข้อผิดพลาดนี้: ข่าวสารเกี่ยวกับ 25639, ระดับ 16, สถานะ 23, บรรทัด 1 เหตุการณ์ "[ชื่อเหตุการณ์]" เกินจำนวนการดำเนินการที่ผูกไว้ที่อนุญาต อนุญาตให้มีการกระทำกี่ครั้ง มันแตกต่างกันไปตามเหตุการณ์? คำตอบขึ้นอยู่กับการทดลองดูเหมือนจะเป็น sqlserver.rpc_completed27 แต่ฉันไม่ได้พบหมายเลขบนใด ๆ ที่เอกสารไมโครซอฟท์ และดูเหมือนว่าจะแตกต่างกันไปจากเหตุการณ์ที่ผมก็สามารถที่จะได้รับ sqlserver.sql_batch_completed30 รหัสตัวอย่างที่ล้มเหลว: CREATE EVENT SESSION [Test] ON SERVER ADD EVENT sqlserver.rpc_completed( ACTION( package0.callstack, package0.collect_cpu_cycle_time, package0.collect_current_thread_id, package0.collect_system_time, package0.event_sequence, package0.last_error, package0.process_id, sqlos.cpu_id, sqlos.numa_node_id, sqlos.scheduler_address, sqlos.scheduler_id, sqlos.system_thread_id, sqlos.task_address, sqlos.task_elapsed_quantum, sqlos.task_resource_group_id, sqlos.task_resource_pool_id, …

1
การค้นหาแถวที่ไม่ใช่ ASCII จาก Postgres
ไม่[:ascii:]ทำงานในระดับ Postgres ที่ทั้งหมดหรือไม่ มันไม่ได้ระบุไว้ในความช่วยเหลือของพวกเขาแต่ฉันเห็นตัวอย่างในเว็บที่ใช้มัน ฉันมีฐานข้อมูล UTF-8 โดยมีการเปรียบเทียบและc_typ e en_US.UTF-8และรุ่น Postgres คือ 9.6.2 เมื่อฉันค้นหาแถวที่ไม่ใช่ ASCII เช่นนี้: select title from wallabag_entry where title ~ '[^[:ascii:]]'; ฉันจะได้รับทั้ง Unicode และไม่ใช่ Unicode สัญลักษณ์ (เอาท์พุทเต็มรูปแบบที่นี่ ): Сталинская правозащитница: мать Меленкова бабушка Настя Дневник НКВДиста Шабалина: Знает ли Москва положение на фронте? Бег по городу и поездка …

2
ดัชนีใดที่จะใช้กับค่าซ้ำจำนวนมาก
ลองทำข้อสมมติสองสามข้อ: ฉันมีตารางที่มีลักษณะดังนี้: a | b ---+--- a | -1 a | 17 ... a | 21 c | 17 c | -3 ... c | 22 ข้อเท็จจริงเกี่ยวกับชุดของฉัน: ขนาดของตารางทั้งหมดคือ ~ 10 10แถว ฉันมีแถว ~ 100k ที่มีค่าaในคอลัมน์aคล้ายกับค่าอื่น ๆ (เช่นc) นั่นหมายถึง ~ 100k ค่าที่แตกต่างในคอลัมน์ 'a' select sum(b) from t where a = 'c'ส่วนใหญ่เป็นคำสั่งของฉันจะอ่านทั้งหมดหรือส่วนใหญ่ของค่าสำหรับค่าที่กำหนดในเช่น …

2
เหตุใด array_agg () จึงช้ากว่าตัวสร้าง ARRAY ที่ไม่ใช่การรวม ()
ฉันเพิ่งตรวจสอบโค้ดเก่าที่เขียนขึ้นสำหรับPre-8.4 PostgreSQLและฉันเห็นสิ่งที่ดีจริงๆ ฉันจำได้ว่ามีฟังก์ชั่นที่กำหนดเองทำสิ่งนี้ย้อนกลับไปในวัน แต่ฉันลืมสิ่งที่array_agg()ดูเหมือนก่อน สำหรับการตรวจสอบการรวมกลุ่มที่ทันสมัยเขียนขึ้นเช่นนี้ SELECT array_agg(x ORDER BY x DESC) FROM foobar; อย่างไรก็ตามกาลครั้งหนึ่งมันถูกเขียนขึ้นเช่นนี้ SELECT ARRAY(SELECT x FROM foobar ORDER BY x DESC); ดังนั้นฉันลองกับข้อมูลทดสอบบางอย่าง .. CREATE TEMP TABLE foobar AS SELECT * FROM generate_series(1,1e7) AS t(x); ผลลัพธ์น่าประหลาดใจวิธี #OldSchoolCool เร็วขึ้นอย่างมาก: เร่งความเร็ว 25% ยิ่งกว่านั้นการทำให้เรียบง่ายขึ้นโดยไม่มีคำสั่งซื้อแสดงความช้าเหมือนกัน # EXPLAIN ANALYZE SELECT ARRAY(SELECT x FROM foobar); …

2
ฟังก์ชั่น PostgreSQL ไม่ได้ดำเนินการเมื่อเรียกจากภายใน CTE
เพียงแค่หวังที่จะยืนยันการสังเกตของฉันและรับคำอธิบายเกี่ยวกับสาเหตุที่เกิดขึ้น ฉันมีฟังก์ชั่นที่กำหนดเป็น: CREATE OR REPLACE FUNCTION "public"."__post_users_id_coin" ("coins" integer, "userid" integer) RETURNS TABLE (id integer) AS ' UPDATE users SET coin = coin + coins WHERE userid = users.id RETURNING users.id' LANGUAGE "sql" COST 100 ROWS 1000 VOLATILE RETURNS NULL ON NULL INPUT SECURITY INVOKER เมื่อฉันเรียกใช้ฟังก์ชันนี้จาก CTE คำสั่งจะเรียกใช้งานคำสั่ง SQL แต่ไม่เรียกใช้ฟังก์ชันตัวอย่างเช่น: …
14 postgresql  cte 

2
สแน็ปช็อตฐานข้อมูล SQL Server สำหรับการทดสอบการรวม
ฉันกำลังพยายามกำหนดวิธีการทำงานกับฐานข้อมูลทดสอบ (ใน SQL Server) สำหรับการทดสอบการรวมระบบของเรา ความคิดของฉันคือการทำตามขั้นตอนเหล่านี้ในการเปิดตัวชุดทดสอบการรวมระบบ: สร้างฐานข้อมูลที่ว่างเปล่าโดยสิ้นเชิง เรียกใช้สคริปต์ "สร้างวัตถุฐานข้อมูล" เพื่อสร้างวัตถุฐานข้อมูลที่เกี่ยวข้องทั้งหมด (ตารางมุมมองลำดับ ฯลฯ ) กรอก "ฐานข้อมูล" (ค่าการค้นหา ฯลฯ ) ถ่ายภาพฐานข้อมูลที่เรียกว่า(db)_Basis"เส้นฐาน" สำหรับการทดสอบการรวมระบบในอนาคต ตอนนี้ก่อนทุกคลาสการทดสอบ (ที่มีการทดสอบ 1-n) ฉันวางแผนที่จะทำการ "กู้คืนจากสแน็ปช็อต" เพื่อกลับไปยังสถานะ "ว่าง" ที่กำหนดไว้อย่างดีไม่มากก็น้อย ทำงานเหมือนจับใจจนถึงตอนนี้ อย่างไรก็ตามมีชุดของการทดสอบการรวมที่จำเป็นต้องใช้ในฐานข้อมูลการทดสอบขนาดใหญ่ - ดังนั้นฉันหวังว่าจะทำสิ่งนี้ก่อนที่จะทำการติดตั้งการทดสอบแต่ละชุด กู้คืนฐานข้อมูลจากส(db)_Basisแน็ปช็อต แทรกข้อมูล 50'000 + แถวเหล่านั้นลงในฐานข้อมูล สร้างสแน็(db)_With_Testdataปช็อตอื่น จากนั้นสำหรับการทดสอบแต่ละครั้งให้รีเซ็ตฐานข้อมูลเป็น(db)_With_Testdataเวอร์ชันสแน็ปช็อตที่กำหนดไว้อย่างดีรันการทดสอบตรวจสอบผลลัพธ์และอื่น ๆ ปัญหาคือ: ฉันดูเหมือนจะไม่สามารถมีสอง snapshots db ในเวลาเดียวกัน - เมื่อฉันฉันไม่สามารถคืนค่าฐานข้อมูลของฉันทั้งสอง .... ฉันได้รับข้อผิดพลาดนี้: ข่าวสารเกี่ยวกับ …

1
การออกแบบฐานข้อมูลสำหรับผลิตภัณฑ์ที่มีชุดผลิตภัณฑ์
ฉันกำลังสร้างระบบฐานข้อมูลสำหรับธุรกิจค้าปลีกของฉัน ฉันได้ตั้งค่าบางตารางซึ่ง: สินค้า ซื้อ ขาย สมดุล ทั้งหมดเชื่อมต่อกันและสามารถแสดงระดับสินค้าคงคลังของฉัน ปัญหาที่ฉันมีคือฉันยังขายชุดผลิตภัณฑ์ - ซึ่งมีราคาแตกต่างจากราคาของแต่ละผลิตภัณฑ์ ตัวอย่าง: ฉันขายส้มราคา $ 1, แอปเปิ้ลราคา $ 1.2; ฉันขายแพคเกจผลไม้ 1 (2 ส้มและ 2 แอปเปิ้ล) ในราคา 3.8 ดอลลาร์, แพ็คเกจ 2 (4 ส้มและ 4 แอปเปิ้ล) ในราคา 7 ดอลลาร์ มีวิธีที่ถูกต้องในการสร้างความสัมพันธ์สำหรับกลุ่มผลิตภัณฑ์เหล่านี้หรือไม่ PS: ฉันใช้ FileMaker Pro สร้างสิ่งนี้

4
ความคืบหน้าของคำสั่ง SELECT INTO
โฟลว์ ETL ของเรามีคำสั่ง SELECT INTO ที่ดำเนินมายาวนานซึ่งสร้างตารางได้ทันทีและเติมข้อมูลด้วยหลายร้อยล้านเรคคอร์ด คำสั่งมีลักษณะเหมือน SELECT ... INTO DestTable FROM SrcTable เพื่อจุดประสงค์ในการตรวจสอบเราต้องการทราบคร่าวๆเกี่ยวกับความคืบหน้าของคำสั่งนี้ในขณะที่มันกำลังดำเนินการ (ประมาณ rowcount จำนวนไบต์ที่เขียนหรือคล้ายกัน) เราได้ลองทำสิ่งต่อไปนี้โดยไม่มีประโยชน์: -- Is blocked by the SELECT INTO statement: select count(*) from DestTable with (nolock) -- Returns 0, 0: select rows, rowmodctr from sysindexes with (nolock) where id = object_id('DestTable') -- Returns 0: …

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