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

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

1
มีอนาล็อกของ GETDATE () ที่ส่งกลับ DATETIME2 หรือไม่
ตาม MSDN, Getdate (), GetUtcDate () และ CURRENT_TIMESTAMP จะส่งกลับ DATETIME ทั้งหมด ฉันรันการทดสอบสั้น ๆ ซึ่งยืนยันว่า: CREATE TABLE #t(T DATETIME2(7)); GO DECLARE @i INT ; SET @i=1; WHILE @i<10000 BEGIN ; INSERT #t VALUES(CURRENT_TIMESTAMP) ; SET @i=@i+1; END ; SELECT DISTINCT t FROM #t ORDER BY t ; --- 2013-01-28 13:23:19.4930000 2013-01-28 …

2
วิธีดูข้อมูลใน pgAdmin III
ฉันไม่อยากเชื่อเลยว่ามันจะทำให้เรื่องนี้ยาก ฉันกำลังสูญเสียเกี่ยวกับวิธีการดูข้อมูลในฐานข้อมูลของฉัน มีวิธีง่ายๆในการดูว่าข้อมูลใดอยู่ในตารางของฉันด้วย pgAdmin III? อีกวิธีหนึ่งคือมีโปรแกรมที่ฉันสามารถใช้ที่ไม่ดูด?

5
Autovacuum เชิงรุกบน PostgreSQL
ฉันกำลังพยายามให้ PostgreSQL ทำการดูดฐานข้อมูลของฉันโดยอัตโนมัติ ฉันได้กำหนดค่าสูญญากาศอัตโนมัติดังนี้: autovacuum_vacuum_cost_delay = 0 # ปิดสูญญากาศที่ใช้ต้นทุน autovacuum_vacuum_cost_limit = 10,000 # ค่าสูงสุด autovacuum_vacuum_threshold = 50 # ค่าเริ่มต้น autovacuum_vacuum_scale_factor = 0.2 # ค่าเริ่มต้น ฉันสังเกตว่าสูญญากาศอัตโนมัติจะเริ่มขึ้นเฉพาะเมื่อฐานข้อมูลไม่ได้โหลดดังนั้นฉันจึงเข้าสู่สถานการณ์ที่มีสิ่งอันดับที่ตายแล้วมากกว่าสิ่งอันดับสด ดูตัวอย่างภาพหน้าจอที่แนบมา หนึ่งในตารางมี 23 tuples สด แต่ 16845 tuples ตายรอสูญญากาศ นั่นมันบ้า! Auto vacuum kicks เมื่อการทดสอบเสร็จสิ้นและเซิร์ฟเวอร์ฐานข้อมูลไม่ได้ใช้งานซึ่งไม่ใช่สิ่งที่ฉันต้องการเพราะฉันต้องการให้สูญญากาศอัตโนมัติเตะเมื่อใดก็ตามที่จำนวนของ tuples ที่ตายเกินกว่า 20% tuples สด + 50 เนื่องจากฐานข้อมูล การกำหนดค่า สูญญากาศอัตโนมัติเมื่อเซิร์ฟเวอร์ไม่ได้ใช้งานไม่มีประโยชน์สำหรับฉันเนื่องจากเซิร์ฟเวอร์ที่ใช้งานจริงคาดว่าจะมีการอัปเดต 1000 …

8
ตัวเลือก * ยังคงไม่มีอะไรใหญ่โตใน SQL Server 2012 หรือไม่
ย้อนกลับไปในสมัยของปีกลายถือเป็นเรื่องใหญ่ที่ไม่ต้องทำselect * from tableหรือselect count(*) from tableเพราะการแสดงที่โด่งดัง ยังคงเป็นกรณีนี้ใน SQL Server รุ่นที่ใหม่กว่า (ฉันใช้ 2012 แต่ฉันเดาว่าคำถามจะใช้กับ 2008 - 2014) แก้ไข:เนื่องจากผู้คนดูเหมือนจะประณามฉันเล็กน้อยที่นี่ฉันจึงมองสิ่งนี้จากมุมมองของมาตรฐาน / ทางวิชาการไม่ว่าจะเป็นสิ่งที่ "ถูกต้อง" (ซึ่งแน่นอนว่ามันไม่ใช่)

2
InnoDB: ข้อผิดพลาด: ตาราง“ mysql” ไม่พบ“ innodb_table_stats” หลังจากอัปเกรดเป็น mysql 5.6
ฉันอัปเกรดเป็น mysql 5.6 จาก 5.5 และตอนนี้บันทึกของฉันเกลื่อนไปด้วยข้อความดังกล่าวเมื่อเริ่มต้น ฉันพบวิธีแก้ปัญหาที่เป็นไปได้ที่นี่ แต่ดูเหมือนจะไม่เป็นทางการ http://forums.mysql.com/read.php?22,578559,579891#msg-579891 2013-12-06 21:08:00 7f87b1d26700 InnoDB: Error: Table "mysql"."innodb_table_stats" not found. 2013-12-06 21:08:00 7f87b1d26700 InnoDB: Recalculation of persistent statistics requested for table "drupal"."sessions" but the required persistent statistics storage is not present or is corrupted. Using transient stats instead. 2013-12-06 21:08:07 7f903c09c700 InnoDB: …

3
วิธีการเรียกใช้งานที่เกิดขึ้นซ้ำ ๆ บน Postgresql โดยไม่ต้องใช้เครื่องมือคล้าย cron ภายนอก
ฉันต้องการเรียกขั้นตอนการจัดเก็บเป็นประจำ บน Oracle ฉันจะสร้างงานสำหรับสิ่งนี้ ฉันพบว่า Postgresql สามารถเลียนแบบสิ่งนี้ได้ดีโดยใช้เครื่องมือภายนอก (cron ฯลฯ ) และ PgAgent คุณรู้จักทางเลือก "ภายใน" ซึ่งไม่เกี่ยวข้องกับเครื่องมือภายนอกหรือไม่? ฉันต้องการหลีกเลี่ยงปัญหาด้านความปลอดภัยด้วยรหัสผ่านที่จัดเก็บในบรรทัดคำสั่งของ pgAgent ฉันต้องการหลีกเลี่ยงการกำหนดค่าระบบเพิ่มเติมใด ๆ สำหรับการซ่อนรหัสผ่าน ( ~/.pgpass) Postgresql 8.3 Linux RedHat 64 บิต

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


2
เป็นโมฆะหรือไม่เป็นค่าเริ่มต้น?
ใน MySQL จะดีกว่าหรือไม่ที่จะอนุญาตให้มีค่า Null เสมอเว้นแต่คุณจะรู้ว่าจำเป็นต้องใช้เขตข้อมูลหรือใช้เป็นประจำNot Nullเว้นแต่ว่าคุณรู้ว่าเขตข้อมูลจะมีค่า Null หรือไม่ หรือไม่สำคัญ ฉันรู้ในบาง DBMS ที่พวกเขาบอกว่าใช้Not Nullให้มากที่สุดเพราะการอนุญาตให้มีค่า Null นั้นต้องใช้บิตเพิ่มเติม (หรือไบต์?) ต่อเรคคอร์ดเพื่อเก็บสถานะ Null
41 mysql  null 

3
คำนำหน้า N ก่อนสตริงในแบบสอบถาม Transact-SQL
คุณช่วยบอกฉันทีฉันควรใช้คำนำหน้า N ก่อนสตริงในแบบสอบถาม Transact-SQL? ฉันเริ่มทำงานกับฐานข้อมูลที่ฉันไม่ได้รับผลลัพธ์ใด ๆ โดยใช้แบบสอบถามเช่นนี้ SELECT * FROM a_table WHERE a_field LIKE '%а_pattern%' N'%а_pattern%'จนกว่าฉันจะเปลี่ยนรูปแบบไป ฉันไม่เคยเพิ่มคำนำหน้านี้มาก่อนดังนั้นฉันอยากรู้ a_fieldถูกกำหนดให้เป็นnvarchar(255)แต่ฉันคิดว่าเหตุผลเป็นอย่างอื่น


3
ทำไมผู้ใช้ใหม่ได้รับอนุญาตให้สร้างตาราง?
ฉันสงสัยว่าทำไมผู้ใช้ที่เพิ่งสร้างใหม่ได้รับอนุญาตให้สร้างตารางหลังจากเชื่อมต่อกับฐานข้อมูล ฉันมีฐานข้อมูลเดียวproject2_core: postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ---------------+--------------+-----------+-------------+-------------+------------------------------- postgres | postgres | SQL_ASCII | C | C | project2_core | atm_project2 | UTF8 | de_DE.UTF-8 | de_DE.UTF-8 | project2=CTc/project2 template0 | postgres | SQL_ASCII | C | C …

6
กู้คืนฐานข้อมูล mysql ด้วยชื่ออื่น
เราจะกู้คืนฐานข้อมูล mysql ด้วยชื่อที่แตกต่างจากไฟล์ mysqldump ได้อย่างไร ฉันไม่ต้องการเปิดไฟล์ดัมพ์แล้วแก้ไขมัน มีวิธีอื่นที่ดีกว่านี้ไหม?

14
กำลังพยายามใช้ MySQL Workbench กับ TCP / IP ผ่าน SSH - ล้มเหลวในการเชื่อมต่อ
ฉันไม่สามารถเชื่อมต่อโดยใช้ TCP / IP ผ่านการเชื่อมต่อ SSH ใน MySQL Workbench จากพีซี เกิดอะไรขึ้น? ฉันสร้าง MySQL 5.1 ฐานข้อมูลบนเซิร์ฟเวอร์ Ubuntu mysql.myhost.com ฉันสามารถเข้าถึงได้ในเครื่อง MySQL Workbench (PC) เสนอการเชื่อมต่อผ่าน TCP ผ่าน ssh มันทำงานบนพอร์ต 3306 บนเซิร์ฟเวอร์ระยะไกลที่ mysql บรรทัดคำสั่งทำงานได้ดี ฉันใช้รายละเอียดเซสชันต่อไปนี้: วิธีการเชื่อมต่อ: TCP / IP ผ่าน SSH ชื่อโฮสต์ SSH: mysql.myhost.com : 3306 ชื่อผู้ใช้ SSH: ล็อกอิน linux ของฉัน ไฟล์กุญแจสาธารณะ SSH: ไฟล์กุญแจสาธารณะในพื้นที่ของฉัน …

9
เชื่อมต่อกับ sql plus จากบรรทัดคำสั่งโดยใช้สตริงการเชื่อมต่อ
สมมติว่าฉันมีฐานข้อมูล Oracle ฉันมีชื่อผู้ใช้ = x, รหัสผ่าน = y, ฐานข้อมูล = z นอกจากนี้ฉันรู้พอร์ต = a, SID = b, ชื่อโฮสต์ = c ดังนั้นฉันจะต้องเชื่อมต่ออย่างถูกต้องได้อย่างไร ฉันใช้ตัวเลือกมากมายเช่น: sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED)))' sqlplus (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=b))) การส่งบรรทัดคำสั่งเหล่านี้มักจะให้ฉันกลับข้อผิดพลาดเช่น: ORA-12560: TNS: ข้อผิดพลาดของอะแดปเตอร์โปรโตคอล ORA-12514: TNS: ผู้ฟังไม่รู้จักบริการในปัจจุบัน ขอบคุณมากล่วงหน้า !!
41 oracle  sqlplus  string 

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