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

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

3
ฉันจะให้ SSMS ใช้เส้นทางสัมพัทธ์ของสคริปต์ปัจจุบันด้วย: r ในโหมด sqlcmd เหมือนกับ SSDT ได้อย่างไร
ถ้าผมมี foo.sql และ bar.sql ในโฟลเดอร์เดียวกัน foo.sql สามารถอ้างอิง bar.sql เมื่อเรียกใช้จาก SSDT ในโหมด sqlcmd :r ".\bar.sql"กับ อย่างไรก็ตาม SSMS จะไม่พบ Procmon แสดงให้เห็นว่า SSMS กำลังมองหาใน%systemroot%\syswow64: ฉันจะบอก SSMS ให้ดูในโฟลเดอร์ที่บันทึกสคริปต์ปัจจุบันไว้โดยไม่ต้องแจ้งเส้นทางอย่างชัดเจนได้อย่างไร
11 sql-server  ssms  sqlcmd  ssdt 

4
คอลัมน์ NVARCHAR เป็นคีย์หลักหรือคอลัมน์ที่ไม่ซ้ำกัน
ฉันกำลังพัฒนาฐานข้อมูล SQL Server 2012 และฉันมีข้อสงสัยเกี่ยวกับคอลัมน์ nvarchar เป็นคีย์หลัก ฉันมีตารางนี้: CREATE TABLE [dbo].[CODES] ( [ID_CODE] [bigint] IDENTITY(1,1) NOT NULL, [CODE_LEVEL] [tinyint] NOT NULL, [CODE] [nvarchar](20) NOT NULL, [FLAG] [tinyint] NOT NULL, [IS_TRANSMITTED] [bit] NOT NULL DEFAULT 0, CONSTRAINT [PK_CODES] PRIMARY KEY CLUSTERED ( [CODE_LEVEL] ASC, [CODE] ASC ) ) แต่ตอนนี้ฉันต้องการใช้[CODE]คอลัมน์เป็นคีย์หลักและลบ[ID_CODE]คอลัมน์ มีปัญหาหรือบทลงโทษหรือไม่หากฉันมีNVARCHARคอลัมน์เป็นPRIMARY KEY? …

1
จะอนุญาตให้ใช้งานโพรซีเดอร์ที่เก็บไว้ แต่ไม่ได้เขียนได้อย่างไร
ฉันต้องการตั้งค่าผู้ใช้ "อ่าน" บนอินสแตนซ์ SQL Server 2012 ของฉัน ฉันต้องการอนุญาตให้เขามีสิทธิ์ดำเนินการกระบวนงานที่เก็บไว้หรือฟังก์ชันหรือคำสั่ง SQL โดยตรงซึ่งดึงข้อมูลจากตารางและมุมมองทั้งหมด แต่ไม่อัปเดตหรือแทรก (เช่นอ่านอะไรและเขียนอะไร) ฉันสามารถตั้งค่านี้ได้โดยไม่ให้สิทธิ์เฉพาะกับแต่ละฟังก์ชั่นหรือขั้นตอนการจัดเก็บตามชื่อ แต่ให้สิทธิ์การดำเนินการที่ถูกต้องกับฟังก์ชั่นใด ๆ หรือขั้นตอนการจัดเก็บ จะมีอะไรเปลี่ยนแปลงไหมถ้าฉันใช้ SQL Server 2008 แทน ชี้แจงและเพิ่มเติม: หากขั้นตอนการจัดเก็บเปลี่ยนแปลงข้อมูลผู้ใช้ควรได้รับข้อความแสดงข้อผิดพลาด (ปฏิเสธการแก้ไขหรือปฏิเสธการเข้าถึงขั้นตอนการจัดเก็บทั้งหมด) หากวิธีแก้ไขที่เป็นไปได้เกี่ยวข้องกับการปฏิเสธสิทธิ์ฉันจะไม่ให้สิทธิ์บางอย่างแทนการปฏิเสธได้หรือไม่ สามารถใช้การปฏิเสธกับตารางทั้งหมดมุมมอง ฯลฯ (มีอยู่ทั้งในปัจจุบันและในอนาคต) ในฐานข้อมูลในคำสั่งเดียวได้หรือไม่

1
เหตุใด CTE จึงเลวร้ายยิ่งกว่าข้อความค้นหาย่อยแบบอินไลน์
ฉันพยายามเข้าใจวิธีการทำงานของตัววางแผนคิวรีใน postgresql ฉันมีคำถามนี้: select id from users where id <> 2 and gender = (select gender from users where id = 2) order by latest_location::geometry <-> (select latest_location from users where id = 2) ASC limit 50 มันทำงานในเวลาน้อยกว่า 10ms ในฐานข้อมูลของฉันด้วยรายการประมาณ 500k ในตารางผู้ใช้ จากนั้นฉันคิดว่าเพื่อหลีกเลี่ยงการเลือกย่อยที่ซ้ำกันฉันสามารถเขียนแบบสอบถามเป็น CTE อีกครั้งเช่นนี้ with me as ( select …

1
PostgreSQL Common Table Expressions เทียบกับตารางชั่วคราวหรือไม่
เอกสาร PostgreSQL กับการแสดงตัวอย่างต่อไปนี้: WITH regional_sales AS ( SELECT region, SUM(amount) AS total_sales FROM orders GROUP BY region ), top_regions AS ( SELECT region FROM regional_sales WHERE total_sales > (SELECT SUM(total_sales)/10 FROM regional_sales) ) SELECT region, product, SUM(quantity) AS product_units, SUM(amount) AS product_sales FROM orders WHERE region IN (SELECT region FROM …
11 postgresql 

8
ฉันจะทำให้ลูกค้า MySQL อ่านรหัสผ่านจาก mylogin.cnf ได้อย่างไร
ฉันพยายามทำให้ไคลเอนต์ mysql เชื่อมต่อกับเซิร์ฟเวอร์ mysql โดยไม่ต้องใช้รหัสผ่านในการโต้ตอบ ขั้นตอนดำเนินการ: 1) ขั้นแรกสร้างไฟล์ mylogin.cnf $ mysql_config_editor set --user=<user> --password --host=<host> Enter password: 2) สร้างไฟล์สำเร็จแล้ว: $ ls -la .mylogin.cnf -rw-------. 1 urmt urmt 136 Dec 19 11:01 .mylogin.cnf $ mysql_config_editor print --all [client] user = <user> password = ***** host = <host> 3) เชื่อมต่อโดยใช้ไคลเอนต์ mysql $ …

5
ถ่ายโอนข้อมูลจำนวนมาก (84 ล้านแถว) ของข้อมูลอย่างมีประสิทธิภาพ
ฉันมีแถวประมาณ 84 ล้านแถว พวกเขาทั้งหมดจะต้องถูกถ่ายโอนไปยังฐานข้อมูลแยกต่างหากบนเซิร์ฟเวอร์เดียวกันจากนั้นฉันลบเพื่อลบประมาณ 60 ล้านแถวจากฐานข้อมูลต้นทาง 84 ล้านแถวทั้งหมดอยู่ในตารางเดียวกัน ตารางนั้นคิดเป็น 90% ของฐานข้อมูลทั้งหมด ดังนั้น ... ที่มา: 84 ล้านแถว -> 24 ล้านแถวปลายทาง: 0 แถว -> 84 ล้านแถว แหล่งที่มาใช้โหมดการกู้คืนแบบเต็มปลายทางจะใช้งานง่าย ฉันสงสัยว่าอะไรจะเป็นวิธีที่มีประสิทธิภาพที่สุดในการทำสิ่งนี้? แผนก: 1) INSERT INTO destination SELECT * จากแหล่งที่มา 2) แหล่งที่มาตัด 3) INSERT INTO SELECT เลือก * จากปลายทาง WHERE keep_condition = 1 แผนข: 1) คืนค่าสำเนาสำรองของฐานข้อมูลต้นทางเป็นฐานข้อมูลปลายทาง …
11 sql-server 

1
การเพิ่มคอลัมน์แบบ nullable ลงในตารางมีค่าใช้จ่ายมากกว่า 10 นาที
ฉันมีปัญหาในการเพิ่มคอลัมน์ใหม่ในตาราง ฉันพยายามเรียกใช้สองสามครั้ง แต่หลังจากผ่านไปนานกว่า 10 นาทีฉันตัดสินใจยกเลิกคิวรีเนื่องจากเวลาล็อค ALTER TABLE mytable ADD mycolumn VARCHAR(50); ข้อมูลที่เป็นประโยชน์: รุ่น PostgreSQL: 9.1 จำนวนแถว: ~ 250K จำนวนคอลัมน์: 38 จำนวนคอลัมน์ที่ nullable: 32 จำนวนข้อ จำกัด : 5 (1 PK, 3 FK, 1 UNIQUE) จำนวนดัชนี: 1 ประเภทระบบปฏิบัติการ: Debian Squeeze 64 ฉันพบข้อมูลที่น่าสนใจเกี่ยวกับวิธีที่ PostgreSQL จัดการคอลัมน์ที่ไม่มีค่า (ผ่าน HeapTupleHeader) การเดาครั้งแรกของฉันคือเนื่องจากตารางนี้มีคอลัมน์ที่สามารถ nullable ได้ 32 คอลัมน์ซึ่งมี 8 …

3
MySQL: การเข้าร่วมใดดีกว่าระหว่างการเข้าร่วมด้านนอกด้านซ้ายและการเข้าร่วมภายใน
การเข้าร่วมใดจะดีกว่าการแสดงผลหากพวกเขาทั้งหมดให้ผลลัพธ์เดียวกัน ตัวอย่างเช่นผมมีสองตารางและemployees(emp_id,name, address, designation, age, sex) work_log(emp_id,date,hours_wored)เพื่อให้ได้ผลลัพธ์ที่เฉพาะเจาะจงทั้งสองinner joinและleft joinให้ผลลัพธ์เดียวกัน แต่ฉันยังมีข้อสงสัยบางอย่างที่ไม่ จำกัด เฉพาะคำถามนี้เท่านั้น การเข้าร่วมใดที่มีประสิทธิภาพมากกว่าซึ่งควรเลือกในกรณีที่มีค่าผลลัพธ์เดียวกัน ปัจจัยอื่น ๆ ที่ต้องพิจารณาในเวลาที่สมัครเข้าร่วมมีอะไรบ้าง มีความสัมพันธ์ระหว่างการเข้าร่วมภายในกับการเข้าร่วมไขว้ไหม?

2
โปรแกรมปรับปรุงสะสม MS SQL Server - แนวทางปฏิบัติที่ดีที่สุด
ฉันพยายามที่จะได้รับความคิดของสิ่งที่ควรปฏิบัติที่ดีสำหรับการที่อัพเดทสะสม SQL Server ขณะนี้เราทำงานบนแนวคิดของ "ไม่ทำอะไรเลยเว้นแต่ปัญหาที่แก้ไขโดย CU คือสิ่งที่เราประสบ" นั่นเป็นผลมาจากวิธี "ถ้ามันยังไม่พังอย่าแก้ไขมัน" แต่ฉันสงสัยว่านั่นเป็นความคิดที่ดีจริง ๆ เพราะ CU หลายแห่งมีการปรับปรุงประสิทธิภาพ เรากำลังมองหาการเพิ่ม CU ไปยังแพทช์ที่ใช้ในระหว่างรอบการบำรุงรักษาเป็นระยะเวลาหนึ่งหรือสองเดือนหลังจากการเปิดตัว CU คนอื่นทำอะไรและทำไม ขณะที่การปรับปรุงไปยังคำถามที่ส่งผลกระทบต่อคำตอบด้านล่างวันที่ 24 มีนาคม 2016 ทีมงานของ Microsoft SQL Server ประกาศว่าพวกเขาได้รับการปรับปรุงรูปแบบการให้บริการของพวกเขา Microsoft ขอแนะนำให้ผู้ใช้ทุกคนติดตั้ง CU ทั้งหมดที่เผยแพร่หลังจากเดือนมกราคม 2559: ตั้งแต่วันที่ CU ของเดือนมกราคมข้อความเตือนเหล่านี้ได้รับการปรับปรุงตอนนี้เราขอแนะนำให้ติดตั้ง CU ของเชิงรุกอย่างต่อเนื่องเมื่อพวกเขาพร้อมใช้งาน คุณควรวางแผนที่จะติดตั้ง CU ด้วยความมั่นใจในระดับเดียวกับที่คุณวางแผนที่จะติดตั้ง SPs (Service Packs) ตามที่ได้เปิดตัว เนื่องจาก CU ได้รับการรับรองและทดสอบตามระดับของ SP นอกจากนี้ข้อมูล …
11 sql-server 

1
IDENTITY_INSERT มีผลต่อการทำงานพร้อมกันอย่างไร
ฉันกำลังพยายามช่วยเหลือลูกค้าด้วยโปรแกรมเสริม SAP ของ บริษัท อื่นที่มีปัญหาการโพสต์และไม่ได้รับการสนับสนุน ภายใต้สถานการณ์บางอย่างมันจะเก็บถาวรและโพสต์ที่ไม่สมบูรณ์จากตารางคิวการโพสต์ไปยังตารางเก็บถาวรการโพสต์ ฉันต้องการย้ายผลลัพธ์ที่เก็บถาวรเหล่านี้กลับไปที่คิว ID ของคิวคือคอลัมน์ข้อมูลประจำตัวและฉันต้องการเก็บไว้เหมือนเดิม คำถามคือถ้าฉันทำ identity_insert on / insert / identity_insert off ฉันจะคาดหวังอะไรเกี่ยวกับการเกิดพร้อมกันกับกระบวนการที่สร้างรายการคิวและคาดว่าคอลัมน์ identity จะถูกสร้างขึ้นโดยอัตโนมัติ? พอยน์เตอร์ใด ๆ ในวิธีที่ดีที่สุดในการแสดงพฤติกรรมดังกล่าวจะได้รับการชื่นชมอย่างมากเช่นกัน

3
ข้อผิดพลาด - ฟังก์ชัน 'innodb' มีอยู่แล้ว
ฉันต้องการเริ่มแปลง MyISAM บางตารางเป็น INNODB ใช้ Ubuntu 14.04 เซิร์ฟเวอร์พร้อม MySQL 5.6 (apt-get อัพเกรดจาก 5.5), 32G ram บนซีพียู 4 คอร์ / 8 เธรด เริ่มแรกมีปัญหากับ ... could not open single-table tablespace file .\mysql\innodb_index_stats.ibd after restart of MySQL และ Error: Table "mysql"."innodb_table_stats" not found. ฉันทำตามคำแนะนำที่โพสต์ของ Rolando แล้วและฐานข้อมูลไม่พังหรือสร้างข้อผิดพลาดขนาดใหญ่อีกต่อไป (ปัญหาข้างต้นหายไปเพียงอธิบายเหตุการณ์สำคัญ ๆ ) ตอนนี้ฉันกังวลเกี่ยวกับข้อผิดพลาดต่อไปนี้ก่อนที่ฉันจะแปลงอะไรเป็น INNODB สหพันธ์สามารถละเว้นจากสิ่งที่ฉันอ่านบรรทัดที่สองด้านล่าง (รวมถึงหัวข้อของโพสต์นี้) …
11 mysql  innodb 

3
การมิร์เรอร์ฐานข้อมูลเซิร์ฟเวอร์ SQL กำลังจะตาย ฉันจะรับประกันความพร้อมใช้งานสูงในขณะนี้ได้อย่างไร
มิเรอร์ฐานข้อมูลคุณลักษณะของ SQL Server จะตาย: คุณลักษณะนี้จะถูกลบใน Microsoft SQL Server รุ่นอนาคต หลีกเลี่ยงการใช้คุณสมบัตินี้ในงานพัฒนาใหม่และวางแผนแก้ไขแอปพลิเคชั่นที่ใช้คุณสมบัตินี้ในปัจจุบัน ใช้กลุ่มความพร้อมใช้งานAlwaysOnแทน ไม่มีใครรู้ว่าเมื่อไหร่? ตัวเลือกของฉันสำหรับฐานข้อมูลความพร้อมใช้งานสูง (และการกู้คืนอย่างรวดเร็ว) คืออะไร

1
การซิงโครไนซ์โดยใช้ทริกเกอร์
ฉันมีข้อกำหนดคล้ายกับการสนทนาก่อนหน้านี้ที่: การเขียนโครงสร้างธนาคารอย่างง่าย: ฉันจะรักษายอดคงเหลือของฉันให้สอดคล้องกับประวัติการทำธุรกรรมได้อย่างไร ทริกเกอร์ร่วมกับการทำธุรกรรม ฉันมีสองตาราง[Account].[Balance]และ[Transaction].[Amount]: CREATE TABLE Account ( AccountID INT , Balance MONEY ); CREATE TABLE Transaction ( TransactionID INT , AccountID INT , Amount MONEY ); เมื่อมีการแทรก update หรือลบกับ[Transaction]ตารางที่ควรได้รับการปรับปรุงขึ้นอยู่กับ[Account].[Balance][Amount] ขณะนี้ฉันมีทริกเกอร์ให้ทำงานนี้: ALTER TRIGGER [dbo].[TransactionChanged] ON [dbo].[Transaction] AFTER INSERT, UPDATE, DELETE AS BEGIN IF EXISTS (select 1 from [Deleted]) OR …

1
ฉันจะฆ่าการดำเนินการที่ใช้เวลานานใน MongoDB ได้อย่างปลอดภัยได้อย่างไร
การดำเนินการเป็นครั้งคราวจะออกจากการควบคุมใน MongoDB และอาจสิ้นสุดการทำงานเป็นเวลาหลายร้อยวินาทีและส่งผลกระทบต่อประสิทธิภาพจนกว่าจะถูกฆ่าหรือเสร็จสิ้น เมื่อสิ่งนี้เกิดขึ้นฉันรู้ว่าฉันมีkillOp()ให้ แต่ฉันจะฆ่าเฉพาะการปฏิบัติการระยะยาวโดยไม่ฆ่า (ตัวอย่าง) การปฏิบัติการระยะยาวที่เกี่ยวข้องกับการจำลองแบบ (ซึ่งอาจเป็นอันตราย) ได้อย่างไร

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