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

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


4
สร้างฐานข้อมูลสิทธิ์ปฏิเสธในฐานข้อมูล 'ต้นแบบ' ไม่สามารถรับสิทธิ์
ฉันกำลังสร้างฐานข้อมูลในเซิร์ฟเวอร์ sql และแสดงข้อผิดพลาดที่"CREATE DATABASE permission denied in database 'master'" ฉันใช้เข้าสู่ระบบของผู้ดูแลระบบในตัวเอง ฉันต้องทำอะไร? กรุณาแนะนำการแก้ไข!

3
เหตุใดข้อความค้นหาจึงถูกแยกวิเคราะห์ในลักษณะที่ไม่อนุญาตให้ใช้ชื่อแทนคอลัมน์ในส่วนใหญ่
ในขณะที่พยายามเขียนแบบสอบถามฉันพบ (วิธีที่ยาก) ที่ SQL Server แยกวิเคราะห์ WHEREs ในแบบสอบถามนานก่อนที่จะแยกวิเคราะห์ SELECT เมื่อดำเนินการแบบสอบถาม เอกสาร MSDNกล่าวว่าเพื่อแยกทั่วไปตรรกะเป็นเช่นนั้น SELECT จะแยกกันเกือบที่ผ่านมา (จึงทำให้เกิดการ "ไม่มีวัตถุเช่น [นามแฝง]" ข้อผิดพลาดเมื่อพยายามที่จะใช้นามแฝงคอลัมน์ในข้ออื่น ๆ ) มีแม้กระทั่งข้อเสนอแนะเพื่อให้สามารถใช้นามแฝงได้ทุกที่ซึ่งทีมงานของ Microsoft อ้างถึงปัญหาการปฏิบัติตามมาตรฐาน ANSI (ซึ่งแสดงให้เห็นว่าพฤติกรรมนี้เป็นส่วนหนึ่งของมาตรฐาน ANSI) ในฐานะโปรแกรมเมอร์ (ไม่ใช่ DBA) ฉันพบว่าพฤติกรรมนี้ค่อนข้างสับสนเนื่องจากดูเหมือนว่าฉันจะเอาชนะจุดประสงค์ของการมีชื่อแทนคอลัมน์เป็นส่วนใหญ่ (หรืออย่างน้อยที่สุดนามแฝงคอลัมน์อาจทำให้มีประสิทธิภาพมากขึ้นหากพวกเขาเป็น แยกวิเคราะห์ก่อนหน้านี้ในการดำเนินการค้นหา) เนื่องจากสถานที่เดียวที่คุณสามารถใช้นามแฝงที่แท้จริงคือในการสั่งซื้อ ในฐานะโปรแกรมเมอร์ดูเหมือนว่าจะไม่มีโอกาสมากสำหรับการทำแบบสอบถามที่มีประสิทธิภาพสะดวกและแห้งมากขึ้น ดูเหมือนว่ามันเป็นปัญหาที่เห็นได้ชัดว่ามันมีเหตุผลแล้วว่ามีเหตุผลอื่น ๆ สำหรับการตัดสินใจว่าชื่อแทนคอลัมน์ไม่ควรได้รับอนุญาตในสิ่งอื่นใดนอกเหนือจาก SELECT และ ORDER BY แต่เหตุผลเหล่านั้นคืออะไร
16 sql-server  alias 

7
มีเครื่องมือที่ดีสำหรับการตรวจสอบฐานข้อมูล postgresql หรือไม่
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับผู้ดูแลฐานข้อมูล Exchange Exchange ปิดให้บริการใน4 ปีที่แล้ว ฉันวางแผนที่จะมีฐานข้อมูล postgresql ที่โหลดสูงมากในไม่ช้า ฉันมีประสบการณ์ในการจัดการฐานข้อมูล mysql ที่มีโหลดสูง แต่ตอนนี้เราต้องใช้ postgresql ฉันต้องการทราบว่าเครื่องมือใดที่ดีที่สุดสำหรับการจัดการฐานข้อมูลแบบวันต่อวันและการรายงานสถานะ (แน่นอนว่าคอนโซลเป็นตัวเลือกที่ดีที่สุด แต่ฉันต้องการทราบเกี่ยวกับตัวเลือกอื่น ๆ ด้วย) ยินดีต้อนรับหมดอายุทั้งหมด!

2
จะเกิดอะไรขึ้นเมื่อไม่มีหน่วยความจำกายภาพเหลืออยู่สำหรับ SQL Server
ในขณะที่ Google กำลังค้นหาข้อมูลที่ขัดแย้งกัน บางเว็บไซต์ระบุว่าเมื่อไม่มีหน่วยความจำกายภาพเหลืออยู่สำหรับข้อมูล SQL Server จะย้ายข้อมูลที่มีอยู่แล้วลงใน TEMPDB (ดู: SQL Server: Demystifying TempDb และคำแนะนำ ) แต่เว็บไซต์อื่น ๆ ระบุว่าเมื่อมีหน่วยความจำกายภาพเหลืออยู่ไม่เพียงพอระบบปฏิบัติการสามารถใช้ PAGE FILE และย้ายข้อมูลจากหน่วยความจำกายภาพไปยังมัน (ดูหน้าไฟล์สำหรับ SQL Server ) ฉันสงสัยว่า SQL Server เขียนข้อมูลเมื่อใดหน่วยความจำกายภาพหมด? หากต้องการ tempdb หรือไปยังไฟล์หน้า OS? หรืออาจจะทั้งคู่?

2
การใช้ขนาดคอลัมน์ใหญ่เกินความจำเป็น
ฉันกำลังสร้างฐานข้อมูล SQL Server กับคนอื่น หนึ่งในตารางมีขนาดเล็ก (6 แถว) พร้อมข้อมูลที่อาจคงที่ มีความเป็นไปได้จากระยะไกลว่าจะมีการเพิ่มแถวใหม่ ตารางมีลักษณะดังนี้: CREATE TABLE someTable ( id int primary key identity(1,1) not null, name varchar(128) not null unique ); INSERT INTO someTable values ('alice', 'bob something', 'charles can dance', 'dugan was here'); ฉันกำลังดูความยาวถ่านของnameคอลัมน์นั้นและฉันคิดว่าค่าของมันอาจจะไม่ใหญ่กว่าพูด 32 ตัวอักษรอาจจะไม่ใหญ่กว่า 24. มีประโยชน์กับการเปลี่ยนคอลัมน์นี้เป็นหรือไม่ เช่นvarchar(32)? นอกจากนี้มีข้อได้เปรียบใด ๆ หรือไม่ที่จะรักษาขนาดคอลัมน์เริ่มต้นให้เป็นทวีคูณของ 4, …

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

1
สร้างฐานข้อมูลบนพาร์ติชัน RAW ไม่ทำงานอีกต่อไป?
ฉันพยายามที่จะสร้างฐานข้อมูลโดยใช้สองดิบคือพาร์ทิชันที่ยังไม่ฟอร์แมต Microsoft เอกสารระบุว่าคุณสามารถทำได้คุณเพียงแค่ระบุตัวอักษรไดรฟ์ของพาร์ทิชันดิบเช่นเดียวกับใน: CREATE DATABASE DirectDevice ON (NAME = DirectDevice_system, FILENAME = 'S:') LOG ON (NAME = DirectDevice_log, FILENAME = 'T:') อย่างไรก็ตาม SQL Server 2017 ส่งคืนข้อผิดพลาดนี้: ข่าวสารเกี่ยวกับ 5170 ระดับ 16 สถานะ 4 บรรทัด 1 ไม่สามารถสร้างไฟล์ 'S:' ได้เนื่องจากมีอยู่แล้ว เปลี่ยนพา ธ ของไฟล์หรือชื่อไฟล์แล้วลองดำเนินการอีกครั้ง เกี่ยวกับข้อความ 1802 ระดับ 16 สถานะ 4 บรรทัดที่ 1 สร้างฐานข้อมูลล้มเหลว ไม่สามารถสร้างชื่อไฟล์บางรายการ …

1
เหตุใด CHECKDB จึงอ่านไฟล์บันทึกธุรกรรมบนฐานข้อมูลที่มีตารางปรับแต่งหน่วยความจำ
tl; dr : เหตุใด CHECKDB จึงอ่านบันทึกธุรกรรมสำหรับฐานข้อมูลผู้ใช้ที่มีตารางเพิ่มประสิทธิภาพหน่วยความจำ ปรากฏว่า CHECKDB กำลังอ่านไฟล์บันทึกธุรกรรมของฐานข้อมูลผู้ใช้เมื่อตรวจสอบฐานข้อมูลของฉันโดยเฉพาะฐานข้อมูลที่ใช้ตาราง OLTP ในหน่วยความจำ CHECKDB สำหรับฐานข้อมูลนี้ยังคงเสร็จสิ้นในระยะเวลาที่เหมาะสมดังนั้นฉันจึงอยากรู้เกี่ยวกับพฤติกรรม แต่มันเป็นระยะเวลายาวนานที่สุดสำหรับ CHECKDB ของฐานข้อมูลทั้งหมดในอินสแตนซ์นี้ ในการตรวจสอบCHECKDB จากทุกมุมมองของมหากาพย์ Paul Paulal : คำอธิบายที่สมบูรณ์ของขั้นตอน CHECKDB ทั้งหมดฉันเห็นว่า CHECKDB pre-SQL 2005 CHECKDB ใช้ในการอ่านบันทึกเพื่อให้ได้มุมมองที่สอดคล้องกันของฐานข้อมูล แต่เนื่องจากนี่เป็น 2016 จึงใช้สแน็ปช็อตฐานข้อมูลภายใน อย่างไรก็ตามหนึ่งในข้อกำหนดเบื้องต้นสำหรับสแน็ปช็อตคือ: ฐานข้อมูลต้นทางต้องไม่มีกลุ่มไฟล์ MEMORY_OPTIMIZED_DATA ฐานข้อมูลผู้ใช้ของฉันมีหนึ่งในกลุ่มไฟล์เหล่านี้ดังนั้นจึงดูเหมือนว่าสแน็ปช็อตอยู่นอกตาราง ตามเอกสาร CHECKDB : หากไม่สามารถสร้างสแน็ปช็อตหรือระบุ TABLOCK ได้ DBCC CHECKDB จะได้รับการล็อกเพื่อให้ได้ความสอดคล้องที่จำเป็น ในกรณีนี้จำเป็นต้องใช้การล็อกฐานข้อมูลแบบเอกสิทธิ์เฉพาะบุคคลเพื่อทำการตรวจสอบการจัดสรรและจำเป็นต้องใช้การล็อกตารางแบบแบ่งใช้เพื่อทำการตรวจสอบตาราง โอเคเรากำลังทำการล็อกฐานข้อมูลและล็อคตารางแทนสแนปชอต แต่นั่นก็ไม่ได้อธิบายว่าทำไมมันต้องอ่านบันทึกการทำธุรกรรม แล้วอะไรล่ะ ฉันได้จัดทำสคริปต์ด้านล่างเพื่อจำลองสถานการณ์ …

1
จะขยายปริมาณออกในกล่อง SQL Server ได้อย่างไร
นี่คือคำถามสำหรับ sys เลือกที่นั่น (หรือผู้ที่เคยผ่านประสบการณ์นี้มาก่อน) บริษัท ของฉันต้องการจัดสรรพื้นที่ดิสก์เพิ่มเติมในกล่อง SQL Server ที่มีอยู่ในการผลิต เรากำลังสงสัยว่าการขยายไดรฟ์ข้อมูล ("ขยายระดับเสียง ... " ในการจัดการดิสก์) สามารถทำได้ออนไลน์หรือไม่หรือบริการ SQL Server นั้นจำเป็นต้องปิดตัวลงหรือไม่ เหตุผลใดที่บริการเซิร์ฟเวอร์ SQL ควรหยุดทำเช่นนี้หรือไม่ก็เป็นเพียงการดำเนินการนี้ในระหว่างวัน? ในกรณีที่รายละเอียดของระบบมีความเกี่ยวข้อง นี่คือกล่องจริง (ไม่มีการจำลองเสมือน) ที่ใช้ Windows 2012 R2 และ SQL Server 2008 R2 ขอบคุณ!

5
ข้อผิดพลาดของ SQL Server 8632 เนื่องจากมีรายการมากกว่า 100,000 รายการในส่วนคำสั่ง WHERE
ปัญหาของฉัน (หรืออย่างน้อยข้อความแสดงข้อผิดพลาด) คล้ายกันมากกับตัวประมวลผลแบบสอบถามที่ไม่มีทรัพยากรภายใน - แบบสอบถาม SQL ที่ยาวมากๆ ลูกค้าของฉันกำลังทำงานกับ SQL select-query ซึ่งมี where-clause พร้อมกับ 100,000 รายการ การค้นหาล้มเหลวด้วยข้อผิดพลาด 8632 และข้อความแสดงข้อผิดพลาด ข้อผิดพลาดภายใน: ถึงขีด จำกัด บริการนิพจน์แล้ว โปรดค้นหานิพจน์ที่ซับซ้อนที่อาจเกิดขึ้นในข้อความค้นหาของคุณและลองทำให้มันง่ายขึ้น) ฉันพบว่ามันแปลกมากที่ข้อความแสดงข้อผิดพลาดนี้ถูกส่งไปที่ 100,000 รายการดังนั้นฉันสงสัยว่านี่เป็นค่าที่กำหนดได้หรือไม่ นี่คือกรณีและในกรณีที่ใช่ฉันจะเพิ่มมูลค่านี้เป็นค่าที่สูงขึ้นได้อย่างไร ในMSDNมีข้อเสนอให้เขียนแบบสอบถามซ้ำ แต่ฉันต้องการหลีกเลี่ยงปัญหานี้ ในขณะเดียวกันฉันพบว่ารายการของสิ่งที่ฉันพูดถึงมีจำนวนธรรมชาติ แต่บางรายการก็เรียงตามลำดับ (เช่น (1,2,3,6,7,8,9,10,12, 13,15,16,17,18,19,20) สิ่งนี้ทำให้ SQL อยู่ตรงไหน - clause: where entry in (1,2,3,6,7,8,9,10,12,13,15,16,17,18,19,20) ฉันสามารถแปลงให้เป็น: where (entry between 1 and 3) …

1
PostgreSQL ตรวจสอบสิทธิ์ของวัตถุในลำดับใด
รับบทบาทฐานข้อมูล, user1ฟังก์ชั่นที่something()กำหนดไว้เป็นขั้นตอนการจัดเก็บและมุมมองที่สร้างขึ้นเช่น: CREATE VIEW view1 AS select * from something() และได้รับการอนุญาตนี้: REVOKE ALL ON FUNCTION something FROM user1 REVOKE SELECT ON view1 FROM user1 เมื่อฉันเรียกฉันได้รับข้อผิดพลาดSELECT * FROM view1permission denied for function something() คำถามของฉันคือถ้าฉันเพิกถอนการอนุญาตที่เลือกไว้ในมุมมองเหตุใดจึงเรียกใช้ฟังก์ชันนี้ ฉันคาดหวังว่าจะได้รับสิ่งที่ชอบ: permission denied for relation view1 ขอขอบคุณ!

2
NOT (a = 1 AND b = 1) vs (a <> 1 AND b <> 1)
ในWHEREส่วนของแบบสอบถาม SQL ฉันคาดว่าสองเงื่อนไขนี้จะมีพฤติกรรมเหมือนกัน: NOT (a=1 AND b=1) VS a&lt;&gt;1 AND b&lt;&gt;1 เงื่อนไขแรกทำงานตามที่คาดไว้และในขณะที่ฉัน epxect เงื่อนไขที่สองเพื่อทำสิ่งเดียวกันมันไม่ได้ นี่เป็นสิ่งพื้นฐานมาก แต่น่าละอายที่ฉันไม่เห็นสิ่งที่ฉันทำผิด
16 condition 

3
ทำไมฉันถึงชอบ ALGORITHM = COPY ถึง ALGORITHM = INPLACE
ตั้งแต่ MySQL 5.6 แนะนำ DDL ออนไลน์ALTER TABLEคำสั่งสามารถเลือกที่จะมีALGORITHM=INPLACEหรือALGORITHM=COPYระบุก็ได้ ภาพรวมของ DDL ออนไลน์หมายเหตุที่โดยปกติINPLACEจะใช้ที่ใดก็ตามที่เป็นไปได้และหมายถึง (โดยที่ไม่เคยระบุว่าค่อนข้าง) ว่าINPLACEอัลกอริทึมที่มีราคาถูกกว่าCOPYหนึ่งคือ ดังนั้นฉันจะต้องระบุเหตุผลอะไรALGORITHM=COPYในALTER TABLEแถลงการณ์?

1
(x is not NULL) vs (ไม่ใช่ x is NULL) ใน PostgreSQL
ทำไมx IS NOT NULLไม่เท่ากับNOT x IS NULL? รหัสนี้: CREATE TABLE bug_test ( id int, name text ); INSERT INTO bug_test VALUES (1, NULL); DO $$ DECLARE v_bug_test bug_test; BEGIN RAISE NOTICE '%: %', v_bug_test, (v_bug_test IS NULL); RAISE NOTICE '%: %', v_bug_test, (v_bug_test IS NOT NULL); RAISE NOTICE '%: %', …
16 postgresql  null 

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