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

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

5
อัปเดตด้วย JOIN ในบันทึก 100 มม. ทำอย่างไรให้ดีขึ้น? (ใน T-SQL)
ฉันต้องการอัปเดต 100 ล้านเรคคอร์ดในตารางเดียวโดยมีผลทำให้มาตรฐานของตารางเป็นปกติโดยแทนที่ค่า varchar ของคอลัมน์ด้วย ID เพียงอย่างเดียว (ฉันพูดว่า "การแทนที่" แต่จริงๆแล้วฉันกำลังเขียน ID ลงในคอลัมน์อื่น) สิ่งที่ฉันพยายามทำให้สำเร็จคือการทำให้ชุดข้อมูลเป็นมาตรฐาน ข้อมูลที่ยังไม่ได้ทำให้เป็นมาตรฐานไม่มีการจัดทำดัชนี ความคิดของฉันคือฉันจะไม่สร้างดัชนีในค่า raw รอแทนดัชนีคีย์ต่างประเทศที่จะแทนที่ค่า varchar ด้วยค่าจิ๋วจินหลังจากการอัพเดตเสร็จสมบูรณ์ UPDATE A SET A.AutoClassID = B.AutoClassID FROM AutoDataImportStaging.dbo.Automobile as A JOIN AutoData.dbo.AutoClass as B on (A.AutoClassName = B.AutoClassName) พื้นหลัง ใช้ MSSQL 2008 R2 บนเซิร์ฟเวอร์ 2008 R2 เซิร์ฟเวอร์มี RAM 8 GB เซิร์ฟเวอร์มีหนึ่ง …

1
จำนวนจริงบวกต่ำสุดที่เป็นไปได้จริงคืออะไร
MSDN กล่าวว่าช่วงของตัวเลข REAL คือ - 3.40E + 38 ถึง -1.18E - 38, 0 และ 1.18E - 38 ถึง 3.40E + 38 ดูเหมือนว่าขีด จำกัด ล่างที่แท้จริงนั้นต่ำกว่ามาก สคริปต์ต่อไปนี้จะเติมคอลัมน์ REAL ด้วย 1.401298E-45: CREATE TABLE a ( r1 REAL NULL , r2 REAL NULL , r3 REAL NULL ) ; GO INSERT INTO a ( …

2
วิธีการป้องกันการกระจายตัวของดัชนีรายวัน 99%
ฉันมีตารางคะแนนสูงสุดสำหรับผู้เล่น 100,000 คนที่ถูกแทรกลงในวันละ 2 ครั้งโดยมีหนึ่งระเบียนต่อผู้เล่นหนึ่งคน ในตอนท้ายของวันการกระจายตัวของดัชนีสำหรับดัชนีในตารางนั้นคือ 99% มีวิธีการป้องกันโดยการปรับการตั้งค่า? CREATE TABLE HighScore( [id] [int] IDENTITY(1,1) NOT NULL, [user] [int] NULL, [player] [int] NULL, [round] [tinyint] NULL, [group] [int] NULL, [rank] [int] NULL, [delta] [int] NULL, [roundpoints] [int] NULL, [totalpoints] [int] NULL, PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, …

1
เหตุใด 10 ^ 37/1 จึงเกิดข้อผิดพลาดทางคณิตศาสตร์มากเกินไป
ต่อแนวโน้มล่าสุดของฉันในการเล่นกับจำนวนมากฉันเพิ่งต้มข้อผิดพลาดที่ฉันกำลังทำงานลงไปที่รหัสต่อไปนี้: DECLARE @big_number DECIMAL(38,0) = '1' + REPLICATE(0, 37); PRINT @big_number + 1; PRINT @big_number - 1; PRINT @big_number * 1; PRINT @big_number / 1; ผลลัพธ์ที่ฉันได้รับสำหรับรหัสนี้คือ: 10000000000000000000000000000000000001 9999999999999999999999999999999999999 10000000000000000000000000000000000000 Msg 8115, Level 16, State 2, Line 6 Arithmetic overflow error converting expression to data type numeric. อะไร? ทำไมการดำเนินการ 3 รายการแรกถึงทำงานได้ …

3
ความจุของตารางสูงสุดใน SQL Server 2008
ฉันมีแอปพลิเคชันที่แทรกมากกว่า 1 พันล้านแถวต่อปีลงในตาราง ตารางนี้มีบางส่วนvarcharและbigintคอลัมน์และหนึ่งคอลัมน์หยดเช่นกัน 1 พันล้านแถวประกอบด้วยข้อมูลประวัติซึ่งถูกเก็บไว้เพื่อวัตถุประสงค์ในการติดตาม ดังนั้นผมจึงสงสัยว่าจะมีข้อ จำกัด กำลังการผลิตตารางถ้าฉันยังคงอยู่ในโครงสร้างนี้ตามนี้บทความ MSDN เกี่ยวกับขนาดตารางสูงสุด ขนาดไฟล์ข้อมูลที่กล่าวถึงในลิงค์นั้นอ้างถึงกลุ่มไฟล์ข้อมูลตารางหรือไม่?

2
แปลงคอลัมน์วันที่และเวลาเป็นจำนวนวินาที
ในฐานข้อมูล SQL Server ของฉันฉันมีdatetimeคอลัมน์ เป็นวิธีที่ดีในการสร้างคอลัมน์ใหม่ที่แสดงlongค่าสำหรับdatetimeคอลัมน์อย่างไร longจะเป็นตัวแทนจำนวนวินาที ฉันคิดว่าถ้าฉันสามารถแปลงเป็นlongsมันจะทำให้ง่ายขึ้นในการจัดกลุ่มตามข้อความค้นหาในช่วงเวลาเนื่องจากฉันสามารถแบ่งจำนวนยาวด้วยจำนวนคงที่ได้ ตารางคงที่จะไม่อัปเดตหรือลบข้อมูล

2
แจ้งเตือนเมื่องานใด ๆ ในหมวดหมู่งานล้มเหลว
เป็นไปได้หรือไม่ที่จะมีการตั้งค่าการแจ้งเตือนใน SQL Server 2008 ที่จะส่งอีเมลเมื่อใดก็ตามที่งานในประเภทเฉพาะล้มเหลว? ผมสงสัยว่าเพราะผมต้องการที่จะตั้งขึ้นได้ตลอดเวลาอีเมลสมัครสมาชิก SSRS ล้มเหลว - และทั้งหมดของการสมัครรับข้อมูลเหล่านี้เป็นงานในหมวดหมู่ของเซิร์ฟเวอร์รายงาน แก้ไข - ปรากฎว่าเมื่อการสมัครสมาชิก SSRS ล้มเหลวงานของตัวเองไม่ได้ล้มเหลวดังนั้นคำถามของฉันจะไม่ใช้กับการตรวจสอบการสมัครสมาชิก SSRS อย่างไรก็ตามฉันยังต้องการทราบสำหรับงานอื่น ๆ ที่เราทำงานในสภาพแวดล้อมของเรา

2
มีวิธีการตั้งค่าในการโหลด / อ่านสาขาต้นไม้ด้วย HierarchyId
ฉันกำลังเล่นกับ HierarchyId และฉันยังไม่ได้คิดวิธีที่จะทำตามต่อไปนี้: แทรกทรีย่อยทั้งหมดในคราวเดียว ดึงทรีย่อยทั้งหมดในครั้งเดียว คำถามนี้เกี่ยวข้องกับคำถามก่อนหน้าของฉันและฉันสงสัยว่าวิธีเดียวที่จะทำงานสองอย่างนี้ให้สำเร็จด้วย HierarchyId คือหนึ่งโหนดหรือหนึ่งระดับในแต่ละครั้ง หากฉันใช้เส้นทางที่เป็นรูปธรรมการกระทำทั้งสองอย่างสามารถทำได้อย่างง่ายดายโดยคำสั่งพื้นฐานเดียว (และไม่สำคัญ) ฉันกำลังคิดถึงอะไร แก้ไข: ฉันพลาดวิธีย้ายทรีย่อย แต่ฉันเรียนรู้จากความคิดเห็นของ Mikael Eriksson

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

2
กู้คืนไฟล์ bak ไปยังไฟล์ฐานข้อมูล mdf และ ldf ที่เล็กกว่า
ฉันมีฐานข้อมูลดั้งเดิมที่ขาดการออกแบบที่น่ากลัวฉันจะไม่เข้าไปที่นี่ แต่ไฟล์บนเซิร์ฟเวอร์นั้นมีขนาดใหญ่มาก ฉันมี: MyDatabase.mdf: 24.8GB MyDatabase.ldf: 114.6GB ฐานข้อมูลนี้ถูกสำรองข้อมูลเป็นไฟล์. bak ทุกคืนและส่งไปยังเซิร์ฟเวอร์รายงานของเราซึ่งมีการกู้คืน ไฟล์. bak มีขนาดเล็กกว่ามากเพียง 1.8GB อย่างไรก็ตามเมื่อฉันพยายามกู้คืนบนเซิร์ฟเวอร์การรายงานมันล้มเหลวเนื่องจากมีพื้นที่ไม่เพียงพอ เซิร์ฟเวอร์มีพื้นที่ว่างประมาณ 100GB และพยายามทำลายไฟล์ทั้งหมดที่ใช้งานบนเซิร์ฟเวอร์ดั้งเดิม 139.4GB เว้นแต่ว่าฉันรู้ว่าการบีบอัดผิดอย่างน่ากลัวฉันค่อนข้างมั่นใจว่าไฟล์ 1.8GB นั้นไม่ได้เพิ่มขึ้น 7400% คำถามของฉัน: มีวิธีใดที่จะบอกให้ SQL Server กู้คืนไฟล์ข้อมูลสำรองนี้โดยไม่ต้องจองพื้นที่ล่วงหน้า ฉันไม่สนใจเกี่ยวกับบันทึกใด ๆ ฉันแค่ต้องการข้อมูลเพื่ออยู่ที่นั่น ฉันเข้าใจฐานข้อมูลจากมุมมองการพัฒนาและสคีมา แต่ฉันไม่เคยใช้ DBA ประเภทใดเลย นี่คือบน SQL Server 2008 R2 ขอบคุณสำหรับความช่วยเหลือหรือคำแนะนำ

2
sp_executesql กับประเภทตารางที่ผู้ใช้กำหนดไม่ทำงานอย่างถูกต้อง
ปัญหา : มีปัญหาที่ทราบเกี่ยวกับประเภทตารางที่ผู้ใช้กำหนดเป็นพารามิเตอร์สำหรับsp_executesqlหรือไม่ คำตอบ - ไม่ฉันเป็นคนงี่เง่า ตั้งค่าสคริปต์ สคริปต์นี้สร้างหนึ่งในแต่ละตารางขั้นตอนและประเภทตารางที่ผู้ใช้กำหนด (จำกัด SQL Server 2008+ เท่านั้น) จุดประสงค์ของกองคือเพื่อให้การตรวจสอบว่าใช่ข้อมูลทำให้เป็นขั้นตอน ไม่มีข้อ จำกัด ไม่มีสิ่งใดที่จะป้องกันไม่ให้มีการแทรกข้อมูล ขั้นตอนใช้เป็นพารามิเตอร์ที่ผู้ใช้กำหนดประเภทตาราง proc ทั้งหมดจะถูกแทรกลงในตาราง ประเภทตารางที่ผู้ใช้กำหนดนั้นเรียบง่ายเช่นกันเพียงแค่คอลัมน์เดียว ฉันเรียกใช้สิ่งต่อไปนี้11.0.1750.32 (X64) และ10.0.4064.0 (X64)ใช่ฉันรู้ว่ากล่องนั้นสามารถแก้ไขได้ฉันไม่ได้ควบคุมสิ่งนั้น -- this table record that something happened CREATE TABLE dbo.UDTT_holder ( ServerName varchar(200) , insert_time datetime default(current_timestamp) ) GO -- user defined table type transport …

3
รูปแบบการกู้คืน SQL Server 2008 / R2
ฐานข้อมูลทั้งหมดของเราบนเซิร์ฟเวอร์บางตัวไม่จำเป็นต้องใช้แบบจำลองการกู้คืนข้อมูลเต็มรูปแบบ (เราไม่ทำการสำรองข้อมูลบันทึกธุรกรรม) และค่าเริ่มต้นควรจะสร้างฐานข้อมูลและระบุรูปแบบการกู้คืนแบบง่ายเสมอ ค่อนข้างบ่อยและด้วยเหตุผลบางประการฐานข้อมูลจำนวนมากถูกสร้างขึ้นโดยใช้ SSMS อย่างไรก็ตามข้อผิดพลาดสามารถทำได้และผู้ปฏิบัติงานสามารถลืมระบุรูปแบบการกู้คืนอย่างง่าย สิ่งนี้นำไปสู่ ​​"แปลกใจ" ในอีกสองสามวันต่อมาเมื่อกล่องกำลังต่อสู้กับพื้นที่ดิสก์เนื่องจากไฟล์บันทึก 60GB สามหรือสี่ไฟล์ที่ไม่เคยถูกตัดทอน ฉันสามารถสร้างรูปแบบการกู้คืนอย่างง่ายเป็นค่าเริ่มต้นสำหรับฐานข้อมูลใหม่โดยการกำหนดค่ารูปแบบการกู้คืนในmodelฐานข้อมูล อย่างไรก็ตามแนะนำนี้ถ้าฉันทำสิ่งนี้มันจะกลับมาและกัดฉันในทางใดทางหนึ่งในอนาคต?

2
การใช้ schema แยกกันส่งผลต่อประสิทธิภาพของ SQL Server 2008 อย่างไร
ฉันต้องการใช้ schema ที่แยกต่างหากสำหรับวัตถุที่มีวัตถุประสงค์ที่แตกต่างกันในฐานข้อมูล SQL Server 2008 ของเรา ตอนนี้เราใช้หลักการตั้งชื่อที่ทำให้มึนงงอย่างเป็นธรรมเพื่อระบุจุดประสงค์ของตารางหรือขั้นตอนการจัดเก็บและคำนำหน้าหมายความว่าเราต้องสแกนอักขระห้าหรือหกตัวก่อนที่เราจะเห็นจุดเริ่มต้นของชื่อที่ไม่ซ้ำกัน ฉันต้องการใช้สคีมาแยกต่างหากสำหรับตารางที่เพิ่งใช้เพื่อผลักดัน UI (เมนูบทบาทโดยบุคคล ฯลฯ ) และสำหรับผู้ที่เป็นตารางมิติเทียบกับตารางข้อเท็จจริง ฯลฯ คำถามของฉันคือจะมีผลกระทบต่อประสิทธิภาพจากการใช้หลาย schema (schemae?) ตรงข้ามกับ dbo เก่าที่ดีสำหรับทุกสิ่งหรือไม่

2
@table_variable หรือ #temp_table
ฉันมีตัวแปรประเภทตารางที่กำหนดโดยผู้ใช้ขนาดใหญ่ที่มี 129 คอลัมน์ ฉันจะเก็บระเบียนประมาณ 2,000-3,000 รายการในตัวแปรตารางนี้ในแต่ละครั้งและส่งต่อไปยังกระบวนงานและฟังก์ชันที่เก็บไว้ต่าง ๆ เพื่อรับข้อมูลเพิ่มเติมและทำการแก้ไข ข้อมูลเพิ่มเติมและการแก้ไขใหม่เหล่านี้จะถูกเก็บไว้ในตัวแปรตารางใหม่ชนิดเดียวกันและกลับสู่ขั้นตอนการจัดเก็บต้นฉบับผ่านOUTPUTพารามิเตอร์ (นี่เป็นเพราะพารามิเตอร์ประเภทตารางสามารถส่งผ่านเป็นREADONLYเท่านั้น) นี่คือรหัสหลอกของฉัน: SP1 @tmp tableType { INSERT @tmp EXEC SP2 (@tmp) INSERT @tmp EXEC SP3 (@tmp) } ฉันควรใช้@table_variableหรือ#temp_table?

1
noexpand hint สำหรับรุ่นที่ไม่ใช่ enterpise และประสิทธิภาพ
ฉันต้องใช้มุมมองที่จัดทำดัชนีเพื่อให้ได้ประสิทธิภาพ อย่างที่ฉันเห็นจากตารางเปรียบเทียบรุ่นมาตรฐานนี้ไม่รองรับมุมมองที่จัดทำดัชนีไว้ แต่ BOL พูดว่า: สามารถสร้างมุมมองที่จัดทำดัชนีใน SQL Server รุ่นใดก็ได้ ใน SQL Server Enterprise เครื่องมือเพิ่มประสิทธิภาพคิวรีจะพิจารณามุมมองที่จัดทำดัชนีโดยอัตโนมัติ หากต้องการใช้มุมมองที่จัดทำดัชนีไว้ในรุ่นอื่น ๆ ทั้งหมดจะต้องใช้คำใบ้ตาราง NOEXPAND มันจะทำงานได้ดี (ฉันกำลังพูดถึงการแสดง) select * from dbo.OrderTotals with (noexpand, index=IXCU_OrderTotals) บน SQL Server Standard edition และทำงานได้ select * from dbo.OrderTotals ในองค์กรหรือไม่ นี่คือรหัสสำหรับการดู: CREATE VIEW dbo.OrderTotals WITH SCHEMABINDING AS select OrderId = r.OrderId , …

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