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

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

3
ดัชนีที่กรองจะใช้ก็ต่อเมื่อส่วนที่กรองอยู่ใน JOIN ไม่ใช่ WHERE
ฉันได้สร้างดัชนีที่กรองแล้วด้านล่าง แต่เมื่อฉันเรียกใช้ 2 คิวรีเพิ่มเติมลงดัชนีนี้จะถูกใช้สำหรับการค้นหาในตัวอย่างแรกที่มี END_DTTM ใน JOIN มากกว่าข้อที่ (นั่นคือข้อแตกต่างในแบบสอบถามเท่านั้น) . ใครช่วยอธิบายได้ว่าทำไมสิ่งนี้ถึงเกิดขึ้น การสร้างดัชนี CREATE NONCLUSTERED INDEX [ix_PATIENT_LIST_BESPOKE_LIST_ID_includes] ON [dbo].[PATIENT_LIST_BESPOKE] ( [LIST_ID] ASC, [END_DTTM] ASC ) WHERE ([END_DTTM] IS NULL) แบบสอบถาม DECLARE @LIST_ID INT = 3655 --This one seeks on the index SELECT PATIENT_LISTS.LIST_ID FROM DBO.PATIENT_LISTS LEFT JOIN DBO.PATIENT_LIST_BESPOKE ON PATIENT_LISTS.LIST_ID = …

1
แทนที่ค่าขององค์ประกอบ xml ที่พิมพ์อย่างยิ่งใน SQL Server ด้วย XQuery
ได้รับองค์ประกอบที่กำหนดไว้ภายในคอลเลกชัน XML Schema ดังกล่าว: <xsd:element name="xid"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="32" /> </xsd:restriction> </xsd:simpleType> </xsd:element> คุณจะอัพเดทองค์ประกอบโดยใช้ XQuery อย่างไร องค์ประกอบที่พบในnamespace nsในคอลเลกชันคี ฉันพยายามอัปเดตองค์ประกอบข้อความค้นหาด้านล่าง: update cm.item set data.modify( 'declare namespace ns="http://www.anon.com"; replace value of (/ns:*/ns:xid)[1] with "X00011793" cast as element(ns{http://www.anon.com}:xid,#anonymous) ?') where id = 11793 แต่สิ่งนี้สร้างข้อผิดพลาดต่อไปนี้: ข่าวสารเกี่ยวกับ 9301, ระดับ 16, สถานะ 1, บรรทัดที่ …

3
sql server: อัพเดทฟิลด์บนโต๊ะขนาดใหญ่ในกลุ่มเล็ก ๆ : วิธีการรับความคืบหน้า / สถานะ?
เรามีตารางที่มีขนาดใหญ่มาก (100 ล้านแถว) และเราจำเป็นต้องอัปเดตเขตข้อมูลสองสามแห่ง สำหรับบันทึกการจัดส่ง ฯลฯ เรายังต้องการเก็บไว้ในธุรกรรมที่มีขนาดพอดี ด้านล่างจะทำเคล็ดลับหรือไม่ และเราจะให้มันพิมพ์ผลงานออกมาได้อย่างไรเพื่อเราจะได้เห็นความคืบหน้า? (เราพยายามเพิ่มคำสั่ง PRINT ในนั้น แต่ไม่มีสิ่งใดถูกส่งออกในขณะที่ลูป) รหัสคือ: DECLARE @CHUNK_SIZE int SET @CHUNK_SIZE = 10000 UPDATE TOP(@CHUNK_SIZE) [huge-table] set deleted = 0, deletedDate = '2000-01-01' where deleted is null or deletedDate is null WHILE @@ROWCOUNT > 0 BEGIN UPDATE TOP(@CHUNK_SIZE) [huge-table] set deleted = …
10 sql-server  t-sql 

1
สิทธิ์การเข้าถึงโฟลเดอร์ข้อมูล SQL Server
ฉันติดตั้ง SQL Server 2014 ใหม่ ต่อไปฉันต้องการแนบฐานข้อมูลบางตัวจากเซิร์ฟเวอร์ SQL Server 2012 ก่อนหน้า ฉันคัดลอกไฟล์ทั้งหมดmdfและldfไปยังไดเรกทอรีข้อมูล แต่เมื่อฉันพยายามแนบไฟล์ฉันได้รับข้อความแสดงข้อผิดพลาดนี้: สร้างไฟล์พบข้อผิดพลาดของระบบปฏิบัติการ 5 (ปฏิเสธการเข้าถึง) ในขณะที่พยายามเปิดหรือสร้างฟิสิคัลไฟล์ 'D: \ SQLSERVERDATA \ MSSQL12.BIDEV \ MSSQL \ DATA \ control_demo.mdf' (Microsoft SQL Server ข้อผิดพลาด: 5123) เมื่อฉันตรวจสอบการตั้งค่าความปลอดภัยของไฟล์ (คลิกขวาที่ไฟล์คุณสมบัติความปลอดภัย) มันบอกว่าฉันไม่ได้รับอนุญาตให้อ่าน บัญชีที่ฉันใช้เพื่อคัดลอกไฟล์อยู่ในกลุ่มผู้ดูแลระบบ ฉันสามารถควบคุมDATAโฟลเดอร์ได้อย่างเต็มที่ แต่ไฟล์ที่ฉันคัดลอกมานั้นมีข้อ จำกัด เมื่อฉันพยายามที่จะใช้สิทธิ์การรักษาความปลอดภัยในโฟลเดอร์ทั้งหมดอีกครั้งมันบอกว่า: ไม่สามารถระบุวัตถุในคอนเทนเนอร์ได้ การเข้าถึงถูกปฏิเสธ. เมื่อฉันคัดลอกไฟล์ไปยังที่อื่นฉันมีสิทธิ์การเข้าถึง คำถามคือฉันจะรับสิทธิ์การเข้าถึงไฟล์เหล่านี้ในDATAโฟลเดอร์ได้อย่างไร?

2
SQL Server 2000 บน Windows 10
ฉันต้องการติดตั้ง SQL Server MSDE 2000 SP4 บน Windows 10 ฉันมีเครื่องอื่น ๆ ที่ใช้ Windows 7 และ 8.1 และ SQL Server MSDE 2000 ทำงานได้ดี (ด้วยการรวมแบบจำลองที่กำหนดค่าไว้ด้วย) ตอนนี้ฉันทดสอบสถานการณ์เดียวกันกับ Windows 10 แต่การติดตั้งกำลังปิดโดยไม่คาดคิดระหว่างการติดตั้ง ฉันรู้ว่ารุ่นนี้เก่ามาก แต่มีวิธีแก้ไขในการติดตั้งบน Windows 10 หรือไม่?

2
ปรับปรุงคิวรีช้าลงหลังจากเปิดใช้งานดัชนีข้อความแบบเต็มของเซิร์ฟเวอร์ SQL
ฉันมีเว็บไซต์ asp.net ที่มีการแทรกอัปเดตและลบคิวรีที่เรียกใช้กับฐานข้อมูลของฉันมากมาย ไม่กี่วันที่ผ่านมาฉันสร้างดัชนีข้อความแบบเต็มในสองคอลัมน์ของหนึ่งในตาราง หลังจากนั้นฉันก็รู้ว่าเมื่อเว็บไซต์รันคิวรีการอัพเดตบนตารางนั้นการใช้หน่วยความจำและดิสก์ของกระบวนการเซิร์ฟเวอร์ SQL กำลังกระโดดและการอัปเดตช้าลง แบบสอบถามทำงานโดยไม่มีปัญหาประสิทธิภาพใด ๆ ก่อนสร้างดัชนีข้อความแบบเต็ม ฉันยังตระหนักว่าแบบสอบถามแบบใช้ปรับปรุงที่ง่ายมากมาก่อนตอนนี้มีความซับซ้อนเนื่องจากแผนการดำเนินการในขณะนี้มีสิ่งต่าง ๆ เช่นการปรับปรุงดัชนีข้อความแบบเต็ม นี่เป็นส่วนหนึ่งของแผนการดำเนินการใหม่ที่ซับซ้อนหลังจากเปิดใช้งานข้อความแบบเต็ม: ในบางชั่วโมงเมื่อฉันอัปเดตเนื้อหาของไซต์ฉันเรียกใช้คิวรีการอัปเดต 5,000 รายการและฉันคิดว่ากระบวนการจัดทำดัชนีข้อความแบบเต็มจะทำในแต่ละครั้งสำหรับแต่ละแถว ฉันควรจะปิดการใช้งานการสแกนข้อความเต็มในการเริ่มต้นของการปรับปรุงแถวและจากนั้นอีกครั้งเปิดใช้งานได้ (ในขณะที่คำถามที่เกี่ยวข้องนี้ )? ฉันสามารถบอกให้ SQL Server หยุดจัดทำดัชนีข้อความแบบเต็มเป็นเวลา 5 นาทีแล้วเริ่มสร้างดัชนีข้อมูลใหม่ได้หรือไม่ มีทางเลือกที่ดีกว่านี้อีกไหม? ฉันใช้ SQL Server 2012

2
หน้าต่างชดเชยตรงตามเวลาประทับ
ฉันกำลังเขียนคิวรีที่จะใช้ในหน้าผลลัพธ์สำหรับโซเชียลฟีด แนวคิดคือแอพมือถือจะขอรายการ N และให้เริ่มต้นวันที่และเวลาที่ฉันได้เรียก@CutoffTimeด้านล่าง วัตถุประสงค์ของเวลา cutoff คือการสร้างเมื่อหน้าต่างการเพจควรเริ่มทำงาน เหตุผลที่เราใช้การประทับเวลาแทนการชดเชยแถวคือการประทับเวลาจะทำให้เราหน้าจากตำแหน่งที่สอดคล้องกันเมื่อรับโพสต์ที่เก่ากว่าแม้ว่าจะมีการเพิ่มเนื้อหาโซเชียลใหม่ เนื่องจากรายการฟีดโซเชียลอาจมาจากตัวคุณเองหรือเพื่อนของคุณที่ฉันใช้UNIONเพื่อรวมผลลัพธ์จากทั้งสองกลุ่ม เดิมทีฉันลองใช้วิธีที่TheQuery_CTEไม่มีตรรกะUNIONและมันก็เป็นสุนัขช้า นี่คือสิ่งที่ฉันได้ทำ (รวมถึงตารางคีที่เกี่ยวข้อง): CREATE TABLE [Content].[Photo] ( [PhotoId] INT NOT NULL PRIMARY KEY IDENTITY (1, 1), [Key] UNIQUEIDENTIFIER NOT NULL DEFAULT NEWID(), [FullResolutionUrl] NVARCHAR(255) NOT NULL, [Description] NVARCHAR(255) NULL, [Created] DATETIME2(2) NOT NULL DEFAULT SYSUTCDATETIME(), ); CREATE TABLE [Content].[UserPhotoAssociation] ( [PhotoId] …

2
การเตรียม TDE: การสำรองคีย์ / ใบรับรองสำหรับการกู้คืน
ฉันทำงานในสภาพแวดล้อมแบบ dev เพื่อทำความเข้าใจกับTDEการเข้ารหัส ฉันได้ทำงานกับการสำรองข้อมูลและคืนค่าบนเซิร์ฟเวอร์อื่น มีคำถามสองสามข้อฉันรู้ว่าฉันต้องสำรองข้อมูลใบรับรองด้วยรหัสส่วนตัวที่เกี่ยวข้อง USE master; GO BACKUP CERTIFICATE Test TO FILE = 'C:\Test.cer' WITH PRIVATE KEY (FILE = 'C:\Test.pvk', ENCRYPTION BY PASSWORD = 'Example12#') จำเป็นต้องย้าย / คืนค่าเหล่านี้บนเซิร์ฟเวอร์ใหม่ในกรณีที่เกิดความล้มเหลว มีอะไรอีกบ้างที่ฉันจำเป็นต้องสำรองข้อมูลจากเซิร์ฟเวอร์ต้นทางที่จะต้องใช้ในกรณีที่จำเป็นต้องกู้คืนไปยังเซิร์ฟเวอร์อื่นหรือไม่ ข้อเสนอแนะใด ๆ เกี่ยวกับการจัดเก็บคีย์ส่วนตัว? ความคิดของฉันในตอนนี้คือการสำรองใบรับรองกุญแจส่วนตัวและรหัสผ่านไปยังฐานข้อมูล KeePass ที่สำรองแยกต่างหากและทำซ้ำนอกไซต์ นั่นทำให้คำถามว่าจะสำรองคีย์ส่วนตัวของ KeePass ไปที่ใด

2
เหตุใดการรอคอยของ async_network_io จึงเป็นประเภท
สัปดาห์ที่แล้วมีสิ่งผิดปกติเกิดขึ้นในฐานข้อมูลของเรา ทั้งหมดในทันทีแอปพลิเคชันที่ถูกบล็อกสำหรับผู้ใช้ของเราที่ไม่สามารถบันทึกเอนทิตีใหม่ ฯลฯ หลังจากดูการตรวจสอบกิจกรรมของ SQL Server (2008 ด้วยโหมดความเข้ากันได้ 2005) ฉันเห็นสามรายการต่อไปนี้: หลังจากระยะเวลาหนึ่งผู้ใช้จะได้รับการหมดเวลาเชื่อมต่อ เมื่อฉันฆ่ากระบวนการ 64 พวกเขาสามารถบันทึกได้ตามปกติอีกครั้ง ปัญหาคือเอนทิตีที่พวกเขาพยายามบันทึกระหว่างบล็อกถูกแทรกลงในฐานข้อมูลมากกว่าหนึ่งครั้ง (สูงสุด 3 ครั้ง) แม้ว่าจะมีรหัสที่ควรป้องกันไม่ให้เกิดขึ้น (คอลัมน์หมายเลขที่ต้องไม่ซ้ำกัน แต่ไม่มีข้อ จำกัด ) ... การตรวจสอบเกิดขึ้นในรหัส) เราใช้ Entity Framework 6.0 มีใครบ้างที่รู้ว่าทำไมและเมื่อ ASYNC_NETWORK_IO รอประเภทเกิดขึ้นและจะหลีกเลี่ยงได้อย่างไร และพวกเขาหมายถึงอะไรกันแน่?

1
ทำไม Azure SQL Server ของฉันช้าจัง
ขณะนี้เรามี VM ที่มีความสามารถต่ำมากและกำลังเสนอให้ย้ายไปยัง Azure VM ที่มีสเปคที่ดีกว่า ปัญหาคือ Azure VM ช้ากว่า VM ดั้งเดิมมากถึงแม้ว่ามันจะเป็นสเป็คที่สูงกว่าก็ตาม เซิร์ฟเวอร์ดั้งเดิมคือ VM แบบ 2 คอร์ที่มีหน่วยความจำ 2GB ซึ่งเป็นเว็บเซิร์ฟเวอร์ มันรัน Microsoft SQL Server Web Edition 2008 R2 และเนื่องจากเซิร์ฟเวอร์นี้จะใช้สำหรับสิ่งอื่น ๆ ที่เราได้มีการ จำกัด หน่วยความจำเซิร์ฟเวอร์สูงสุดใน SQL Server เพื่อ512MB เซิร์ฟเวอร์ใหม่เป็น VM 4 คอร์ที่มีหน่วยความจำ 7GB ซึ่งเป็นเซิร์ฟเวอร์ฐานข้อมูลเท่านั้น กำลังเรียกใช้ Microsoft SQL Server Standard Edition 2008 R2 และเราไม่ได้ …

1
เหตุใดจึงไม่ใช้คีย์หลัก (คลัสเตอร์) ในการสืบค้นนี้
ฉันมีตาราง SQL Server 2008 R2 ซึ่งโครงสร้างสกีมามีลักษณะดังนี้: CREATE TABLE [dbo].[CDSIM_BE] ( [ID] [bigint] NOT NULL, [EquipmentID] [varchar](50) NOT NULL, [SerialNumber] [varchar](50) NULL, [PyrID] [varchar](50) NULL, [MeasMode] [varchar](50) NULL, [ReadTime] [datetime] NOT NULL, [SubID] [varchar](15) NULL, [ProbePosition] [float] NULL, [DataPoint] [int] NULL, CONSTRAINT [PK_CDSIM_BE] PRIMARY KEY CLUSTERED ([ID] ASC, [EquipmentID] ASC, [ReadTime] …

1
แผนแบบสอบถามเปลี่ยนประสิทธิภาพที่แย่ลงใน SQL Server 2014
เราเพิ่งอัพเกรดเซิร์ฟเวอร์ของเราจาก SQL Server 2008R2 เป็น SQL Server 2014 เรามีข้อความค้นหาที่ทำงานได้ดีในปี 2008R2 แต่ตอนนี้ในปี 2014 ทำงานช้าลงอย่างไม่น่าเชื่อมากและมีแผนปฏิบัติการที่ไม่ดี ฉันได้ทำการทดสอบหลายครั้ง ... สลับ 2014 DB กลับไปเป็นโหมดเข้ากันได้ 2008/2012 ทดสอบแบบสอบถามโดยใช้การแบ่งหน้า ทั้งสองอย่างนั้นส่งผลให้คิวรีทำงานเหมือนกันกับที่ทำและรวดเร็วเหมือน SQL Server 2008R2 เหตุใดแผนไม่ดีและแบบสอบถามทำงานนานใน SQL Server 2014 ภาพนี้แสดงข้อความค้นหา 2 คำโดยหนึ่งแถวใช้หมายเลขตามที่เรียกใช้ในปี 2008R2 จากนั้นรูปที่สองคือการแก้ไขด้วยการแบ่งหน้า ทั้งสองวิ่งในปี 2014 ทั้งสองแตกต่างกันมาก แต่ในปี 2008 เราเห็นประสิทธิภาพการทำงานเหมือนว่าเราใช้เลขหน้าในปี 2014

1
รีเซ็ตการใช้งานเซิร์ฟเวอร์ SQL
ในสภาพแวดล้อมการพัฒนาของฉันฉันเล่นรอบกับแบบสอบถาม สำหรับสิ่งที่ฉันต้องรีเซ็ตหน่วยความจำ SQL Server แผน ฯลฯ ซึ่งสามารถมั่นใจได้ว่าแบบสอบถามของฉันเป็นเพียงกระบวนการความเครียด / การทำงานบนเซิร์ฟเวอร์ที่มีการรีเซ็ตค่าทั้งหมด ไม่กี่สิ่งที่ฉันทำ จุดตรวจการยิง DROPCLEANBUFFERS DBCC; DBCC FREEPROCCACHE; DBCC FLUSHPROCINDB DBCC FREESESSIONCACHE DBCC SQLPERF ("sys.dm_os_wait_stats", CLEAR); ฉันทำถูกต้องหรือไม่ หรือฉันต้องการข้อมูลเพิ่มเติมเพื่อล้างหรือดูสถิติใหม่

3
กำหนดค่า RAM สำหรับ SQL Server และ NUMA
ผู้ดูแลฐานข้อมูลอุบัติเหตุที่นี่ คำถาม: คุณจะยังคง จำกัด RAM สูงสุดสำหรับ SQL Server ด้วยตนเองแม้ว่าจุดประสงค์เดียวของเซิร์ฟเวอร์นั้นคือเพื่อให้บริการโปรแกรมฐานข้อมูล SQL Server เท่านั้น ฉันมีเซิร์ฟเวอร์ Microsoft Windows 2012 R2, SQL Server 2012 Std, พร้อม 32GB RAM ผู้ดูแลระบบเข้าสู่ระบบ SQL Server อย่างต่อเนื่องเพื่อใช้คอนโซลและทั้งหมด ประการที่สองคุณจะตรวจสอบว่าเซิร์ฟเวอร์ Windows นี้เปิดใช้งาน NUMA ได้อย่างไร

2
การแบ่งพาร์ติชัน SQL Server 2008 R2 - FileGroup เดียวกัน, 1 ไฟล์, 2 partition_numbers - ช่วยเหลือ
เป็นครั้งแรกที่ฉันแบ่งพาร์ติชันใน SQL Server ฉันเรียนรู้จากคู่มือ Brent Ozar ซึ่งยอดเยี่ยม :) สองสามครั้งที่ฉันได้พบกับสถานการณ์แปลก ๆ เมื่อฉันวิ่ง: SELECT * FROM ph.FileGroupDetail ORDER BY partition_number Go มีกลุ่มไฟล์เดียวกันแสดงสองครั้งโดยมี 2 partition_numbers ที่แตกต่างกัน 1 อย่างถูกต้องในตอนท้ายด้วยค่าช่วงอื่น ๆ ที่เริ่มต้นด้วย null range_value คลิกที่นี่เพื่อดูภาพขยาย คำถามสองข้อ: สิ่งนี้เกิดขึ้นได้อย่างไรฉันไปผิดที่ไหน ฉันจะแก้ไขปัญหานี้ได้อย่างไรซึ่งหมายถึงวิธีกำจัดอย่างใดอย่างหนึ่งในตอนเริ่มต้นเนื่องจากฉันมีพาร์ติชันว่างเปล่าที่จุดเริ่มต้น ฉันพยายามลบไฟล์ (ทำงานเมื่อมันว่างเปล่า) และ filegroup แต่ filegroup บอกว่าไม่สามารถลบได้ มีใครช่วยอธิบายได้ว่าเรื่องนี้เกิดขึ้นได้อย่างไรและจะกำจัดรายการพาร์ติชั่น 2 ได้อย่างไร?

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