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

SQL Server 2008 (รุ่นบิลด์หลัก 10.00.xxxx) โปรดติดแท็กด้วย sql-server

3
ฉันสามารถย้ายแถวระหว่างพาร์ติชั่นโดยอัพเดตพาร์ติชั่นคีย์ได้ไหม?
ฉันคิดว่านี่เป็นคำถามที่ค่อนข้างง่าย แต่จริง ๆ แล้วฉันมีช่วงเวลาที่ยากลำบากในการหาคำตอบสำหรับเรื่องนี้ คำถาม: คุณสามารถย้ายแถวของข้อมูลภายในตารางที่แบ่งพาร์ติชันจากพาร์ติชันหนึ่งไปยังอีกพาร์ติชันโดยเพียงแค่การปรับปรุงคอลัมน์พาร์ติชันเพื่อที่จะข้ามขอบเขตพาร์ติชัน? ตัวอย่างเช่นถ้าฉันมีตารางที่มีพาร์ติชันคีย์: CREATE TABLE SampleTable ( SampleID INT PRIMARY KEY, SampleResults VARCHAR(100) NOT NULL, ) ด้วยฟังก์ชั่นพาร์ติชันที่จับคู่กับคีย์หลัก: CREATE PARTITION FUNCTION MyPartitionFunc (INT) AS RANGE LEFT FOR VALUES (10000, 20000); ฉันสามารถย้ายแถวจากพาร์ติชันแรกไปยังพาร์ติชันที่สามได้โดยเปลี่ยน SampleID จาก 1 เป็น 500,000 (พูด) 500,000 หรือไม่ หมายเหตุ: ฉันติดแท็กเป็นทั้งเซิร์ฟเวอร์ sql 2005 และ 2008 เนื่องจากทั้งสองสนับสนุนการแบ่งพาร์ติชัน พวกเขาจัดการกับมันแตกต่างกันหรือไม่?

3
จำลองลำดับ TSQL ผ่านกระบวนงานที่เก็บไว้
ฉันมีความต้องการในการสร้างขั้นตอนการจัดเก็บซึ่งจำลองลำดับ TSQL นั่นคือจะให้ค่าจำนวนเต็มที่แตกต่างเพิ่มขึ้นทุกครั้งที่โทร นอกจากนี้หากมีการส่งจำนวนเต็มควรส่งคืนค่านั้นหากไม่เคยได้ผลลัพธ์ที่ดีกว่าหรือจำนวนเต็มที่สูงสุดถัดไปที่มีอยู่ มันไปโดยไม่บอกว่าอาจมีลูกค้าหลายรายที่เรียกใช้ SP นี้ในเวลาเดียวกัน รับ MetaInfo ตารางพร้อมคอลัมน์ MetaKey varchar (สูงสุด) และ MeatValueLong bigInt คาดว่าแถวที่มี MetaKey ของ 'Internal-ID-Last' จะมีค่าสูงสุดที่กำหนดล่าสุด ฉันสร้างกระบวนงานที่เก็บไว้ต่อไปนี้: CREATE PROCEDURE [dbo].[uspGetNextID] ( @inID bigInt ) AS BEGIN SET NOCOUNT ON; BEGIN TRANSACTION UPDATE MetaInfo WITH (ROWLOCK) SET MetaValueLong = CASE WHEN ISNULL(MetaValueLong,0) > @inID THEN MetaValueLong+1 …

3
ฉันจะรับประกันได้อย่างไรว่าการแทรกไปยัง SQL Server 2008 R2 จะถูกแคชใน RAM ก่อน?
ลองนึกภาพสตรีมของข้อมูลที่ "ระเบิด" นั่นคือสามารถมี 10,000 เหตุการณ์มาถึงอย่างรวดเร็วตามด้วยอะไรสักอย่างในหนึ่งนาที คำแนะนำจากผู้เชี่ยวชาญของคุณ: ฉันจะเขียนโค้ดแทรก C # สำหรับ SQL Server ได้อย่างไรซึ่งรับประกันว่า SQL จะแคชทุกอย่างทันทีใน RAM ของตัวเองโดยไม่บล็อกแอปของฉันมากกว่าที่จะป้อนข้อมูลลงใน RAM ดังกล่าว เพื่อให้บรรลุสิ่งนี้คุณรู้หรือไม่ว่ารูปแบบใด ๆ สำหรับการตั้งค่าเซิร์ฟเวอร์ SQL เองหรือรูปแบบการตั้งค่าตาราง SQL แต่ละตารางที่ฉันกำลังเขียน แน่นอนฉันสามารถทำเวอร์ชั่นของฉันเองซึ่งเกี่ยวข้องกับการสร้างคิวของตัวเองใน RAM - แต่ฉันไม่ต้องการที่จะสร้างยุคหินขวานยุคหินใหม่เพื่อพูด

6
ข้อผิดพลาด“ ช่วงเวลาหมดเวลาล็อคคำขอเกิน” เมื่อพยายามดูลำดับชั้นฐานข้อมูล
ฉันมีปัญหากับฐานข้อมูล ฉันสามารถเรียกใช้แบบสอบถามพื้นฐานแม้จะช้ากว่าปกติมาก เมื่อฉันพยายามที่จะดูต้นไม้ลำดับชั้นสำหรับตารางวิวหรือขั้นตอนใน SSMS วัตถุ Explorer lock request time out period exceededฉันได้รับ รายงาน SSRS ของฉันที่ทำงานกับวัตถุในฐานข้อมูลนี้ไม่เสร็จสมบูรณ์อีกต่อไป งานที่เกี่ยวข้องกับขั้นตอนการจัดเก็บในฐานข้อมูลนี้ยังไม่ได้ทำงาน ฉันพยายามใช้sp_who2เพื่อค้นหาและฆ่าการเชื่อมต่อทั้งหมดในฐานข้อมูลอย่างไรก็ตามวิธีนี้ไม่ได้แก้ปัญหา เกิดขึ้นที่นี่คืออะไร? ฉันจะแก้ไขปัญหานี้ได้อย่างไร

1
การค้นหาเวลาล่าสุดที่ตารางถูกอัพเดต
แบบสอบถาม: SELECT name AS TableName, create_date AS CreatedDate, modify_date as ModifyDate FROM sys.tables order by ModifyDate; ... จะบอกฉันว่าครั้งสุดท้ายที่มีการสร้างและแก้ไขตาราง (จากมุมมอง DDL) แต่ฉันต้องการทราบว่าข้อมูลจริงครั้งล่าสุดถูกแทรกหรือลบออกจากตาราง เป็นไปได้หรือไม่ที่จะได้รับสิ่งนี้ใน SQL Server

6
วิธีการวางหลายตารางด้วยคำนำหน้าทั่วไปในหนึ่งแบบสอบถาม?
ฉันใช้ Microsoft SQL Server 2008 คำถามของฉันคือ: จะวางหลายตารางด้วยคำนำหน้าทั่วไปในการค้นหาเดียวได้อย่างไร ชื่อตารางนั้น: LG_001_01_STLINE, LG_001_02_STFICHE

4
เหตุใดแบบสอบถามนี้จึงช้าลงอย่างมากเมื่อรวมไว้ใน TVF
ฉันมีคิวรีที่ค่อนข้างซับซ้อนซึ่งทำงานในเวลาเพียงไม่กี่วินาทีด้วยตัวเอง แต่เมื่อรวมกับฟังก์ชันที่มีค่าเป็นตารางมันจะช้ากว่ามาก ฉันไม่ได้ปล่อยให้มันจบ แต่มันวิ่งไปสิบนาทีโดยไม่จบ การเปลี่ยนแปลงเพียงอย่างเดียวคือการแทนที่ตัวแปรวันที่สองตัว (เริ่มต้นด้วยตัวอักษรวันที่) ด้วยพารามิเตอร์วันที่: ทำงานในเจ็ดวินาที DECLARE @StartDate DATE = '2011-05-21' DECLARE @EndDate DATE = '2011-05-23' DECLARE @Data TABLE (...) INSERT INTO @Data(...) SELECT... SELECT * FROM @Data ทำงานอย่างน้อยสิบนาที CREATE FUNCTION X (@StartDate DATE, @EndDate DATE) RETURNS TABLE AS RETURN SELECT ... SELECT * FROM X ('2011-05-21', '2011-05-23') …

4
สร้างฐานข้อมูลสิทธิ์ปฏิเสธในฐานข้อมูล 'ต้นแบบ' ไม่สามารถรับสิทธิ์
ฉันกำลังสร้างฐานข้อมูลในเซิร์ฟเวอร์ sql และแสดงข้อผิดพลาดที่"CREATE DATABASE permission denied in database 'master'" ฉันใช้เข้าสู่ระบบของผู้ดูแลระบบในตัวเอง ฉันต้องทำอะไร? กรุณาแนะนำการแก้ไข!

3
Sleeping SPID บล็อกธุรกรรมอื่น ๆ
ฉันมีปัญหาในการติดตามการบล็อกที่เรากำลังประสบอยู่ รากปิดกั้นสถานะ SPID เป็น 'นอน' cmd คือ 'รอคำสั่ง' และเป็นsqltextSET TRANSACTION ISOLATION LEVEL READ COMMITTED เมื่อฉันดูรายงานยอดการทำธุรกรรมตามรายการธุรกรรมที่ถูกบล็อกคำสั่งการบล็อก SQL คือ '-' ฉันทำการติดตามบน SQL และเมื่อการบล็อคเกิดขึ้นการติดตามรูทการบล็อค SPID แต่มันไม่ได้นำฉันไปทุกที่ คำสั่งร่องรอยสุดท้ายคือเช่นเดียวกับข้างต้นsqltextSET TRANSACTION ISOLATION LEVEL READ COMMITTED ฉันได้ตรวจสอบขั้นตอนการจัดเก็บที่เกี่ยวข้องทั้งหมดแล้วฉันสามารถค้นหาเพื่อให้แน่ใจว่าพวกเขามีงบ TRY / CATCH BEGIN TRAN / COMMIT TRAN / ROLLBACK งบ TRAN (เราใช้ขั้นตอนที่เก็บไว้สำหรับทุกสิ่งดังนั้นจึงไม่มีคำสั่งแบบสแตนด์อโลน) ปัญหานี้เพิ่งเริ่มเกิดขึ้นในช่วง 24 ชั่วโมงที่ผ่านมาและไม่มีใครอ้างว่าได้ทำการเปลี่ยนแปลงใด ๆ กับระบบ การแก้ไข: หนึ่งในขั้นตอนการจัดเก็บที่ใช้บ่อยของเรามีข้อผิดพลาดกับการแทรก …

2
วิธีหลีกเลี่ยงการใช้ตัวแปรในส่วนคำสั่ง WHERE
ได้รับขั้นตอนการจัดเก็บ (ง่าย) เช่นนี้: CREATE PROCEDURE WeeklyProc(@endDate DATE) AS BEGIN DECLARE @startDate DATE = DATEADD(DAY, -6, @endDate) SELECT -- Stuff FROM Sale WHERE SaleDate BETWEEN @startDate AND @endDate END หากSaleตารางมีขนาดใหญ่SELECTอาจใช้เวลาดำเนินการนานเนื่องจากเครื่องมือเพิ่มประสิทธิภาพไม่สามารถปรับให้เหมาะสมเนื่องจากตัวแปรท้องถิ่น เราทดสอบการใช้ชิ้นSELECTส่วนด้วยตัวแปรจากนั้นจึงกำหนดวันที่ฮาร์ดโค้ดและเวลาดำเนินการเริ่มจาก ~ 9 นาทีถึง ~ 1 วินาที เรามีขั้นตอนการจัดเก็บจำนวนมากที่ค้นหาตามช่วงวันที่ "คงที่" (สัปดาห์, เดือน, 8 สัปดาห์เป็นต้น) ดังนั้นพารามิเตอร์อินพุตเป็นเพียง @endDate และ @startDate จะถูกคำนวณภายในขั้นตอน คำถามคือวิธีปฏิบัติที่ดีที่สุดในการหลีกเลี่ยงตัวแปรในส่วนคำสั่ง WHERE เพื่อที่จะไม่ประนีประนอมกับเครื่องมือเพิ่มประสิทธิภาพคืออะไร? …

3
ขนาดหน่วยการจัดสรร SQL Server NTFS
ใน Windows 2008 R2 ที่เรียกใช้ SQL Server 2008 R2 วิธีที่สำคัญคือขนาดของหน่วยการจัดสรร NTFS ในประสิทธิภาพของ DISK IO สำหรับฉันแล้วผู้ดูแลเซิร์ฟเวอร์ที่สร้างเซิร์ฟเวอร์ไม่กี่แห่งสำหรับแอปที่มีภารกิจสำคัญเหลือขนาดหน่วยการจัดสรร NTFS (ขนาดคลัสเตอร์) ไปเป็นค่าเริ่มต้น 4 KB แทนที่จะเป็น 64 KB ติดตั้งเซิร์ฟเวอร์ SQL แล้ว การถอนการติดตั้ง SQL - ฟอร์แมตไดรฟ์ที่มีขนาดคลัสเตอร์ 64 KB และติดตั้งเซิร์ฟเวอร์ SQL ใหม่หรือไม่

2
SQL Server - วิธีปฏิบัติที่ดีที่สุดสำหรับการเติบโตของไฟล์ฐานข้อมูล
ฉันเฝ้าสังเกตการเติบโตของไฟล์ผ่านตัวรวบรวมข้อมูลใน sql server 2008 r2 เป็นเวลาสองสัปดาห์ ฐานข้อมูลมีการเติบโตอย่างต่อเนื่องที่ประมาณ 35 (MB) / วัน ฐานข้อมูลยังไม่ถึงขนาดเริ่มต้นที่ 2 GB การเติบโตอัตโนมัติของไฟล์ฐานข้อมูลถูกตั้งไว้ที่ 5MB และฉันต้องการลองวิธีอื่นดังนั้นฉันจึงกำลังมองหาคำแนะนำและหรือความคิดเห็น มีงานปรับแต่งที่ทำงานทุกสัปดาห์ในคืนวันอาทิตย์เวลา 1:30 น. ภารกิจจะ: ตรวจสอบความสมบูรณ์ของฐานข้อมูล ย่อขนาดแฟ้มบันทึก - (ไม่เป็นไรเนื่องจากโหมดการบันทึกเป็นแบบง่าย) ลดขนาดฐานข้อมูล จัดระเบียบดัชนีใหม่ สร้างดัชนีใหม่ อัปเดตสถิติ ล้างประวัติ ฉันต้องการเพิ่มอีกสองขั้นตอนในแผนการปรับรายสัปดาห์: ขยายไฟล์ฐานข้อมูลขึ้น 500 MB หากพื้นที่ที่ใช้จนถึงขีด จำกัด หรือขนาดทั้งหมด ขยายไฟล์บันทึกเพิ่มขึ้น 250 MB (หลังการย่อขนาด) หากพื้นที่ที่ใช้จนถึงขีด จำกัด ขนาดทั้งหมด ด้วยการวางภาระการเติบโตในเวลาออฟไลน์ฉันหวังว่าจะได้รับประสิทธิภาพโดยการลดจำนวนกิจกรรมการเติบโตอัตโนมัติในช่วงที่มีงานหนัก ฉันมีคำถามสองข้อเกี่ยวกับไฟล์ที่กำลังเติบโตอัตโนมัติ สถานที่ที่ดีที่สุดที่จะนำขั้นตอนการเติบโตของไฟล์มาไว้ก่อนหน้าขั้นตอนปัจจุบันหรือหลังจากนั้น หากฉันใช้ALTER DATABASE|MODIFY FILEเพื่อขยายไฟล์ฉันจะทราบได้SpaceUsedInFile …

5
ทดสอบว่าคอลัมน์ใด ๆ เป็น NULL
ฉันพยายามที่จะคิดออกแบบสอบถามง่าย ๆ ที่ฉันสามารถทำได้เพื่อทดสอบว่าตารางขนาดใหญ่มีรายการของรายการที่มีค่าว่างอย่างน้อยหนึ่ง (NULL / เปล่า) ในคอลัมน์ใด ๆ ฉันต้องการบางสิ่งบางอย่าง SELECT * FROM table AS t WHERE ANY(t.* IS NULL) ฉันไม่ต้องการที่จะทำ SELECT * FROM table AS t WHERE t.c1 = NULL OR t.c2 = NULL OR t.c3 = NULL นี่จะเป็นข้อความค้นหาขนาดใหญ่

4
SQL Server 2005/2008 UTF-8 Collation / Charset
ฉันไม่สามารถค้นหาตัวเลือกโดยตรงเพื่อตั้งค่าการUTF-8รวมCollations/Charsetsใน SQL Server 2005/2008 เช่นเดียวกับที่เป็นไปได้ในการตั้งค่าในเอ็นจิน SQL อื่น แต่ใน SQL Server 2005/2008 มีการเปรียบเทียบละตินและ SQL เท่านั้น มีตัวเลือกในการบังคับ / ติดตั้ง collations / charsets เหล่านี้ในเอ็นจิน SQL Server (สำหรับทั้งสองเวอร์ชัน) 2005/2008 บน Win2008 OS

1
ความเสียหายประเภทใดที่ DBCC CheckDB พลาด
คำถามนี้ได้รับแจ้งจากโพสต์ก่อนหน้านี้และมีฐานข้อมูลของฉันถูกเก็บไว้สำหรับการตรวจสอบในอนาคตที่ถูกเรียกคืนต่อไปนี้: BACKUP 'BrokenDatabase' detected an error on page (1:123456) in file ’BrokenDatabase.mdf'. Error: 3043, Severity: 16, State: 1. ในคำถามที่เชื่อมโยงและการสำรองข้อมูลฉันมีความพร้อมสำหรับการตรวจสอบหน้า DBCC, CHECKDB DBCC ผ่านไปโดยไม่มีข้อผิดพลาด แต่ความเสียหายปรากฏชัด ความเสียหายประเภทใดที่สามารถเกิดขึ้นได้โดย CHECKDB จะผ่านไป แต่การสำรองข้อมูลด้วยเช็คจะล้มเหลว

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