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

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

4
เป็นความคิดที่ดีหรือไม่ที่จะใช้คำพ้องความหมายเพื่อหลีกเลี่ยงการสร้างตารางที่ซ้ำกัน
เรามี 3 ฐานข้อมูลเดียวกันที่แน่นอน ฐานข้อมูล 3 ทั้งหมดมีUsersตารางและผู้ใช้จะมีอยู่เสมอในฐานข้อมูล 3 ทั้งหมดด้วยการตั้งค่าเดียวกันแน่นอน เมื่อใดก็ตามที่เราต้องการเพิ่มหรือแก้ไขผู้ใช้เราต้องอัปเดตฐานข้อมูล 3 แห่ง จะเป็นการดีกว่าหรือไม่ที่จะลบUsersตารางออกจากฐานข้อมูล 2 และ 3 และแทนที่ด้วยSynonymจุดนั้นไปยังฐานข้อมูล 1 นี่คือข้อดีข้อเสียที่ฉันคิดได้: ข้อดี บำรุงรักษาง่ายขึ้น สามารถอัปเดตผู้ใช้ในที่เดียวแทนที่จะเป็น 3 รหัสผู้ใช้จะจับคู่ระหว่างฐานข้อมูล (สำคัญเนื่องจากแอปเสริมจำนวนมากอิงตามรหัสผู้ใช้) จุดด้อย อย่าคิดว่านี่เป็นขั้นตอนมาตรฐานดังนั้นอาจทำให้สับสน ผู้ใช้จะต้องมีการตั้งค่าที่เหมือนกันระหว่างฐานข้อมูล (จากคำตอบของ gbnด้านล่าง) หากฐานข้อมูล 1 ดับลงฐานข้อมูล 2 และ 3 จะไม่สามารถใช้งานได้ นอกจากนี้ยังมีปัญหาที่อาจเกิดขึ้นของข้อมูลที่ไม่สอดคล้องกันในกรณีที่มีการกู้คืน นี่เป็นตัวเลือกที่ฉันกำลังพิจารณาสำหรับตารางที่แตกต่างกันสองสามอย่างที่มีการตั้งค่าที่เหมือนกันระหว่างฐานข้อมูลไม่ใช่เฉพาะUsersตาราง ฉันใช้ผู้ใช้ในตัวอย่างเนื่องจากง่ายต่อการเข้าใจ

3
วิธีที่ดีที่สุดและง่ายที่สุดในการปิด SQL Server เมื่อไม่ใช้งานคืออะไร
สถานการณ์: เวิร์กสเตชันของนักพัฒนาซอฟต์แวร์ซึ่งโดยทั่วไปจะใช้เครื่องมือไคลเอ็นต์เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ sql อื่นที่ไม่ใช่โลคัล อย่างไรก็ตามมีบางครั้งที่การมีเวอร์ชันเต็มของ sql server เพื่อพัฒนาท้องถิ่นจะเป็นประโยชน์ ในความพยายามที่จะไม่เปลืองทรัพยากรของระบบที่ใช้เซิร์ฟเวอร์ sql ตลอดเวลาฉันต้องการทราบวิธีที่ดีที่สุดในการ "ปิดการใช้งาน" ในขณะที่ยังคงอนุญาตให้ใช้เครื่องมือไคลเอ็นต์ (การจัดการสตูดิโอ ฯลฯ )
13 sql-server 

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

5
SQL Server 2008 ดัชนีข้อความแบบเต็มไม่เคยดูเหมือนจะเสร็จสมบูรณ์
เว็บไซต์ของเรามีฐานข้อมูล SQL Server 2008 R2 Express Edition พร้อมการจัดทำดัชนีข้อความแบบเต็มสำหรับการค้นหาเว็บไซต์ของเรา ทุกครั้งที่มีการเพิ่มหรืออัปเดตระเบียนใหม่ในหนึ่งในตารางที่จัดทำดัชนีกระบวนการจัดทำดัชนีจะไม่เสร็จ ฉันได้รับการตรวจสอบสถานะในช่วงหลายสัปดาห์ที่ผ่านมาโดยใช้ข้อความค้นหาเดียวกันบนเว็บไซต์นี้: http://www.sqlmonster.com/Uwe/Forum.aspx/sql-server-search/2155/Why-is-this -population สละให้ยาว นี่คือสิ่งที่ฉันเห็นเมื่อฉันเรียกใช้แบบสอบถาม (คลิกเพื่อดูขนาดเต็ม): ระเบียนใหม่ล่าสุดในตารางที่จัดทำดัชนีไม่สมบูรณ์และไม่สามารถค้นหาได้ แม้ว่าจะมีข้อมูลไม่มากในตารางฉันรอวันเพื่อดูว่าการจัดทำดัชนีเสร็จสมบูรณ์ แต่ไม่มีอะไรเปลี่ยนแปลง วิธีเดียวที่ฉันสามารถทำให้การทำดัชนีเสร็จสมบูรณ์ได้คือการสร้างแคตตาล็อกใหม่หรือเพื่อดรอปและสร้างดัชนีทั้งหมดอีกครั้ง ทุกครั้งที่ฉันทำสิ่งนั้นปัญหาเดียวกันจะกลับมาอีกครั้งทันทีที่มีการเพิ่มสถิติใหม่ครั้งแรก นี่คือสถานะเซิร์ฟเวอร์ในกรณี: Quad-Core AMD Opteron 2.34GHz 4GB RAM Windows Server 2008 R2 Enterprise SP1 x64 SQL Server 2008 R2 Express Edition พร้อมบริการขั้นสูง x64

1
ปรับปรุงประสิทธิภาพ BCP สำหรับข้อมูล BLOB
ฉันเป็นกระบวนการในการวางแผนการโยกย้ายแบบสดของฐานข้อมูล 2TB ไปยังตารางที่แบ่งพาร์ติชัน ระบบกำลังพูดอย่างกว้างขวางในการจัดเก็บเอกสารพื้นที่ส่วนใหญ่ถูกจัดสรรให้กับ LOBs ระหว่าง 50kb และ 500kb โดยมีเปอร์เซ็นต์เล็กน้อยในช่วง 500kb ถึง 1MB ส่วนหนึ่งของการโยกย้ายจะเกี่ยวข้องกับข้อมูล BCPing จากฐานข้อมูลเก่าไปยังฐานข้อมูลใหม่ BCP เป็นวิธีการที่ต้องการเนื่องจากการแบ่งปัจจุบัน / ประวัติศาสตร์ในข้อมูลอนุญาตให้แยกข้อมูลเก่าในขั้นตอน (ในช่วงเวลาที่เงียบสงบ) ล่วงหน้าของสวิตช์สุดท้ายซึ่งช่วยลดผลกระทบต่อระบบถ่ายทอดสด ปริมาณของข้อมูลและความพร้อมของการจัดเก็บติ๊ดในแหล่งกำเนิดสร้างโครงการพาร์ทิชัน ฉันสงสัยว่าอาจมีการเพิ่มประสิทธิภาพบางอย่างจากการทดลองกับ KILOBYTES_PER_BATCH มากกว่า ROWS_PER_BATCH เนื่องจากเนื้อหา BLOB แนะนำในเอกสารคู่มือBCPที่ SQL สามารถปรับการดำเนินงานให้เหมาะสมตามค่านี้ สิ่งที่ฉันไม่สามารถหาได้คือแนวทางใด ๆ เกี่ยวกับลักษณะของการเพิ่มประสิทธิภาพเหล่านี้หรือที่ที่จะเริ่มการทดสอบของฉัน ในความไม่สมบูรณ์ของคำแนะนำฉันจะลองวิ่งระยะสั้นที่ขอบเขต 4/8/16/32 / 64mb เพื่อเริ่มต้น อาจได้ประโยชน์จากการเปลี่ยนขนาดแพ็คเก็ต (พารามิเตอร์ BCP -a แทนที่จะเป็นการตั้งค่าระดับเซิร์ฟเวอร์) แต่ฉันมีแนวโน้มที่จะชนสิ่งนี้เป็นจำนวนสูงสุด 65535 เว้นแต่ว่าใครมีวิธีการสูตรมากขึ้น

5
SentryOne Plan Explorer ทำงานหรือไม่
ไม่SentryOne แผน Explorer ในการทำงานตามที่โฆษณาและมันเป็นเรื่องที่ถูกต้อง? มี gotchas หรืออะไรที่ต้องกังวล? ดูเหมือนว่ามันจะแสดงเส้นทางร้อนในสีซึ่งเทียบกับฝันร้ายของ SSMS สำหรับแผนการดำเนินการโดยประมาณ ความกังวลของฉันคือ - มันแก้ไขข้อมูลใด ๆ ที่เป็นอันตรายหรือไม่? แก้ไข : ฉันเพิ่งได้ยินมันและไม่เคยได้ยิน บริษัท มาก่อน

2
ตัดทอนฐานข้อมูล SQL Server ขนาดใหญ่
ฉันมีฐานข้อมูลทดสอบ SQL Server 2008 ขนาดใหญ่ (1.9TB) และฉันต้องการลดขนาดลงบนดิสก์ ฉันลบตารางที่ไม่ได้ใช้ไปแล้วและกำจัดข้อมูลจำนวนมาก แต่ขนาดของดิสก์ไม่ลดลง ฉันควรทำอย่างไรดี? ฉันได้ดูงาน Shrink ใน SSMS แล้ว แต่ตัวเลือกกำลังสับสน ฉันลดขนาดฐานข้อมูลหรือไฟล์หรือไม่? และมีตัวเลือกอะไร?
13 sql-server 

4
SQL Server Management Studio สำหรับฐานข้อมูลระยะไกล
ด้วยฐานข้อมูล SQL Sever ซึ่งอยู่บนเซิร์ฟเวอร์เฉพาะโฮสต์ระยะไกลฉันสามารถทำงานได้โดยใช้ SQL Server Management Studio ติดตั้งบนเซิร์ฟเวอร์เดียวกันหรือบนเครื่องคอมพิวเตอร์ของฉัน ฉันเป็นกรณีแรกที่ฉันควรใช้ Remote Desktop และสิ่งนี้ทำให้การทำงานช้าลงเล็กน้อย ในกรณีที่สองฉันต้องเปิดพอร์ตเพิ่มเติมในไฟร์วอลล์ของเซิร์ฟเวอร์ แต่ฉันจะมีประสบการณ์การใช้งานที่สะดวกสบายมากขึ้น การปฏิบัติที่แนะนำของทั้งสองนี้คืออะไร?
13 sql-server  ssms 

1
SQL Server - หน้าข้อมูลถูกจัดเก็บอย่างไรเมื่อใช้ดัชนีแบบคลัสเตอร์
ฉันเพิ่งได้ยินว่าหน้าข้อมูลในดัชนีคลัสเตอร์ไม่ได้ถูกจัดเก็บอย่างต่อเนื่อง มันเป็นเรื่องจริงเหรอ? บางทีหน้าข้อมูลมักจะถูกจัดเก็บอย่างต่อเนื่องพร้อมกับข้อยกเว้นบางอย่างสำหรับกฎ หรือบางทีฉันได้ยินผิดและหน้าข้อมูลถูกจัดเก็บอย่างต่อเนื่องเสมอ ขอบคุณมาก.

4
คำแนะนำในการเพิ่มประสิทธิภาพการค้นหา SQL Server 2005/8
ฉันกำลังมองหาการให้ความรู้แก่ทีมเกี่ยวกับการเขียนแบบสอบถาม SQL Server ที่ดีขึ้นและสงสัยว่าคำแนะนำที่ดีที่สุดของผู้คนคืออะไรสำหรับการปรับปรุงประสิทธิภาพ ตัวอย่างเช่นฉันเคยมี DBA ซึ่งยืนยันว่าการนับ (*) จะทำงานได้แย่กว่าการนับ (1) (ฉันไม่รู้เลยว่าเธอถูกหรือว่ายังใช้ได้กับการเพิ่มประสิทธิภาพการสืบค้นล่าสุด) อะไรสิ่งที่ง่ายที่ฉันควรจะบอกทีมงานที่จะลองและมักจะใช้หรือหลีกเลี่ยง? ฉันกำลังมองหาสิ่งที่ (a) อาจสร้างความแตกต่างที่สมเหตุสมผลและ (b) ตรงไปตรงมา 1 - 2 บรรทัดเพื่อระบุ

3
วิธีรับค่า non-null ล่าสุดในคอลัมน์ที่เรียงลำดับของตารางขนาดใหญ่ได้อย่างไร
ฉันมีอินพุตต่อไปนี้: id | value ----+------- 1 | 136 2 | NULL 3 | 650 4 | NULL 5 | NULL 6 | NULL 7 | 954 8 | NULL 9 | 104 10 | NULL ฉันคาดหวังผลลัพธ์ต่อไปนี้: id | value ----+------- 1 | 136 2 | 136 3 | 650 4 …

3
ซ่อนเลือกเอาต์พุตจาก T-SQL
ฉันพยายามรับเวลาประมวลผลแบบสอบถาม แต่ฉันต้องการซ่อนผลลัพธ์คิวรีด้วย ฉันแค่ต้องการเวลาที่ผ่านไป - ไม่มีเอาต์พุต ตัวอย่าง DECLARE @Start datetime DECLARE @End datetime SELECT @StartTimeWA=GETDATE() SELECT [id] ,[database_id] ,[proc_name] ,[exec_t] from [DB].[dbo].[STAT] SELECT @End=GETDATE() SELECT DATEDIFF(MS,@Start,@End) AS [Duration] ในขณะนี้ฉันได้รับผลลัพธ์ของแบบสอบถามและที่ด้านล่างระยะเวลาของฉันซึ่งเป็นสิ่งเดียวที่ฉันต้องการเท่าที่ผลผลิตจะไป ฉันไม่สามารถทำสิ่งนี้และสงสัยว่ามีคนอื่นเจอปัญหาที่คล้ายกันหรือไม่ นี่คือสิ่งที่ฉันต้องการทำใน T-SQL ไม่ใช่ Management Studio หรืออะไรทำนองนั้น ฉันพยายามตรวจสอบเวลาที่ใช้ในการเรียกใช้คำสั่ง select และรายงานกลับไปที่เซิร์ฟเวอร์ ฉันมีเซิร์ฟเวอร์มอนิเตอร์ภายนอกซึ่งจะทำงานทุกนาทีและได้รับเวลาย้อนกลับ (ระยะเวลาที่ใช้) ซึ่งฉันจะใช้เมื่อเวลาผ่านไปแนวโน้ม / พื้นฐาน ในขณะที่การสืบค้นปัจจุบันแยกแยะผลลัพธ์ที่เลือกและระยะเวลาของฉันมันจะลื่นและเซิร์ฟเวอร์จอภาพของฉันก็สับสน ฉันต้องการคอลัมน์ระยะเวลา ฉันจะทำเช่นนี้เพื่อแทรกซึ่งจะตรงไปตรงมาเพราะมันไม่จำเป็นต้องเลือก ฉันพยายามที่จะทำเช่นนี้ได้อย่างหมดจดใน T-SQL ฉันไม่ต้องการใช้ DMV …
13 sql-server  t-sql 

1
เกิดข้อผิดพลาดในการเริ่มบริการ SQL Server 2017 รหัสข้อผิดพลาด 3417
ฉันติดตั้ง SQL Server 2017 บนคอมพิวเตอร์ของฉันแล้ว นี่คือสิ่งที่SELECT @@VERSIONส่งคืน: Microsoft SQL Server 2017 (RTM-GDR) (KB4293803) - 14.0.2002.14 (X64) 21 กรกฎาคม 2561, 07:47:45 ลิขสิทธิ์ (C) 2017 Microsoft Corporation รุ่นองค์กร (64 บิต) บน Windows 10 Enterprise 10.0 (รุ่น 17134: ) ` มันทำงานได้ดีจนกระทั่งเมื่อวาน ทันใดนั้นSQL SERVER Serviceไม่ได้ทำงาน 3417 errorเมื่อผมอยากจะเรียกใช้บริการด้วยตนเองมันแสดงให้เห็น เมื่อฉันตรวจสอบบันทึกเหตุการณ์ฉันเห็นข้อผิดพลาดนี้: การอัปเกรดระดับสคริปต์สำหรับฐานข้อมูล 'ต้นแบบ' ล้มเหลวเนื่องจากขั้นตอนการอัพเกรด 'msdb110_upgrade.sql' พบข้อผิดพลาด 200, …

2
ทำความเข้าใจกับ varchar (สูงสุด) 8000 คอลัมน์และทำไมฉันถึงสามารถเก็บได้มากกว่า 8000 ตัวอักษร
จากเอกสารของ Microsoft นี้ + n กำหนดความยาวสตริงและสามารถเป็นค่าตั้งแต่ 1 ถึง 8,000 max บ่งชี้ว่าขนาดหน่วยเก็บข้อมูลสูงสุดคือ 2 ^ 31-1 ไบต์ (2 GB) ขนาดการจัดเก็บข้อมูลเป็นความยาวจริงของข้อมูลที่ป้อน + 2 ไบต์ โปรดช่วยฉันเข้าใจสิ่งนี้ อักขระสูงสุดสำหรับ varchar น่าจะเป็น8000ซึ่งน้อยกว่า2GBมูลค่าของข้อมูล ฉันเห็นว่ามีระเบียนในvarchar(max)คอลัมน์ของตารางเฉพาะที่มีlen(mycolumn)> 100,000 ดังนั้นฉันรู้ว่าฉันจะได้รับมากกว่า8000อักขระลงในvarchar(max)คอลัมน์ คำถามที่ 1:อย่างไร8000ตัวละครเข้ามาเล่นและที่ฉันควรจะตระหนักถึงมันได้หรือไม่ คำถามที่ 2 : ข้อความค้นหา. dat สุทธิไปยังคอลัมน์นี้จะแสดงผลลัพธ์แบบเต็มด้วยอักขระ 100 000+ ตัวเสมอหรือไม่

2
ใช้แทนที่ใน SQL
ฉันมีตารางและฉันจำเป็นต้องอัปเดตชื่อบางส่วน แต่ฉันสงสัยเกี่ยวกับ แบบสอบถามต่อไปนี้: ทั้งสองจะทำเหมือนกันหรือไม่ Query1 Update mytable Set Name = Replace(Name,'Jeff','Joe') Query2 Update mytable Set Name = 'Joe' where Name = 'Jeff'
13 sql-server 

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