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

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

5
รอการจัดการการกู้คืนโปรแกรมฐานข้อมูลล้มเหลว ตรวจสอบบันทึกข้อผิดพลาด SQL Server สำหรับสาเหตุที่เป็นไปได้ [ปิด]
ปิด คำถามนี้ต้องการรายละเอียดหรือความคมชัด ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ เพิ่มรายละเอียดและชี้แจงปัญหาโดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ฉันลองติดตั้ง SQL2008R2 - SQL2012 - sql2014 2014-07-17 16:31:16.00 spid14s Error: 17190, Severity: 16, State: 1. 2014-07-17 16:31:16.00 spid14s Initializing the FallBack certificate failed with error code: 1, state: 20, error number: 0. 2014-07-17 16:31:16.00 spid14s Unable to initialize SSL encryption because a valid …

1
การดัดแปลงเป็น GEQO (การเพิ่มประสิทธิภาพการสืบค้นเชิงพันธุกรรม) ของ PostgreSQL
ฉันต้องการใช้งานฟังก์ชั่นที่สอดคล้องกับฟังก์ชัน GEQO ของ PostgreSQL ฉันเข้าใจว่าวิธีการของ GEQO คือการเข้ารหัสแผนแบบสอบถามเป็นสตริงจำนวนเต็มและ GEQO สร้างลำดับการเข้าร่วมที่เป็นไปได้เหล่านี้โดยการสุ่ม ที่มา: http://www.postgresql.org/docs/9.3/static/geqo-pg-intro.html คำถามของฉัน: จะแก้ไขฟังก์ชั่น GEQO ได้อย่างไรหากฉันทราบลำดับการรวมที่ถูกต้องอย่างชัดเจนเพื่อที่ฉันจะได้ไม่ต้องค้นหาลำดับการรวมที่แตกต่างกัน ตัวอย่างเช่นหากฉันรู้ว่าวิธีที่ดีที่สุดในการเข้าร่วม 4 ความสัมพันธ์คือ 4-1-3-2 ฉันไม่จำเป็นต้องตรวจสอบการเปลี่ยนลำดับอื่น ๆ ไม่มีข้อมูลที่ดีเกี่ยวกับการใช้ GEQO ใน PostgreSQL PostgreSQL ให้มุมมองโดยรวมของฟังก์ชัน GEQO เท่านั้น แต่ไม่ได้อธิบายอะไรมาก หรือฉันสามารถใช้ฟังก์ชันนี้ใน standard_join_search () ตัวเองโดยไม่ใช้ GEQO ได้หรือไม่

1
ฉันจะแยก ctid ลงในหมายเลขหน้าและแถวได้อย่างไร
แต่ละแถวในตารางมีคอลัมน์ระบบ ctidประเภทtidที่แสดงถึงตำแหน่งทางกายภาพของแถว: create table t(id serial); insert into t default values; insert into t default values; select ctid , id from t; ctid | รหัส : ---- | -: (0,1) | 1 (0,2) | 2 dbfiddle ที่นี่ อะไรคือวิธีที่ดีที่สุดในการได้รับเพียงจำนวนหน้าเป็นจากctidในประเภทที่เหมาะสมที่สุด (เช่นinteger, bigintหรือnumeric(1000,0))? วิธีเดียวที่ฉันสามารถคิดเป็นน่าเกลียดมาก

3
วิธีใช้สิทธิ์ตรรกะทางธุรกิจใน PostgreSQL (หรือ SQL โดยทั่วไป)
สมมติว่าฉันมีสารบัญ CREATE TABLE items ( item serial PRIMARY KEY, ... ); ตอนนี้ฉันต้องการแนะนำแนวคิดของ "การอนุญาต" สำหรับแต่ละรายการ (โปรดทราบว่าฉันไม่ได้พูดถึงสิทธิ์การเข้าถึงฐานข้อมูลที่นี่ แต่สิทธิ์ทางตรรกะทางธุรกิจสำหรับรายการนั้น) แต่ละรายการมีสิทธิ์เริ่มต้นและสิทธิ์ต่อผู้ใช้ที่อาจแทนที่สิทธิ์เริ่มต้น ฉันพยายามคิดหลายวิธีในการใช้งานและหาวิธีแก้ไขปัญหาต่อไปนี้ แต่ฉันไม่แน่ใจว่าวิธีใดดีที่สุดและเพราะเหตุใด: 1) โซลูชันบูลีน ใช้คอลัมน์บูลีนสำหรับการอนุญาตแต่ละครั้ง: CREATE TABLE items ( item serial PRIMARY KEY, can_change_description boolean NOT NULL, can_change_price boolean NOT NULL, can_delete_item_from_store boolean NOT NULL, ... ); CREATE TABLE item_per_user_permissions ( item int …
16 postgresql  enum 

1
ASYNC_NETWORK_IO รอพิมพ์อะไรที่กังวลหรือไม่
ในการดูรายการของโพรซีเดอร์ที่เก็บไว้ซึ่งใช้เวลาในการประมวลผลนานจะมีความโดดเด่นที่ทำให้เกิดการรอคอยมากที่สุด อย่างไรก็ตามการรอนั้นส่วนใหญ่ (81%) เป็น ASYNC_NETWORK_IO และฉันรู้ว่าทำไม: กระบวนการที่เก็บไว้จะถ่ายโอนข้อมูลประมาณ 400 MB ในเอกสารอธิบายว่าสาเหตุของ ASYNC_NETWORK_IO คือไคลเอ็นต์ไม่สามารถตามกระแสข้อมูลได้และนั่นอาจเป็นจริง ฉันไม่แน่ใจว่าจะทำให้ลูกค้าติดตามได้อย่างไรเพราะมันคือการเรียกโพรซีเดอร์ที่เก็บไว้ผ่าน ADO.NET และเพียงแค่ประมวลผลชุดข้อมูล เมื่อได้รับข้อมูลนี้ฉันควรกังวลเกี่ยวกับประเภทรอ ASYNC_NETWORK_IO สำหรับกระบวนการนี้หรือไม่? จริง ๆ แล้วมันมีผลต่อประสิทธิภาพของเซิร์ฟเวอร์หรือไม่ ข้อมูลเพิ่มเติม: ฉันใช้ Service Pack 2 ของ SQL Server 2005 แอปไคลเอ็นต์อยู่ในกล่องเดียวกับ SQL Server (ฉันรู้ว่าฉันรู้ ... แต่ฉันไม่สามารถทำอะไรกับมันได้)

1
เหตุใดแบบสอบถามย่อยจึงใช้การขนานและการเข้าร่วมไม่ได้
เหตุใดเซิร์ฟเวอร์ SQL จึงใช้ความขนานเมื่อเรียกใช้แบบสอบถามนี้ซึ่งใช้แบบสอบถามย่อย แต่ไม่ใช้เมื่อเข้าร่วม เวอร์ชันการเข้าร่วมจะทำงานเป็นอนุกรมและใช้เวลาดำเนินการนานกว่าประมาณ 30 เท่า เข้าร่วมเวอร์ชัน: ~ 30 วินาที เวอร์ชันย่อยของแบบสอบถาม: <1 วินาที แก้ไข: แผนแบบสอบถามเวอร์ชัน Xml: เข้าร่วมเวอร์ชัน รุ่น SUBQUERY

3
Oracle ไม่ได้ใช้ดัชนีที่ไม่ซ้ำสำหรับคีย์แบบยาว
ฉันมีตารางที่มีแถว 250K ในฐานข้อมูลการทดสอบของฉัน (มีการผลิตอยู่สองสามร้อยล้านล้านเราสามารถสังเกตปัญหาเดียวกันได้) ตารางมีตัวระบุสตริง nvarchar2 (50) ไม่ใช่ null โดยมีดัชนีที่ไม่ซ้ำกัน (ไม่ใช่ PK) ตัวระบุประกอบด้วยส่วนแรกที่มี 8 ค่าที่แตกต่างกันในฐานข้อมูลการทดสอบของฉัน (และประมาณหนึ่งพันครั้งในการผลิต) จากนั้นเครื่องหมาย @ และในที่สุดก็มีตัวเลขยาว 1 ถึง 6 หลัก ตัวอย่างเช่นอาจมี 50,000 แถวที่ขึ้นต้นด้วย 'ABCD_BGX1741F_2006_13_20110808.xml @' และตามด้วยตัวเลขที่แตกต่างกัน 50,000 ตัวเลข เมื่อฉันสอบถามแถวเดียวโดยใช้ตัวระบุความเป็นหัวใจนั้นประมาณเป็น 1 ค่าใช้จ่ายต่ำมากมันใช้งานได้ดี เมื่อฉันค้นหามากกว่าหนึ่งแถวที่มีตัวระบุหลายตัวในนิพจน์ IN หรือนิพจน์ OR การประมาณค่าของดัชนีนั้นผิดอย่างสมบูรณ์ดังนั้นจึงใช้การสแกนตารางแบบเต็ม หากฉันบังคับดัชนีด้วยคำใบ้มันเร็วมากการสแกนตารางแบบเต็มจะดำเนินการตามลำดับความสำคัญช้ากว่าจริง ๆ (และผลิตได้ช้ากว่ามาก) ดังนั้นจึงเป็นปัญหาของเครื่องมือเพิ่มประสิทธิภาพ เป็นการทดสอบฉันทำซ้ำตาราง (ใน schema + tablespace เดียวกัน) กับ …

4
ข้อผิดพลาดของ SQL Server 2008 R2: 15023 ผู้ใช้กลุ่มหรือบทบาทมีอยู่แล้ว
ฉันมีฐานข้อมูลทดสอบที่ฉันมีปัญหาเกี่ยวกับการอนุญาต ฉันไม่สามารถเข้าถึงฐานข้อมูลการรายงานและเอกสารความช่วยเหลือของแอปพลิเคชันบอกว่าต้องทำสิ่งต่อไปนี้: Resolution: 1. Launch the SQL Server Management Studio and connect to the database server(s) hosting the Vision and Reporting Server databases. 2. Expand the security folder. 3. Select logins and right click on the <username> user and choose properties. 4. Click the User Mapping tab 5.Make sure the …

4
MySQL นำเข้าไฟล์ csv ข้อผิดพลาด 13 (HY000): ไม่สามารถรับค่าสถิติของ /path/file.csv (Errcode: 2)
ฉันเป็นผู้เริ่มต้นอย่างแน่นอนสำหรับ MySQL (5.5.34) / Linux (Ubuntu 12.04 LTS) ` ฉันสร้างฐานข้อมูลอย่างง่ายพร้อมหนึ่งตาราง เมื่อพยายามนำเข้าข้อมูลผ่านทางไฟล์ 'data_test.csv จะมีข้อความแสดงข้อผิดพลาด 13 ปรากฏขึ้น ออกแรงจากเทอร์มินัลดังนี้: mysql> source /home/g/stockrecdb/load_test.sql; Database changed ERROR 13 (HY000): Can't get stat of '/home/stockrecdb/data_test.csv' (Errcode: 2) mysql> หมายเหตุ: หากใช้ LOCAL ใน LOAD DATA LOCAL INFILE จะมีข้อผิดพลาดปรากฏขึ้น: ข้อผิดพลาด 1148 (42000): คำสั่งที่ใช้ไม่ได้รับอนุญาตกับ MySQL เวอร์ชันนี้
16 mysql  errors  csv 

2
SQL Server 2012 คืนค่าการสำรองข้อมูลเป็นชื่อฐานข้อมูลใหม่
ฉันดูเหมือนจะจำได้ว่าในปี 2008 คุณสามารถคืนค่าสำเนาสำรองเป็นสำเนาใหม่ของฐานข้อมูลได้โดยการเปลี่ยนชื่อในช่อง "ฐานข้อมูลปลายทาง" จากตัวช่วยสร้างการคืนค่า มันจะสร้างฐานข้อมูลใหม่ซึ่งเป็นสำเนาของฐานข้อมูลต้นฉบับที่ถูกกู้คืนไปยังจุดที่คุณต้องการ ฉันยังไม่ได้ใช้ชีวิตเพื่อหาวิธีที่จะทำให้ SQL 2012 ทำสิ่งนี้ได้ ตอนนี้ฉันเข้าใจแล้ว (ขอบคุณ Aaron Bertrand) ที่สิ่งนี้ไม่ได้เปลี่ยนไปจริง ๆ และในปี 2012 นั้นทำให้ฉันชัดเจนมากขึ้นว่ากลยุทธ์นี้เป็นความคิดที่ไม่ดีตั้งแต่แรก! ดังนั้นสิ่งที่ฉันต้องทำคือ: สร้างฐานข้อมูลใหม่ 'MyDB_Copy' จากฐานข้อมูลที่มีอยู่ 'MyDB' โดยใช้ไฟล์สำรอง เรามีการสำรองข้อมูลเต็มรูปแบบทุกคืน (.bak) และ TLog ทุก ๆ 15 นาที (.trn) ฉันไม่ต้องการให้ 'MyDB' ที่มีอยู่ได้รับผลกระทบ / สัมผัสเลยเพราะมันเป็น "สด" หลังจาก MyDB_Copy ถูกสร้างขึ้นจากไฟล์สำรองข้อมูลเต็มรูปแบบหลักฉันต้องคืนค่าข้อมูลสำรอง TLog สองสามโหลเพื่อให้ได้เวลาที่แน่นอน

4
วิธีหยุดการประมวลผลสคริปต์ SQL
ฉันกำลังทำงานกับสคริปต์ sql และฉันต้องการหยุดสคริปต์ต่อไปหากเงื่อนไขบางอย่างไม่เป็นที่พอใจ เมื่อฉันเป็น Google ฉันพบว่า RaisError ที่มีระดับความรุนแรง 20 ระดับจะยุติการใช้งาน แต่ด้วยเหตุผลบางอย่างฉันไม่สามารถใช้ตัวเลือกนั้น โปรดบอกฉันว่ามีทางเลือกอะไรบ้างที่จะหยุดการประมวลผลสคริปต์ SQL

1
จะกำจัดข้อผิดพลาด“ การเชื่อมต่อผู้ใช้สูงสุด” ได้อย่างไร
ฉันใช้ MySQLi สำหรับ webapp ของฉัน mysqli_connect() [function.mysqli-connect]: (42000/1203): User ***_user already has more than 'max_user_connections' active connectionsแต่เมื่อใดก็ตามที่ฉันต้องการที่จะไปที่หน้าโดยเฉพาะอย่างยิ่งบางอย่างผมได้รับ ฉันพยายามปิดการเชื่อมต่อทั้งหมดแล้ว แต่นี่ไม่ได้ปรับปรุงสถานการณ์ มีวิธีที่จะรู้ว่าการเชื่อมต่อใดที่เปิดอยู่ในช่วงเวลาใดช่วงเวลาหนึ่งหรือข้อมูลที่มีประโยชน์อื่น ๆ ที่สามารถช่วยฉันแก้ไขปัญหานี้ได้? BTW ฉันใช้ PHP 5.2.17 และ MySQL 5.1

1
SQL Server nvarchar (สูงสุด) vs nvarchar (n) มีผลต่อประสิทธิภาพ
นี่คือ SQL Server 2008 R2 SP2 ฉันมี 2 ตาราง ทั้งสองมีความเหมือนกัน (ข้อมูลและการจัดทำดัชนี) ยกเว้นตารางแรกมีคอลัมน์ VALUE เป็นและครั้งที่สองมีคอลัมน์เดียวกับnvarchar(max) nvarchar(800)คอลัมน์นี้รวมอยู่ในดัชนีที่ไม่ทำคลัสเตอร์ ฉันยังสร้างดัชนีคลัสเตอร์บนตารางทั้งสอง ฉันได้สร้างดัชนีอีกครั้ง ความยาวสตริงสูงสุดในคอลัมน์นี้คือ 650 ถ้าฉันเรียกใช้แบบสอบถามเดียวกันกับทั้งสองnvarchar(800)ตารางจะเร็วขึ้นอย่างต่อเนื่องหลาย ๆ ครั้งเร็วเป็นสองเท่า แน่นอนว่าดูเหมือนจะเอาชนะวัตถุประสงค์ของ "varchar" ตารางประกอบด้วย 800,000+ แถว แบบสอบถามควรดูประมาณ 110,000 แถว (ซึ่งเป็นสิ่งที่แผนประมาณการ) ตามสถิติของ io จะไม่มีลูกเทนนิสอ่านดังนั้นทุกอย่างดูเหมือนจะอยู่ในแถว แผนการดำเนินการเหมือนกันยกเว้นมีความแตกต่างเล็กน้อยในเปอร์เซ็นต์ต้นทุนระหว่างสองตารางและขนาดแถวโดยประมาณนั้นใหญ่กว่าด้วยnvarchar(max)(91 ไบต์เทียบกับ 63 ไบต์) จำนวนการอ่านก็ค่อนข้างเหมือนกัน ทำไมถึงแตกต่าง ===== Schema ====== CREATE TABLE [dbo].[table1]( [ID] [bigint] IDENTITY(1,1) NOT …

3
รีเซ็ตค่าตัวตน
ฉันมีตารางที่มีคอลัมน์ประจำตัว ในขณะที่กำลังพัฒนาฉันจะลบแถวเป็นครั้งคราวและเพิ่มอีกครั้ง แต่ค่าตัวตนต่าง ๆ เพิ่มขึ้นเรื่อย ๆ และไม่ได้เริ่มต้นจาก 1 เมื่อฉันเพิ่มพวกเขาอีกครั้ง ตอนนี้รหัสของฉันไปจาก 68 -> 92 และนี่ทำให้รหัสของฉันล่ม ฉันจะรีเซ็ตค่าตัวตนได้อย่างไร

7
เกิดข้อผิดพลาด 3154 ขณะกู้คืนข้อมูลสำรองโดยใช้ WITH REPLACE
ฉันติดตั้ง SQL 2012 ด้วย SP1 บนคอมพิวเตอร์ของฉันแล้ว test.bakฉันทำสำรองของฐานข้อมูล ฉันมีฐานข้อมูลที่มีชื่อtest2ซึ่งเป็นฐานข้อมูลเดียวกัน แต่ข้อมูลเปลี่ยนไป ฉันต้องการกู้คืนtest.bakผ่านtest2ฐานข้อมูล ฉันมักจะได้รับข้อผิดพลาด: ข้อผิดพลาด 3154: ชุดการสำรองข้อมูลจะมีการสำรองข้อมูลของฐานข้อมูลอื่นนอกเหนือจากฐานข้อมูลที่มีอยู่ ฉันเหนื่อย: ฉันถูก cliked test2 -> Restore database -> From device ฉันเลือกtest.bakและตรวจสอบWith Replaceแต่ฉันได้รับข้อผิดพลาด จากนั้นฉันก็พยายามคลิกขวา test2 -> Restore file and filegroups ฉันเลือกtest.bakและตรวจสอบWith Replaceแต่ฉันได้รับข้อผิดพลาด ฉันสามารถลบฐานข้อมูลเก่าของฉันแล้วคืนค่าการสำรองข้อมูลของฉันด้วยชื่อที่ถูกต้อง แต่เมื่อฉันใช้ SQL 2008 ฉันไม่มีปัญหาในการกู้คืนฐานข้อมูลที่มีอยู่ ดูเหมือนว่าตั้งแต่ฉันใช้ SQL2012 ฉันได้รับข้อผิดพลาดนี้มากมาย!

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