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

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

2
จำกัด สิทธิ์การเชื่อมต่อบน SQL Server
ฉันมีแอพที่จะปรับใช้ในการผลิตที่ใช้ความปลอดภัย 'ระบบเกียรติ' นั่นคือผู้ใช้ทั้งหมดเชื่อมต่อกับฐานข้อมูลโดยใช้ข้อมูลประจำตัวผู้ใช้ SQL / passwd และแอปจัดการสิทธิ์เอง ส่วนหลังไม่ได้รบกวนฉันเท่าที่ความจริงที่ว่าวัตถุการเชื่อมต่อมีข้อมูลประจำตัวที่ฝังตัวและสามารถคัดลอกได้อย่างอิสระ ฉันพยายามหาวิธี จำกัด การเชื่อมต่อกับชุดลูกค้าที่ จำกัด มากขึ้น ฉันสามารถสร้างกฎไฟร์วอลล์เพื่อ จำกัด โดย IP แน่นอน มีวิธีใดบ้างในการ 'เข้าสู่ระบบ SQL ล่วงหน้า' โดยใช้บัญชี Machine หรือการเป็นสมาชิกของโดเมน?

2
ตาราง mysql ที่มีประสิทธิภาพ / การออกแบบดัชนีสำหรับ 35 ล้านแถว + ตารางโดยมี 200+ คอลัมน์ที่เกี่ยวข้อง (สองเท่า) การรวมกันใด ๆ ที่อาจมีการสอบถาม
ฉันกำลังมองหาคำแนะนำในการออกแบบตาราง / ดัชนีสำหรับสถานการณ์ต่อไปนี้: ฉันมีตารางขนาดใหญ่ (ข้อมูลประวัติราคาหุ้น InnoDB 35 ล้านแถวและเพิ่มขึ้น) ด้วยคีย์หลักผสม (assetid (int) วันที่ (วันที่) นอกเหนือจากข้อมูลการกำหนดราคาแล้วฉันมี 200 ค่าสองเท่าที่จำเป็นต้องสอดคล้องกับแต่ละระเบียน CREATE TABLE `mytable` ( `assetid` int(11) NOT NULL, `date` date NOT NULL, `close` double NOT NULL, `f1` double DEFAULT NULL, `f2` double DEFAULT NULL, `f3` double DEFAULT NULL, `f4` double DEFAULT NULL, ... skip …

1
ผู้ฟัง Oracle 11g ล้มเหลวด้วยข้อผิดพลาด ORA-12514 และ ORA-12505
ฉันใช้งานอินสแตนซ์ของ Oracle 11g ในเครื่องของฉันและสามารถเชื่อมต่อกับอินสแตนซ์ในพื้นที่ได้โดยตรงผ่าน SqlPlus: c:\>sqlplus ace SQL*Plus: Release 11.2.0.2.0 Production on Mon Mar 11 11:50:20 2013 Copyright (c) 1982, 2010, Oracle. All rights reserved. Enter password: Connected to: Oracle Database 11g Express Edition Release 11.2.0.2.0 - Beta SQL> select count(*) from my_table ; COUNT(*) ---------- 5297 แต่ฉันไม่สามารถเชื่อมต่อผ่านฟัง: c:\>sqlplus -L …

1
คำเตือนในแผนแบบสอบถาม“ Cardinality Estimate”
create table T(ID int identity primary key) insert into T default values insert into T default values go select cast(ID as varchar(10)) as ID from T where ID = 1 แบบสอบถามด้านบนมีคำเตือนในแผนแบบสอบถาม <Warnings> <PlanAffectingConvert ConvertIssue="Cardinality Estimate" Expression="CONVERT(varchar(10),[xx].[dbo].[T].[ID],0)" /> </Warnings> ทำไมถึงมีคำเตือน? นักแสดงในรายการฟิลด์จะมีผลต่อการประมาณค่า cardinality อย่างไร

3
มีความแตกต่างในการดำเนินการระหว่างเงื่อนไข JOIN และเงื่อนไข WHERE หรือไม่
มีความแตกต่างของประสิทธิภาพระหว่างเคียวรีตัวอย่างทั้งสองหรือไม่ แบบสอบถาม 1: select count(*) from table1 a join table2 b on b.key_col=a.key_col where b.tag = 'Y' แบบสอบถาม 2; select count(*) from table1 a join table2 b on b.key_col=a.key_col and b.tag = 'Y' สังเกตเห็นความแตกต่างเพียงอย่างเดียวคือการวางเงื่อนไขเสริม; ครั้งแรกที่ใช้WHEREประโยคและครั้งที่สองจะเพิ่มเงื่อนไขในONข้อ เมื่อฉันเรียกใช้แบบสอบถามเหล่านี้ในระบบ Teradata ของฉันแผนการอธิบายนั้นเหมือนกันและขั้นตอนการเข้าร่วมแสดงเงื่อนไขเพิ่มเติมในแต่ละกรณี อย่างไรก็ตามในคำถาม SO นี้เกี่ยวกับ MySQL หนึ่งในคำตอบที่แนะนำว่าควรใช้รูปแบบที่สองเนื่องจากWHEREการประมวลผลเกิดขึ้นหลังจากทำการรวม มีกฎทั่วไปที่ต้องปฏิบัติตามเมื่อมีการเข้ารหัสคิวรีเช่นนี้ ฉันเดาว่ามันต้องขึ้นอยู่กับแพลตฟอร์มเพราะเห็นได้ชัดว่ามันไม่ได้สร้างความแตกต่างให้กับฐานข้อมูลของฉัน แต่บางทีนั่นอาจเป็นเพียงคุณสมบัติของ Teradata และถ้ามันเป็นขึ้นอยู่กับแพลตฟอร์มผมชอบมากที่จะได้รับการอ้างอิงเอกสารไม่กี่; ฉันไม่รู้ว่าจะมองหาอะไรจริงๆ

3
อะไรคือความแตกต่างระหว่าง POINT (X, Y) และ GeomFromText (“ POINT (XY)”)
ฉันต้องการจัดเก็บตำแหน่งทางเรขาคณิตบางอย่างในฐานข้อมูล MySQL ของฉัน สำหรับสิ่งนี้ฉันใช้ประเภทข้อมูล POINT เกือบทุกที่ฉันอ่านว่าGeomFromTextควรใช้ฟังก์ชั่นเพื่อแทรกข้อมูลลงในตาราง อย่างไรก็ตามฉันพบว่าPOINT(X,Y)ยังใช้งานได้ ฉันไม่พบคำอธิบายว่าทำไมควรจะนำมาใช้แทนGeomFromTextPOINT ตัวอย่างเช่นฉันมีความสัมพันธ์แบบง่าย ๆ ดังต่อไปนี้: CREATE TABLE Site ( SiteID BIGINT UNSIGNED, Position POINT ); และฉันสามารถแทรกค่าโดยใช้สองตัวแปรต่อไปนี้: INSERT INTO Site ( 1, GeomFromText( 'POINT(48.19976 16.45572)' ) ); INSERT INTO Site ( 2, POINT(48.19976, 16.45572) ); เมื่อฉันดูตาราง ( SELECT * FROM Site) ฉันเห็นหยดเลขฐานสองเดียวกันสำหรับตำแหน่งและเมื่อฉันดูพิกัด ( SELECT *, …


1
ทำสำเนาผู้ใช้ฐานข้อมูล Oracle
เราจะให้ผู้ตรวจสอบภายนอกมาตรวจสอบฐานข้อมูล Oracle ของเรา พวกเขาจะใช้เครื่องมือในการตรวจสอบและพวกเขาต้องการ ID ผู้ใช้ที่สามารถเชื่อมต่อกับฐานข้อมูลและรับข้อมูลจากมัน เรามีผู้ใช้ที่มีอยู่ในฐานข้อมูลสำหรับสิ่งนี้ อย่างไรก็ตามมันเป็นรหัสการผลิตและเราไม่สามารถล็อคเอาไว้ได้ เราต้องการโคลน / ทำซ้ำ ID นี้รวมถึงบทบาทและสิทธิ์ มีวิธีที่เราสามารถทำได้ใน Oracle หรือไม่?
17 oracle 

1
สิทธิ์ของ SQL Server ในการสร้างเรียกคืนลบฐานข้อมูลบางอย่างเท่านั้น
บน MS SQL Server 2008 R2 ฉันต้องมีผู้ใช้ที่สามารถสร้าง, เรียกคืน, DBCC CHECKDB แล้วปล่อยฐานข้อมูล แต่เขาจะต้องไม่สามารถเข้าถึงหรือลบฐานข้อมูลที่ระบุบนเซิร์ฟเวอร์ (เหตุผลด้านความปลอดภัย) เป็นไปได้หรือไม่

2
การหยุดชะงักจากการล็อคบนตารางชั่วคราวเดียวกันในกระบวนการที่แตกต่างกัน
ฉันได้พบการหยุดชะงักที่ดูเหมือนจะแสดงสิ่งที่ฉันคิดว่าเป็นไปไม่ได้ มีสองกระบวนการที่เกี่ยวข้องในการหยุดชะงัก: 1. กระบวนการ 8cf948 SPID 63 ดำเนินการ ALTER TABLE บนตารางชั่วคราว #PB_Cost_Excp_Process_Invoices_Work เป็นเจ้าของล็อค IX บนโต๊ะ #PB_Cost_Excp_Process_Invoices_Work ด้วย ID วัตถุ 455743580 2. กระบวนการ 4cb3708 SPID 72 ดำเนินการใน UPDATE บนตารางชั่วคราว #PB_Cost_Excp_Process_Invoices_Work ซึ่งควรจะเป็นสำเนาเฉพาะของตาราง เป็นเจ้าของล็อค Sch-M ใน #PB_Cost_Excp_Process_Invoices_Work ด้วย ID วัตถุเดียวกัน 455743580 ! นี่น่าจะเป็นไปไม่ได้ ฉันพลาดอะไรไปรึเปล่า? #Temporary ตารางได้รับการใช้ซ้ำระหว่าง SPID ทั้งสองนี้จริง ๆ หรือไม่ นี่คือบน SQL Server …

5
วิธีที่เร็วที่สุดในการส่งออกตารางไปยังไฟล์ข้อความคืออะไร
ฉันจะมีฐานข้อมูล SQL Server 2012 และตารางที่มี 3 ล้านแถวและอาจ 50 คอลัมน์ สิ่งใดจะเป็นวิธีที่เร็วที่สุดสำหรับกระบวนการเบื้องหลัง. net (อาจออกคำสั่ง SQL หรือ Powershell) เพื่อส่งออกไปยังไฟล์ข้อความหนึ่งบรรทัดสำหรับแต่ละแถวของข้อมูล? กระบวนการ. net ควรทราบเมื่อการส่งออกเสร็จสิ้นหรือมีข้อผิดพลาดใด ๆ ประเภทข้อมูลจะทั้งหมดหรือintnvarchar ฉันสมมติว่ารหัส C # บริสุทธิ์โดยใช้ ado.net เพื่อดำเนินการselect *คำสั่งและวนซ้ำไปที่ชุดข้อมูลและการเขียนไปยังไฟล์สำหรับแต่ละระเบียนจะช้าและไม่มีวิธีใดที่ฉันสามารถทำให้ขนานกันได้ เป็นการดีที่การส่งออกจะไปยังโฟลเดอร์เครือข่ายระยะไกลที่ใช้ร่วมกันไม่ใช่โฟลเดอร์บนเครื่อง SQL Server SQL Server จะเป็นคลัสเตอร์ HA SSIS เหมาะสมกับสิ่งนี้มากกว่าหรือไม่ไม่จำเป็นต้องแปลงข้อมูล กระบวนการ. Net จะทำงานบน Machine A, SQL Server บน Machine B และปลายทางไฟล์ที่ดีที่สุดคือการแชร์เครือข่าย ทางเลือกหนึ่งคือเซิร์ฟเวอร์ SQL …

6
SQL Server Management Studio 2012: มีโฟลเดอร์ในโครงการ SSMS อย่างไร
ฉันใช้ SSMS 2012 เพื่อพูดคุยกับเซิร์ฟเวอร์ SQL 2012 และเซิร์ฟเวอร์ Azure SQL ที่เราใช้ ฉันยอมรับว่าฉันไม่ใช่ผู้เชี่ยวชาญ SQL ดังนั้นฉันจึงบันทึกสคริปต์ SQL ส่วนใหญ่ไว้เพื่อใช้อ้างอิงในอนาคต ฉันพบสคริปต์สคริปต์ SQL อย่างน้อย 20 สคริปต์ในโครงการ SSMS และพวกเขาทั้งหมดอยู่ภายใต้โฟลเดอร์ 'แบบสอบถาม' เดียวกัน มีวิธีที่ฉันสามารถสร้าง "โฟลเดอร์ย่อย" ในโครงการเพื่อให้ฉันสามารถจัดระเบียบสคริปต์ของฉันได้อย่างถูกต้องหรือไม่ คนอื่น ๆ ส่วนใหญ่เก็บสคริปต์ของพวกเขาได้อย่างไร ฉันค่อนข้างแน่ใจว่าข้อบกพร่องนี้เป็นสามเณรเช่นฉันมันจะต้องเป็นปัญหาจริงสำหรับผู้ดูแลระบบจริง (อาจมีหลายร้อยสคริปต์?)

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

3
การตั้งค่า CLR กลางที่เก็บ CLR โพรซีเดอร์ / ฟังก์ชันที่เก็บไลบรารีสำหรับ procs ที่จัดเก็บภายในในฐานข้อมูลอื่น ๆ ที่จะใช้?
ฉันต้องการใช้รหัสที่ฉันพัฒนาใน C # CLR เพื่อใช้ในฐานข้อมูลทั้งหมดในระบบเพื่อให้ฉันไม่ต้องตั้งค่าให้เชื่อถือได้และเปิด CLR และเก็บรหัสเดียวกันไว้ในแต่ละอัน . มีวิธีที่ดีที่สุดในการทำเช่นนี้จากมุมมองการบริหารและความปลอดภัย? ฟังก์ชัน CLR นั้นพื้นฐานมากเช่นตัวแบ่งสตริง, การตรวจสอบความถูกต้องของอีเมล, url en / decode, base64 และอื่น ๆ ฉันต้องการเฉพาะ dbo schema ในแต่ละฐานข้อมูลเพื่อให้สามารถเข้าถึงฟังก์ชันได้ มีวิธีง่าย ๆ ในการทำเช่นนี้? นอกจากนี้ฉันยังไม่ชัดเจนว่า CLR dll ถูกฝังอยู่หรือไม่และถ้าฉันย้ายฐานข้อมูลมันจะแท็กตามหรือฉันต้องย้าย dll ด้วยเช่นกัน ขอบคุณ

5
วิธีจัดการผู้ใช้หลายล้านคน
ฉันกำลังจะเปิดตัวสิ่งที่ยิ่งใหญ่จริงๆ ฉันต้องเตรียมเซิร์ฟเวอร์และฐานข้อมูลของฉัน ฉันต้องการจัดกลุ่มผู้ใช้ 100,000 คนในตารางผู้ใช้แยกกัน แต่ฉันไม่ทราบวิธีเชื่อมโยงผู้ใช้รายหนึ่งที่พยายามล็อกอินเข้าสู่ตารางผู้ใช้ที่เหมาะสม ตัวอย่างเช่นฉันจะรู้ได้อย่างไรว่าผู้ใช้jay@mail.comนั้นเกี่ยวข้องกับตารางผู้ใช้ # 36 มันจะเหมือนกันไหมที่มีผู้ใช้ 10 ล้านคนในตารางผู้ใช้หนึ่งคนหรือ 100 จาก 100,000 คน? Facebook เป็นอย่างไร ฉันไม่อยากเชื่อเลยว่าพวกเขาจะมีโต๊ะผู้ใช้ทั่วโลกที่มี 950 ล้านรายการ
17 mysql  users 

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