คำถามติดแท็ก sql-server

Microsoft SQL Server ทุกรุ่น (ไม่ใช่ MySQL) โปรดเพิ่มแท็กเฉพาะเวอร์ชันเช่น sql-server-2016 เนื่องจากมักเกี่ยวข้องกับคำถาม

2
เข้าร่วม SQL Server / สถานที่ประมวลผลคำสั่ง
หลังจากอ่านแบบสอบถาม SQL ช้าไม่แน่ใจว่าจะเพิ่มประสิทธิภาพมันทำให้ฉันคิดเกี่ยวกับประสิทธิภาพการทำงานทั่วไปของแบบสอบถาม แน่นอนว่าเราต้องการผลลัพธ์ของตารางแรก (เมื่อมีการรวมตารางอื่น ๆ ) ให้เล็กที่สุดเท่าที่จะเป็นไปได้ก่อนที่จะเข้าร่วม (Inner joins สำหรับคำถามนี้) เพื่อให้การสืบค้นของเราเร็วขึ้นเล็กน้อย ตัวอย่างควร: SELECT * FROM ( SELECT * FROM table1 WHERE col = @val ) t INNER JOIN table2 ON col = col2 จะดีกว่า / เร็วกว่า: SELECT * FROM table1 INNER JOIN table2 ON col = col2 WHERE table1.col …

2
การตรวจสอบข้อ จำกัด การตรวจสอบคืออะไร
ฉันมี T-SQL ที่สร้างขึ้นอัตโนมัติซึ่งน่าจะถูกต้อง แต่ฉันไม่เข้าใจจริงๆ ALTER TABLE [dbo].[MyTable] WITH CHECK CHECK CONSTRAINT [My_FORIEGN_KEY]; ฉันรู้ว่าข้อ จำกัด ของคีย์ต่างประเทศคืออะไร แต่คือCHECK CHECKอะไร

2
ช่องว่างที่ไม่คาดคิดในคอลัมน์ IDENTITY
ฉันพยายามสร้างหมายเลขใบสั่งซื้อที่ไม่ซ้ำกันซึ่งเริ่มต้นที่ 1 และเพิ่มขึ้นทีละ 1 ฉันมีตาราง PONumber ที่สร้างโดยใช้สคริปต์นี้: CREATE TABLE [dbo].[PONumbers] ( [PONumberPK] [int] IDENTITY(1,1) NOT NULL, [NewPONo] [bit] NOT NULL, [DateInserted] [datetime] NOT NULL DEFAULT GETDATE(), CONSTRAINT [PONumbersPK] PRIMARY KEY CLUSTERED ([PONumberPK] ASC) ); และขั้นตอนการจัดเก็บที่สร้างขึ้นโดยใช้สคริปต์นี้: CREATE PROCEDURE [dbo].[GetPONumber] AS BEGIN SET NOCOUNT ON; INSERT INTO [dbo].[PONumbers]([NewPONo]) VALUES(1); SELECT SCOPE_IDENTITY() AS …

2
อะไรคือความแตกต่างระหว่างหน้าเว็บแบบ leaf และแบบ non-leaf?
ฉันได้รับการเรียกใช้รายงานการใช้งานดัชนีบางส่วนและฉันพยายามที่จะได้รับความหมายของใบและNon-ใบ ดูเหมือนว่าจะมีทั้งส่วนแทรกและส่วนที่ไม่ใช่ใบไม้การอัปเดตการลบการรวมหน้าและการจัดสรรหน้า ฉันไม่รู้จริงๆว่ามันหมายถึงอะไรหรือถ้ามีคนหนึ่งดีกว่าคนอื่น หากใครบางคนสามารถให้คำจำกัดความที่เรียบง่ายของแต่ละคนและอธิบายว่าทำไมเรื่อง Leaf หรือ Non-leaf ก็จะได้รับการชื่นชม!

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 กุมภาพันธ์ฉันจะลบไฟล์ทั้งหมดจากเดือนมกราคมได้หรือไม่ แน่นอนฉันจะเก็บสองสามเดือนก่อนหน้านี้ในกรณี แต่คำถามคือแนวคิด

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 ใช้สำหรับกริยาที่ …

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 ด้วยตัวอักษรพื้นฐานได้อย่างชัดเจนเห็นได้ชัดว่าผู้ใช้ของเราต้องการชื่อรุ่นที่ถูกต้องในฐานข้อมูลไม่ใช่คนพิการ)

4
ทำไมประเภทข้อมูล varchar อนุญาตให้ใช้ค่า unicode
ฉันมีตารางที่มีคอลัมน์ varchar มันช่วยให้ Trademark (ลิขสิทธิ์), ลิขสิทธิ์ (©) และตัวอักษร Unicode อื่น ๆ ที่แสดงด้านล่าง Create table VarcharUnicodeCheck ( col1 varchar(100) ) insert into VarcharUnicodeCheck (col1) values ('MyCompany') insert into VarcharUnicodeCheck (col1) values ('MyCompany™') insert into VarcharUnicodeCheck (col1) values ('MyCompany░') insert into VarcharUnicodeCheck (col1) values ('MyCompanyï') insert into VarcharUnicodeCheck (col1) values ('MyCompany') select …

4
จดหมาย DB SQL Server 2016 ไม่ได้ส่ง
ฉันใช้ SQL Server 2016 และมีการระเบิด ... จดหมาย DB ของฉันไม่ได้ส่งและฉันกำลังจะหมด ฉันตรวจสอบสิทธิ์บัญชี SQL สองครั้งเพื่อให้สามารถเรียกทำงานได้ DBmail - มันได้อ่านและดำเนินการแล้ว ฉันป้อนกฎสำหรับพอร์ตขาออกของไฟร์วอลล์ 587 ฉันลองใช้บัญชีอีเมลและโปรไฟล์อื่นด้วยปัญหาที่ยังไม่ได้ส่ง รายการเฉพาะในบันทึก (บันทึกเมล db) กำลังเริ่มต้นและสิ้นสุดการให้บริการ ไม่มีข้อผิดพลาดทุกที่ที่ฉันสามารถหาได้ อีเมลดูเหมือนจะป้อนคิวการส่งและจะไม่ทิ้ง บัญชีสามารถส่งและรับอีเมลด้วยตนเองและจากอินสแตนซ์ของ SQL Server 2014 บนเครื่องอื่น ฉันได้รับรายการที่มีสถานะ "ไม่ส่ง" และตรวจสอบสถานที่ปกติทั้งหมดพร้อมผลลัพธ์ที่คาดหวังในรายการทั้งหมดนอกเหนือจากจดหมายที่ไม่ได้ส่งคิวที่ยาว: SELECT * FROM msdb..sysmail_event_log order by log_id DESC SELECT * FROM dbo.sysmail_mailitems SELECT * FROM dbo.sysmail_sentitems USE msdb …

3
การแบ่งหน้าใน SQL Server
ฉันมีฐานข้อมูลขนาดใหญ่มากประมาณ 100 GB ฉันกำลังดำเนินการค้นหา: select * from <table_name>; และฉันต้องการแสดงแถวที่ 100 ถึง 200 เท่านั้น ฉันต้องการที่จะเข้าใจว่าสิ่งนี้เกิดขึ้นภายในได้อย่างไร ฐานข้อมูลดึงข้อมูลระเบียนทั้งหมดจากดิสก์ไปยังหน่วยความจำและส่งกลับแถวที่ 100 ถึง 400 ไปยังไคลเอนต์ที่ทำแบบสอบถามหรือไม่ หรือมีกลไกใดบ้างดังนั้นเฉพาะเรคคอร์ดเหล่านั้น (100 - 200) ที่ดึงมาจากฐานข้อมูล - โดยใช้กลไกการจัดทำดัชนีเช่น B-trees เป็นต้น? ฉันพบว่าสิ่งนี้เกี่ยวข้องกับแนวคิดเรื่องการแบ่งหน้า แต่ฉันไม่สามารถหาได้ว่ามันเกิดขึ้นภายในระดับฐานข้อมูลได้อย่างไร

3
ฉันจะวางทริกเกอร์ทั้งหมดในฐานข้อมูลเดียวได้อย่างไร
ฉันมีฐานข้อมูล 104 ทริกเกอร์มีวิธีลบทริกเกอร์ทั้งหมดด้วยคำสั่งเดียวจากฐานข้อมูลเดียวที่เรียกว่า 'system_db_audits หรือไม่

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