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

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

4
ฉันจะได้รับมูลค่าปัจจุบันและมูลค่าที่มากกว่าในการเลือกได้อย่างไร?
ฉันมีตาราง InnoDB 'idtimes' (MySQL 5.0.22-log) พร้อมคอลัมน์ `id` int(11) NOT NULL, `time` int(20) NOT NULL, [...] ด้วยคีย์เฉพาะแบบผสม UNIQUE KEY `id_time` (`id`,`time`) ดังนั้นจึงอาจมีการประทับเวลาหลายรายการต่อ ID และหลาย ID ต่อการประทับเวลา ฉันพยายามตั้งค่าแบบสอบถามที่ฉันได้รับรายการทั้งหมดรวมถึงเวลาที่มากขึ้นสำหรับแต่ละรายการถ้ามีอยู่ดังนั้นควรส่งคืนเช่น: +-----+------------+------------+ | id | time | nexttime | +-----+------------+------------+ | 155 | 1300000000 | 1311111111 | | 155 | 1311111111 | 1322222222 | | …
18 mysql  innodb  select 

1
ที่เก็บข้อมูลดัชนีแบบไม่คลัสเตอร์บนเสาหลักแบบคลัสเตอร์
ใน SQL Server ดัชนี nonclustered ที่ไม่ซ้ำกันในตารางrowstoreประกอบด้วยที่คั่นหน้าของวัตถุฐาน(RID หรือคีย์การทำคลัสเตอร์) ที่ทุกระดับของโครงสร้างดัชนีที่ไม่เป็นคลัสเตอร์ บุ๊กมาร์กจะถูกจัดเก็บเป็นส่วนหนึ่งของคีย์ดัชนีที่ไม่เป็นคลัสเตอร์ในทุกระดับดัชนี ในทางตรงกันข้ามถ้าดัชนี nonclustered เป็นที่ไม่ซ้ำกันที่คั่นเป็นปัจจุบันเท่านั้นที่ใบระดับของดัชนี - ไม่ได้เป็นส่วนหนึ่งของคีย์ (บุ๊กเป็นปัจจุบันเป็นหนึ่งหรือคอลัมน์รวมมากขึ้นในผล) ใน SQL Server 2016 เป็นไปได้ที่จะสร้างดัชนี b-tree แบบ nonclustered บนตารางเชิงคอลัมน์ (อันที่มีดัชนี columnstore แบบคลัสเตอร์) อะไรคือ 'บุ๊คมาร์ค' ที่ใช้สำหรับดัชนี b-tree แบบไม่คลัสเตอร์บนตาราง columnstore แบบคลัสเตอร์ ความแตกต่างระหว่างดัชนีที่ไม่ซ้ำแบบไม่เจาะจงและไม่ซ้ำแบบคลัสเตอร์ที่อธิบายไว้ข้างต้นยังคงมีผลอยู่หรือไม่?

2
เหตุใด: r คำสั่ง SQLCMD ที่ทำเครื่องหมายว่าผิดใน Post Deployment Script
ฉันทำงานสองสามครั้งด้วยสคริปต์การติดตั้งโพสต์และใช้การสร้าง "PostDeploy" โดยสังหรณ์ใจเสมอเพราะนั่นคือสิ่งที่มันเป็น ตอนนี้เป็นครั้งแรกที่ฉันพยายามทำตามคำสั่งในตัวจากแม่แบบของสคริปต์เพื่อใช้":r somescript.sql"ไวยากรณ์ ทันทีที่บรรทัดนี้ถูกทำเครื่องหมายว่าผิด: "SQL80001 ไวยากรณ์ผิดถัดจาก ':'" ฉันพบข้อเสนอแนะเพื่อตั้งค่า PDS เป็น Build Action "none" สิ่งนี้ไม่ช่วยข้อผิดพลาดจะยังคงอยู่ ฉันหายไปนี่อะไร

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

3
วิธีปิดส่วนหัวใน psql เท่านั้น (postgresql)
ฉันใช้ PostgreSQL 9.1.X ฉันพยายามสร้างpsqlสคริปต์เพื่อพิมพ์ผลลัพธ์โดยไม่มีส่วนหัว แต่รวมส่วนท้ายด้วย http://www.postgresql.org/docs/9.1/static/app-psql.html จากเอกสารด้านบน \pset tuples_only จะปิดทั้งส่วนหัวและส่วนท้าย และ \pset footer off จะปิดท้ายกระดาษเท่านั้น มีวิธีในpsqlการปิดส่วนหัวและเก็บส่วนท้ายหรือไม่ ฉันรู้ว่ามีหลายวิธีในการแก้ไขปัญหานี้โดยใช้ shell / perl / เครื่องมือข้อความใด ๆ ก็ตามที่คุณต้องการ แต่ฉันสงสัยว่าทำไมมีการกำหนดค่าสำหรับส่วนท้าย id <--this line I don't want ---- <-- this line I don't want either 1 <-- this line, yes (1 row) <-- yes, I want …
18 postgresql  psql 

2
ฉันจะแทรกใบหน้าที่ยิ้มเข้าไปใน MySQL ได้อย่างไร (😊)
ฉันใช้ MySQL 5.5.21 และพยายามที่จะแทรกอักขระ '\ xF0 \ x9F \ x98 \ x8A' แต่สำหรับชีวิตของฉันฉันไม่สามารถหาวิธีที่จะทำ ตามฟอรัมต่าง ๆ ที่ฉันได้อ่านมันเป็นไปได้ แต่เมื่อใดก็ตามที่ฉันลองข้อมูลก็จะถูกตัดทอน mysql> INSERT INTO hour ( `title`, `content`, `guid` , `published` , `lang` , `type` , `indegree` , `lon` , `lat` , `state` , `country` , `hour` ) VALUES ( "title" , "content 😊 …

2
UPSERT ที่มีความขัดแย้งโดยใช้ค่าจากตารางแหล่งที่มาในส่วน UPDATE
ได้รับ: CREATE TABLE A ( PK_A INT8 NOT NULL, A INT8, PRIMARY KEY (PK_A) ); CREATE TABLE B ( PK_B INT8 NOT NULL, B INT8, PRIMARY KEY (PK_B) ); แบบสอบถามนี้: insert into table_b (pk_b, b) select pk_a,a from table_a on conflict (b) do update set b=a; ทำให้เกิดข้อผิดพลาดดังต่อไปนี้: ERROR: column "a" …

2
pg_restore: [archiver (db)] ไม่สามารถดำเนินการค้นหา: ข้อผิดพลาด: schema“ สาธารณะ” มีอยู่แล้ว
ฉันใช้ pg_dump / pg_restore เพื่อสำรองและกู้คืนฐานข้อมูล PostgreSQL แต่ฉันได้รับข้อความแสดงข้อผิดพลาด (และสถานะทางออกที่ไม่เป็นศูนย์) จาก pg_restore ฉันลองใช้เคสพื้นฐานแบบง่าย ๆ (อธิบายไว้ด้านล่าง) แต่ยังมีข้อผิดพลาดเหล่านี้: pg_restore: [archiver (db)] ข้อผิดพลาดขณะประมวลผล TOC: pg_restore: [archiver (db)] ข้อผิดพลาดจากรายการ TOC 5; 2615 2200 SCHEMA postgres สาธารณะ pg_restore: [archiver (db)] ไม่สามารถดำเนินการค้นหา: ข้อผิดพลาด: schema "สาธารณะ" มีอยู่แล้ว คำสั่งคือ: สร้างสาธารณะ SCHEMA; ขั้นตอนในการทำซ้ำ: ติดตั้ง vanilla Ubuntu 14.04 distro สดใหม่ (ฉันใช้ Vagrant …

1
อาร์เรย์แบบสอบถาม PostgreSQL JSON เทียบกับหลายค่า
ฉันต้องการเขียนแบบสอบถามกับjsonbประเภทใน Postgres ที่กำหนดอาร์เรย์รหัสลูกค้าจะพบกลุ่มที่เกี่ยวข้อง รับตารางตัวอย่างนี้: CREATE TABLE grp(d JSONB NOT NULL); INSERT INTO grp VALUES ('{"name":"First","arr":["foo"], "customers":[{"id":"1", "name":"one"},{"id":"2", "name":"two"}]}') , ('{"name":"Second","arr":["foo","bar"], "customers":[{"id":"3", "name":"three"},{"id":"4", "name":"four"}]}') , ('{"name":"Third","arr":["bar","baz"], "customers":[{"id":"5", "name":"five"},{"id":"6", "name":"seven"}]}'); ฉันพบคำถามที่คล้ายกัน ( PostgreSql JSONB SELECT เทียบกับหลายค่า ) และจัดการเพื่อให้ได้สิ่งที่ฉันต้องการในอาร์เรย์อย่างง่ายโดยใช้แบบสอบถามนี้: SELECT d FROM grp WHERE d->'arr' ?| ARRAY['foo', 'bar']; อย่างไรก็ตามฉันไม่สามารถใช้งานได้เมื่ออาร์เรย์มีวัตถุ JSON : SELECT d …

4
การทำธุรกรรมภายในการทำธุรกรรม
PostgreSQL จะแสดงพฤติกรรมแบบใดถ้าตัวอย่างสคริปต์ด้านล่างนี้ถูกเรียกใช้ BEGIN; SELECT * FROM foo; INSERT INTO foo(name) VALUES ('bar'); BEGIN; <- The point of interest END; PostgreSQL จะยกเลิกรายการที่สองBEGINหรือไม่หรือจะมีการตัดสินใจกระทำโดยนัยจากนั้นเรียกใช้BEGIN ENDบล็อกในตอนท้ายว่าเป็นรายการแยกต่างหาก

2
ทำไมดัชนีที่ถูกกรองในค่า IS NULL ไม่ถูกใช้
สมมติว่าเรามีคำจำกัดความของตารางดังนี้: CREATE TABLE MyTab ( ID INT IDENTITY(1,1) CONSTRAINT PK_MyTab_ID PRIMARY KEY ,GroupByColumn NVARCHAR(10) NOT NULL ,WhereColumn DATETIME NULL ) และดัชนีที่ไม่ได้ทำคลัสเตอร์ที่กรองแล้วเช่นนี้: CREATE NONCLUSTERED INDEX IX_MyTab_GroupByColumn ON MyTab (GroupByColumn) WHERE (WhereColumn IS NULL) เหตุใดดัชนีนี้จึงไม่ "ครอบคลุม" สำหรับคำค้นหานี้: SELECT GroupByColumn ,COUNT(*) FROM MyTab WHERE WhereColumn IS NULL GROUP BY GroupByColumn ฉันได้รับแผนปฏิบัติการนี้แล้ว: KeyLookup ใช้สำหรับกริยาที่ …

1
ดูว่าอาร์เรย์ JSON ใน MySQL มีวัตถุที่มีคีย์เก็บวันที่ที่ระบุหรือไม่
ฉันกำลังพยายามหาว่ามีแถวที่มีวันที่ที่ระบุในอาร์เรย์ JSON หรือไม่ สมมติว่าข้อมูลของฉันมีลักษณะดังนี้: การใช้งานตาราง: id | application_id | data # Rows 1 | 1 | [{"data" : ["some", "data#1"], "date": "2016-04-21"}, {"data" : ["other", "data#1"], "date" : "2016-04-22"}] 2 | 2 | [{"data" : ["some", "data#2"], "date": "2016-04-21"}, {"data" : ["other", "data#2"], "date" : "2016-04-26"}] 3 | 1 | …
18 mysql  json 

2
“ การเข้าถึงถูกปฏิเสธ” เมื่อเชื่อมต่อ SSMS กับ Integration Services
ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อพยายามเชื่อมต่อ SSMS กับ Integration Services โดยใช้ชื่อเครือข่ายของคลัสเตอร์ SQL Server เฉพาะ: การเชื่อมต่อกับบริการการรวมบริการบนคอมพิวเตอร์ 'FooDB' ล้มเหลวด้วยข้อผิดพลาดต่อไปนี้: "การเข้าถึงถูกปฏิเสธ" ข้อผิดพลาดนี้เกิดขึ้นเมื่อคอมพิวเตอร์ไม่ได้รับการกำหนดค่าให้อนุญาตการเชื่อมต่อระยะไกลผ่าน DCOM หรือผู้ใช้มีสิทธิ์เข้าถึงบริการบริการการรวมเซิร์ฟเวอร์ SQL ผ่าน DCOM นี่เป็นปัญหาประจำกับโซลูชันที่มีเอกสารครบถ้วน ตัวอย่างเช่นดูการแก้ปัญหาที่นี่และที่นี่ อย่างไรก็ตามฉันได้ลองวิธีแก้ปัญหาทั้งหมดที่ฉันรู้แล้วและปัญหายังคงอยู่ รายละเอียดเพิ่มเติมฉันได้ทำสิ่งต่อไปนี้แล้ว: ตรวจสอบว่าผู้ใช้ที่เชื่อมต่อมีสิทธิ์ DCOM ที่ระบุไว้ในบทความที่ลิงก์ไปด้านบนบน MsDtsServer100: สิทธิ์ในการเปิดใช้งานและการเปิดใช้งาน: อนุญาตให้เปิดใช้ในท้องถิ่นอนุญาตให้เปิดใช้ระยะไกลเปิดใช้งานในท้องถิ่นเปิดใช้งานระยะไกล สิทธิ์การเข้าถึง: อนุญาตการเข้าถึงในท้องถิ่นอนุญาตการเข้าถึงระยะไกล การอนุญาตการกำหนดค่า: อนุญาตให้อ่าน ยืนยันด้วยแพ็กเก็ตดมกลิ่นที่ทราฟฟิกทั้งหมดที่เกี่ยวข้องกับการเชื่อมต่อนั้นประสบความสำเร็จผ่านทางไฟร์วอลล์ แพคเก็ตล่าสุดที่แสดงก่อนการเชื่อมต่อ TCP ถูกดึงลงมาคือการตอบกลับจากเซิร์ฟเวอร์ที่มีรหัสสถานะ Windows สำหรับ 'การเข้าถึงถูกปฏิเสธ' ภายในส่วนหัวของ MSRPC ทดสอบการเพิ่มผู้ใช้ไปยังกลุ่ม 'ผู้ใช้ COM แบบกระจาย' และ / หรือกลุ่มผู้ดูแลระบบภายในจากนั้นรีสตาร์ทเซิร์ฟเวอร์ สิ่งนี้อนุญาตให้ผู้ใช้เชื่อมต่อ …

2
พื้นที่ดิสก์เต็มในระหว่างการแทรกเกิดอะไรขึ้น
วันนี้ฉันค้นพบฮาร์ดไดรฟ์ที่เก็บฐานข้อมูลของฉันเต็ม สิ่งนี้เคยเกิดขึ้นมาก่อนโดยปกติสาเหตุจะชัดเจนมาก มักจะมีแบบสอบถามที่ไม่ดีซึ่งทำให้เกิดการรั่วไหลขนาดใหญ่เพื่อ tempdb ซึ่งเติบโตขึ้นจนดิสก์เต็ม คราวนี้มันเห็นได้ชัดน้อยลงว่าเกิดอะไรขึ้นเนื่องจาก tempdb ไม่ได้เป็นสาเหตุของไดรฟ์เต็มรูปแบบมันเป็นฐานข้อมูลของตัวเอง ข้อเท็จจริง: ขนาดฐานข้อมูลปกติประมาณ 55 GB เพิ่มขึ้นเป็น 605 GB ไฟล์บันทึกมีขนาดปกติและมีขนาดใหญ่มาก Datafile มีพื้นที่ว่าง 85% (ฉันตีความว่าเป็น 'อากาศ': พื้นที่ที่ใช้ แต่ได้รับการปล่อยให้ว่างแล้ว SQL Server จะสำรองพื้นที่ทั้งหมดเมื่อจัดสรรแล้ว) ขนาด Tempdb เป็นปกติ ฉันได้พบสาเหตุที่น่าจะเป็น; มีหนึ่งแบบสอบถามที่เลือกแถวมากเกินไป (การรวมที่ไม่ดีทำให้เกิดการเลือก 11 พันล้านแถวซึ่งคาดว่าสองแสนคน) นี่คือSELECT INTOแบบสอบถามซึ่งทำให้ฉันสงสัยว่าสถานการณ์ต่อไปนี้อาจเกิดขึ้น: SELECT INTO ถูกใช้งาน สร้างตารางเป้าหมายแล้ว ข้อมูลถูกแทรกขณะที่ถูกเลือก ดิสก์เต็มทำให้การแทรกล้มเหลว SELECT INTO ถูกยกเลิกและย้อนกลับ การย้อนกลับเพิ่มพื้นที่ว่าง (ข้อมูลที่แทรกไว้แล้วจะถูกลบ) แต่ SQL Server …

1
ละเว้นการเน้นเสียงใน 'ที่ไหน'
ในฐานข้อมูลของเราเรามีหลายรายการที่มี caron / hatschek ตอนนี้ผู้ใช้ของเราต้องการค้นหารายการรวมถึง caron / hatschek เมื่อค้นหารายการที่ไม่มี ฉันจะแสดงสิ่งนี้ด้วยตัวอย่างง่ายๆ: ในฐานข้อมูลของเราเรามีรายการ (ติดต่อกับชื่อ) Millière ดังนั้นชื่อนี้ถูกต้องในประเทศที่บุคคลนั้นอาศัยอยู่ ในประเทศของเราเราไม่ได้มีตัวอักษรใด ๆ กับรอน / hatschek Milliereดังนั้นผู้ใช้ค้นหาของเราสำหรับ ไม่มีผลการค้นหาขึ้นมาเป็นไม่ชัดไม่ตรงกับèe ผมไม่มีความคิดวิธีนี้อาจจะตระหนักว่าé, è, êและอื่น ๆ อีกมากมายที่มีอยู่ (และนี่เป็นเพียงตัวอย่างจดหมายe... ) (วิธีอื่นจะง่ายกว่ามากเพราะฉันสามารถแทนที่ตัวอักษรทั้งหมดด้วย caron / hatschek ด้วยตัวอักษรพื้นฐานได้อย่างชัดเจนเห็นได้ชัดว่าผู้ใช้ของเราต้องการชื่อรุ่นที่ถูกต้องในฐานข้อมูลไม่ใช่คนพิการ)

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