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

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

3
วิธีการให้สิทธิ์ในฟังก์ชันที่มีค่าเป็นตาราง
ฉันทำถูกแล้ว ... ฉันมีฟังก์ชั่นที่คืนเงิน ... CREATE FUNCTION functionName( @a_principal money, @a_from_date datetime, @a_to_date datetime, @a_rate float ) RETURNS money AS BEGIN DECLARE @v_dint money set @v_dint = computation_here set @v_dint = round(@v_dint, 2) RETURN @v_dint END GO Grant execute on functionName to another_user Go ฉันแค่สงสัยว่ามันเป็นไปได้ที่จะถูกแปลงเป็น iTVF หรือไม่? ฉันพยายามทำสิ่งนี้ แต่ฉันพบข้อผิดพลาด: CREATE FUNCTION …

3
ใน PostgreSQL มีฟังก์ชั่นรวมที่ปลอดภัยชนิดแรก () หรือไม่?
คำถามแบบเต็มเขียนใหม่ ฉันกำลังมองหาฟังก์ชันการรวมครั้งแรก () ที่นี่ฉันพบบางสิ่งที่เกือบจะได้ผล: CREATE OR REPLACE FUNCTION public.first_agg ( anyelement, anyelement ) RETURNS anyelement LANGUAGE sql IMMUTABLE STRICT AS $$ SELECT $1; $$; -- And then wrap an aggregate around it CREATE AGGREGATE public.first ( sfunc = public.first_agg, basetype = anyelement, stype = anyelement ); ปัญหาคือเมื่อคอลัมน์ varchar (n) ผ่านฟังก์ชั่นแรก …

4
มีอะไรขึ้นอยู่กับการเรียงคอลัมน์บางคอลัมน์ใน sys.database?
ฉันพยายามเรียกใช้UNPIVOTคอลัมน์ต่างๆที่มีอยู่ในsys.databasesSQL Server เวอร์ชันต่างๆตั้งแต่ปี 2005 ถึง 2012 ความUNPIVOTล้มเหลวพร้อมกับข้อความแสดงข้อผิดพลาดต่อไปนี้: ข่าวสารเกี่ยวกับ 8167 ระดับ 16 สถานะ 1 สาย 48 ประเภทของคอลัมน์ "CompatibilityLevel" ขัดแย้งกับประเภทของคอลัมน์อื่น ๆ ที่ระบุในรายการ UNPIVOT T-SQL: DECLARE @dbname SYSNAME; SET @dbname = DB_NAME(); SELECT [Database] = unpvt.DatabaseName , [Configuration Item] = unpvt.OptionName , [Configuration Value] = unpvt.OptionValue FROM ( SELECT DatabaseName = name , …

1
VACUUM ส่งคืนพื้นที่ดิสก์ไปยังระบบปฏิบัติการ
VACUUMมักจะไม่คืนพื้นที่ว่างในดิสก์ไปยังระบบปฏิบัติการยกเว้นในบางกรณีพิเศษ จากเอกสาร: รูปแบบมาตรฐานของการVACUUMลบเวอร์ชันของแถวที่ตายแล้วในตารางและดัชนีและทำเครื่องหมายพื้นที่ที่มีอยู่สำหรับการใช้ซ้ำในอนาคต อย่างไรก็ตามมันจะไม่คืนพื้นที่ไปยังระบบปฏิบัติการยกเว้นในกรณีพิเศษที่หนึ่งหรือหลายหน้าท้ายตารางกลายเป็นอิสระทั้งหมดและสามารถล็อคตารางแบบเอกสิทธิ์ได้อย่างง่ายดาย ในทางตรงกันข้ามVACUUM FULLบีบอัดตารางอย่างแข็งขันด้วยการเขียนไฟล์ตารางเวอร์ชันใหม่ที่สมบูรณ์โดยไม่มีพื้นที่ว่าง สิ่งนี้จะลดขนาดของตาราง แต่จะใช้เวลานาน นอกจากนี้ยังต้องการพื้นที่ดิสก์เพิ่มเติมสำหรับสำเนาใหม่ของตารางจนกว่าการดำเนินการจะเสร็จสมบูรณ์ คำถามคือจะทำอย่างไรเมื่อฐานข้อมูลนี้one or more pages at the end of a table become entirely freeสำเร็จ? สิ่งนี้สามารถทำได้ผ่านVACUUM FULLแต่ฉันมีพื้นที่ไม่เพียงพอที่จะใช้มัน มีความเป็นไปได้อื่นอีกไหม?

12
เหตุใดจึงมีข้อ จำกัด ในฐานข้อมูลมากกว่าใช้รหัส
เหตุใดจึงมีข้อ จำกัด ในฐานข้อมูล มันจะไม่ยืดหยุ่นกว่าที่จะใส่ไว้ในรหัสหรือไม่ ฉันกำลังอ่านหนังสือผู้เริ่มต้นใช้งานฐานข้อมูลดังนั้นฉันจึงขอให้เป็นผู้เริ่มต้น สมมติว่าฉันได้ออกแบบฐานข้อมูลรวมถึงโมเดลเอนทิตีนี้: entity type | sub-types ----------------+-------------------------------------------- Person | Employee, Student, ... Student | Graduate, Undergraduate, ... Employee | Teacher, Administrator, ... ข้อ จำกัด ในปัจจุบัน: ผู้ที่ลงทะเบียนในระบบสามารถเป็นนักเรียนหรือพนักงานเท่านั้น บุคคลนิติบุคคลต้องมีหมายเลขสังคมที่ไม่ซ้ำกันซึ่งเราสันนิษฐานว่าทุกคนมีเพียงหนึ่งเดียวที่ไม่ซ้ำกัน (aka, คีย์หลักที่ดีพอ ) (ดู # 1) ต่อมาเราตัดสินใจที่จะลบหมายเลข 1: หากวันหนึ่งวิทยาลัยตัดสินใจว่าTeacher( Employeeประเภทย่อย) สามารถทำได้เช่นStudentกันการเรียนในเวลาว่างของพวกเขามันยากมากที่จะเปลี่ยนการออกแบบฐานข้อมูลซึ่งอาจมีหลายพันล้านล้าน zillions ของรายการมากกว่าแค่การเปลี่ยนลอจิกในโค้ด: ส่วนที่ไม่อนุญาตให้บุคคลที่ลงทะเบียนทั้งในฐานะนักเรียนและพนักงาน (มันไม่น่าจะเป็นไปได้มาก แต่ฉันไม่สามารถนึกถึงสิ่งอื่นได้ในตอนนี้ เห็นได้ชัดว่าเป็นไปได้) ทำไมเราใส่ใจกฎธุรกิจในการออกแบบฐานข้อมูลมากกว่าในรหัส? # …

3
หยุดการทำงานของ Studio จัดการเซิร์ฟเวอร์ SQL โดยอัตโนมัติ
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา มีวิธีที่จะระงับการทำให้สมบูรณ์อัตโนมัติของ SQL Server Management Studio ชั่วคราวในขณะที่พิมพ์แบบสอบถามหรือไม่? ฉันไม่ต้องการปิดใช้งานการเติมข้อความอัตโนมัติให้สมบูรณ์เพียงแค่พูดว่ากดปุ่มค้างไว้ในขณะที่พิมพ์ด้วยคำใดคำหนึ่งเพื่อไม่ให้เข้าทาง ตัวอย่างเช่นฉันมีคำถามต่อไปนี้ SELECT Foo, Foo2 FROM SomeTable ขณะที่ผมพิมพ์Fooแล้วกดพื้นที่บาร์สตูดิโอ SQL Server บริหารเตะอัตโนมัติสมบูรณ์และเสร็จสิ้นไปFooFooBar

1
เหตุใด SQL Server“ Compute Scalar” เมื่อฉันเลือกคอลัมน์ที่คำนวณยังคงอยู่
สามSELECTคำสั่งในรหัสนี้ USE [tempdb]; GO SET NOCOUNT ON; CREATE TABLE dbo.persist_test ( id INT NOT NULL , id5 AS (id * 5) , id5p AS (id * 5) PERSISTED ); INSERT INTO dbo.persist_test (id) VALUES (1), (2), (3); SELECT id FROM dbo.persist_test; SELECT id5 FROM dbo.persist_test; SELECT id5p FROM dbo.persist_test; DROP …

3
ฉันจะเพิ่มคอลัมน์ rowversion ลงในตารางขนาดใหญ่โดยมีเวลาหยุดทำงานน้อยที่สุดได้อย่างไร
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา ใช้ SQL Server 2008 และใหม่กว่าฉันต้องการเพิ่มคอลัมน์ rowversion ในตารางขนาดใหญ่อย่างไรก็ตามเมื่อฉันเพียงแค่ ALTER TABLE [Tablename] ADD Rowversion [Rowversion] NOT NULL จากนั้นตารางจะไม่พร้อมใช้งานสำหรับการอัปเดตนานเกินไป ฉันสามารถใช้กลยุทธ์ใดในการลดเวลาหยุดทำงานนี้ ฉันจะพิจารณาอะไร แน่นอนง่ายกว่าดีกว่า แต่ฉันจะพิจารณากลยุทธ์ใด ๆ ความคิดของฉันคือเป็นทางเลือกสุดท้ายฉันสามารถรักษาตารางการแสดงละครที่ปรับปรุงใหม่โดยทริกเกอร์แล้ว sp_rename ตาราง staging ลงในตารางเดิม แต่ฉันหวังว่าจะได้อะไรที่ง่ายกว่า / ง่ายกว่านี้

1
mysqldump กับ INSERT …เมื่อทำซ้ำ
ฉันต้องการรวมข้อมูลจากฐานข้อมูลหนึ่งไปยังอีกฐานข้อมูลหนึ่ง ดังนั้นฉันจะสร้างการถ่ายโอนข้อมูลด้วยmysqldumpแล้วนำเข้าสู่ฐานข้อมูลอื่น (ที่มีโครงสร้างตารางเดียวกัน) ฉันไม่มีปัญหาใด ๆ (เช่นรายการซ้ำหรืออย่างอื่น) ในกรณีนี้ แต่ฉันจะทำการผสานเพื่อการทดสอบและฉันจะทำการผสานขั้นสุดท้ายในภายหลัง ดังนั้นฉันต้องการที่จะดำเนินการผสาน (ข้อมูลอาจมีการเปลี่ยนแปลง) ไม่กี่ครั้ง ขอให้สังเกตว่าแถวของฉันในตารางของฉันไม่เคยลบสามารถแทรกหรืออัปเดตได้เท่านั้น ฉันสามารถสร้าง mysqldump ด้วยตัวเลือก ON DUPLICATE ได้หรือไม่ หรือฉันอาจผสานการถ่ายโอนข้อมูลที่แทรกข้อมูลใหม่และอัปเดตข้อมูลที่แก้ไขแล้วได้หรือไม่ แน่นอนว่าฉันสามารถแทรกการON DUPLICATEถ่ายโอนข้อมูลได้ด้วยตนเอง แต่ฉันต้องการทำให้กระบวนการผสานเป็นไปโดยอัตโนมัติ

2
PgAdmin III - วิธีเชื่อมต่อกับฐานข้อมูลเมื่อรหัสผ่านว่างเปล่า?
คำถามนี้ถูกโยกย้ายจากข้อผิดพลาดเซิร์ฟเวอร์เนื่องจากสามารถตอบได้ในการแลกเปลี่ยนผู้ดูแลฐานข้อมูล อพยพ 8 ปีที่ผ่านมา ฉันติดตั้ง PostgreSQL 9.1 บนพีซีของฉัน (Win 7) ฉันมีแอปพลิเคชัน Java ขนาดเล็กเชื่อมต่อกับlogin=saและpassword=""ด้วย การเชื่อมต่อใช้งานได้ อย่างไรก็ตามมันถูกปฏิเสธจาก PgAdmin III เอง ฉันเข้าใจ: Error connecting to the server: fe_sendauth: no password supplied ฉันจะเชื่อมต่อกับฐานข้อมูลของฉันจาก PgAdmin III ด้วยรหัสผ่านว่างได้อย่างไร แก้ไข นี่เป็นเพียงการทดสอบไม่ใช่รหัสการผลิต



3
varchar (255) หรือ varchar (256)?
ฉันควรใช้varchar(255)หรือvarchar(256)เมื่อออกแบบตาราง? ฉันได้ยินมาว่ามีการใช้หนึ่งไบต์สำหรับความยาวของคอลัมน์หรือเพื่อเก็บข้อมูลเมตา มันสำคัญอีกต่อไปแล้ว ณ จุดนี้? ฉันเห็นโพสต์บนอินเทอร์เน็ตอย่างไรก็ตามพวกเขาใช้กับ Oracle และ MySQL เรามี Microsoft SQL Server 2016 Enterprise Edition แล้วนำไปใช้กับสภาพแวดล้อมนี้ได้อย่างไร ตอนนี้พูดตัวอย่างเช่นถ้าฉันบอกให้ลูกค้าของฉันเก็บตัวอย่างคำอธิบายข้อความถึง 255 ตัวอักษรแทน 256 จะมีความแตกต่าง? สิ่งที่ฉันอ่าน "ด้วยความยาวสูงสุด 255 อักขระ DBMS สามารถเลือกใช้ไบต์เดียวเพื่อระบุความยาวของข้อมูลในฟิลด์ถ้าขีด จำกัด เป็น 256 หรือมากกว่านั้นจำเป็นต้องใช้สองไบต์" มันเป็นเรื่องจริงเหรอ?

6
เลือกคอลัมน์ภายใน json_agg
ฉันมีคำถามเช่น: SELECT a.id, a.name, json_agg(b.*) as "item" FROM a JOIN b ON b.item_id = a.id GROUP BY a.id, a.name; ฉันจะเลือกคอลัมน์ในbดังนั้นฉันไม่ได้มีb.item_idในวัตถุ JSON ได้อย่างไร ฉันได้อ่านเกี่ยวกับROWแต่มันกลับวัตถุ JSON เช่น: {"f1": "Foo", "f2": "Bar"} ฉันจะต้องทำการแมปวัตถุ JSON อีกครั้งเมื่อมีการดึงข้อมูลเพื่อให้ตรงกับคีย์คอลัมน์ที่เหมาะสม ฉันต้องการหลีกเลี่ยงปัญหานั้นและเก็บชื่อคอลัมน์เดิมไว้

5
แบบสอบถามเพื่อส่งกลับชื่อคอลัมน์ผลลัพธ์และชนิดข้อมูลของแบบสอบถามตารางหรือมุมมอง
มีแบบสอบถามหรือคำสั่ง PostgreSQL ที่ส่งคืนชื่อเขตข้อมูลและชนิดเขตข้อมูลของแบบสอบถามตารางหรือมุมมองหรือไม่ เช่นวิธีแก้ปัญหาหากนำไปใช้กับแบบสอบถาม SELECT อย่างง่ายเช่นSELECT * from personควรส่งคืนรายการเช่น: Column Name | Column Type =========================== First Name | character Last Name | character Age | integer Date of Birth | date ฉันค้นหาinformation_schemaมุมมองที่อธิบายไว้ในคำตอบด้านล่างและดูเหมือนว่าจะครอบคลุมตารางค่อนข้างดีและฉันคิดว่ามันครอบคลุมมุมมองเช่นกัน แต่ฉันยังไม่ได้ตรวจสอบ สุดท้ายเป็นข้อ ๆ แต่ที่ถูกต้องเช่นแบบสอบถาม SELECT เกี่ยวข้องกับJOINS, UNIONSฯลฯ ในฐานข้อมูล มีขั้นตอนในตัวหรือโพรซีเดอร์หรือสคริปต์อื่นที่เก็บไว้ซึ่งสามารถส่งคืนค่าเดียวกันสำหรับ QUERY ที่ถูกต้องได้หรือไม่? ฉันกำลังพัฒนาโปรแกรมที่สร้างข้อมูลและแบบฟอร์มการสืบค้นและต้องการข้อมูลสำหรับการตรวจสอบความถูกต้องของข้อมูลและการใช้งานฟังก์ชันในข้อมูลที่ส่งคืน

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