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

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

5
แนบ / แยกออกจากการสำรองข้อมูล / เรียกคืน
ฉันต้องการถ่ายโอนฐานข้อมูล (ภาพรวม) ไปยังเซิร์ฟเวอร์อื่นเพื่อสร้างฐานข้อมูลซ้ำเพื่อตั้งค่าสภาพแวดล้อมการทดสอบอื่น ฉันมีสองทางเลือก: ทำการสำรองข้อมูลเต็มรูปแบบที่เซิร์ฟเวอร์ต้นทาง / กู้คืนที่เซิร์ฟเวอร์ปลายทาง; แยกที่เซิร์ฟเวอร์ต้นทาง / แนบที่เซิร์ฟเวอร์ปลายทาง ข้อดีและข้อเสียของทั้งสองโซลูชั่นตามความต้องการของฉันคืออะไร ฉันใช้ SQL Server 2008 Enterprise

2
SQL Server สามารถสร้างการชนในชื่อข้อ จำกัด ที่ระบบสร้างได้หรือไม่?
ฉันมีแอปพลิเคชั่นที่สร้างตารางเป็นล้านตารางในฐานข้อมูล SQL Server 2008 (ไม่ใช่คลัสเตอร์) ฉันต้องการอัพเกรดเป็น SQL Server 2014 (เป็นกลุ่ม) แต่ฉันพบข้อความแสดงข้อผิดพลาดเมื่อโหลดไม่ครบ: “ มีวัตถุชื่อ 'PK__tablenameprefix__179E2ED8F259C33B' ในฐานข้อมูลอยู่แล้ว " นี่คือชื่อข้อ จำกัด ที่ระบบสร้างขึ้น ดูเหมือนว่าหมายเลข 64 บิตที่สร้างแบบสุ่ม เป็นไปได้ไหมที่ฉันเห็นการชนเนื่องจากตารางจำนวนมาก? สมมติว่าฉันมี 100 ล้านตารางฉันคำนวณโอกาสน้อยกว่า 1 ใน 1 ล้านล้านของการชนกันเมื่อเพิ่มตารางถัดไป แต่ถือว่าเป็นการกระจายแบบสม่ำเสมอ เป็นไปได้หรือไม่ที่ SQL Server เปลี่ยนอัลกอริธึมการสร้างชื่อระหว่างเวอร์ชั่น 2008 และ 2014 เพื่อเพิ่มโอกาสในการชน? ความแตกต่างที่สำคัญอื่น ๆ คืออินสแตนซ์ 2014 ของฉันเป็นคู่แบบคลัสเตอร์ แต่ฉันกำลังพยายามตั้งสมมติฐานเพื่อหาสาเหตุที่ทำให้เกิดข้อผิดพลาดด้านบน ป.ล. ใช่ฉันรู้ว่าการสร้างตารางนับล้านนั้นเสียสติ นี่คือรหัสสีดำของบุคคลที่สามซึ่งฉันไม่สามารถควบคุมได้ แม้จะมีความวิกลจริต แต่ก็ใช้งานได้ในเวอร์ชัน …

6
ปิดการใช้งานหน่วยความจำ SQL โดยบังเอิญต่ำเกินไปที่จะเข้าสู่ระบบฉันจะแก้ไขได้อย่างไร
ฉันปิดหน่วยความจำสูงสุดของอินสแตนซ์ SQL Server ของฉันเป็น 15 MB ... ตอนนี้ฉันไม่สามารถเข้าสู่ระบบเพื่อเพิ่มมันได้ ฉันจะเพิ่มหน่วยความจำสูงสุดโดยไม่ต้องเข้าสู่ระบบได้อย่างไร เวอร์ชันคือ SQL 2008 R2

1
UPSERT - มีทางเลือกอื่นที่ดีกว่าสำหรับ MERGE หรือ @@ rowcount หรือไม่ [ปิด]
เป็นการยากที่จะบอกสิ่งที่ถูกถามที่นี่ คำถามนี้คลุมเครือคลุมเครือไม่สมบูรณ์กว้างเกินไปหรือโวหารและไม่สามารถตอบได้อย่างสมเหตุสมผลในรูปแบบปัจจุบัน สำหรับความช่วยเหลือในการทำความเข้าใจคำถามนี้เพื่อที่จะสามารถเปิด, ไปที่ศูนย์ช่วยเหลือ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันสงสัยว่าถ้าคุณพบคำสั่ง T-SQL ซึ่งคล้ายกับแนวคิดของ UPSERT หรือไม่ การดำเนินการ INSERT | UPDATE โดยใช้ตัวเลือก (1) หรือ (2) ดูเหมือนซับซ้อนและมีข้อผิดพลาดมากเกินไป วัตถุประสงค์ เพื่อให้แน่ใจว่าระเบียนที่ต้องการ (ในกรณีนี้ employee_id 1) เป็นข้อมูลล่าสุดโดยไม่จำเป็นต้องเขียนคำถามเดียวกันสองครั้ง บริบท ชื่อตาราง: ลูกจ้าง รหัสพนักงาน: มีคีย์หลักและตั้งค่าความเป็นตัวตนเป็นจริง ตัวเลือก เรียกใช้ SQL UPDATE ... ตรวจสอบ @@ rowcount = 0 และ @@ error = 0 ... เรียกใช้ SQL INSERT …

3
การอัพเดตสถิติแบบขนาน
ใน SQL Server 2008 หรือใหม่กว่าUPDATE STATISTICS WITH FULLSCANการดำเนินการแบบเธรดเดียวหรือสามารถใช้การขนานได้หรือไม่ วิธีการเกี่ยวกับสถิติการปรับปรุงด้วยการสุ่มตัวอย่างเริ่มต้น - มันสามารถใช้ขนานกันได้อย่างไร ฉันไม่เห็นตัวเลือกที่ระบุMAXDOPด้วยสถิติการอัปเดต

2
วิธีเพิ่มผู้ใช้ด้วยการเข้าถึงมุมมองเดียว?
ฉันทำงานกับ MSSQL Server Management Studio 2008 และฉันจำเป็นต้องเปิดเผยมุมมองต่อบุคคลที่สามสำหรับการปรับยอดข้อมูลให้ตรงกัน ฉันสร้างมุมมองที่เหมาะสม แต่ฉันมีปัญหาในการสร้างผู้ใช้และให้สิทธิ์ที่เหมาะสมแก่ผู้ใช้ในการเลือกจากมุมมอง ฉันติดตามพ่อมดเพื่อสร้างการเข้าสู่ระบบและผู้ใช้แล้วเพิ่มมุมมองของฉันในส่วนที่ปลอดภัยด้วยกล่องสิทธิ์ที่เลือกไว้ ทุกอย่างดูเหมือนจะดี แต่เมื่อฉันเข้าสู่ระบบในฐานะผู้ใช้นั้นและพยายามที่จะทำ "เลือก * จาก MyViewName" มันบอกฉันว่าการอนุญาตเลือกถูกปฏิเสธ ฉันเพิ่งสร้างผู้ใช้ใหม่ (คราวนี้ใช้ SQL แทนตัวช่วยสร้าง) และได้รับการอนุญาตอย่างชัดเจนและตอนนี้มันทำให้ฉันเกิดข้อผิดพลาด: Msg 916, Level 14, State 1, Line 2 The server principal "username" is not able to access the database "unrelated_db" under the current security context.(ฉันไม่รู้ว่าทำไมมันถึงพยายามเข้าถึงฐานข้อมูลที่ไม่เกี่ยวข้อง ... ) ฉันไม่รู้จะไปจากที่นี่จริงๆ …

5
เครื่องมือที่ดีสำหรับการแสดงผลงาน SQL Agent คืออะไร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นหัวข้อสำหรับผู้ดูแลฐานข้อมูล Exchange Exchange ปิดให้บริการใน4 ปีที่แล้ว ฉันพบว่าเครื่องมือ MS SQL Studio ในตัวสำหรับการจัดการงานตัวแทนให้น่าผิดหวังเล็กน้อย คุณพบว่ามีเครื่องมืออะไรบ้างที่เป็นประโยชน์ Offhand มีสามสิ่งที่ฉันต้องการเห็นในเครื่องมือดังกล่าว: สรุปกราฟิกของงานที่ทำงานเมื่อนานเท่าไหร่และไม่ว่าพวกเขาจะประสบความสำเร็จ มุมมองสถานะปัจจุบันเช่น Job Activity Monitor แต่รีเฟรชในเวลาจริง อินเทอร์เฟซที่สะดวกกว่าสำหรับทำซ้ำหรือแก้ไขงาน (เช่นเปรียบเทียบสองขั้นตอนงานโดยไม่ถูกบล็อกโดยกล่องโต้ตอบโมดอล) มันอาจจะง่ายในการเขียนแอพเล็ก ๆ น้อย ๆ เพื่อจัดการสิ่งนี้ แต่มีบางคนทำไปแล้วและทำได้ดีกว่า เห็นได้ชัดว่านี่เป็นคำถามเชิงอัตวิสัยดังนั้นหากมีการดัดแปลงบางอย่างที่ผ่านมาแล้วอย่าลังเลที่จะทำให้มันเป็น CW

2
SQL Server VARCHAR ความกว้างคอลัมน์
ฉันพบคำแนะนำที่ขัดแย้งกันว่ามีผลกระทบต่อประสิทธิภาพการทำงานหรือไม่เมื่อระบุคอลัมน์ VARCHAR กว้างเกินไปเช่น VARCHAR (255) เมื่อ VARCHAR (30) อาจทำ ฉันเห็นข้อตกลงอย่างสม่ำเสมอว่ามีการดำเนินการอย่างต่อเนื่องหากทั้งแถวเกินกว่า 8060 ไบต์ นอกจากนั้นฉันเห็นความไม่ลงรอยกัน การอ้างสิทธิ์เป็นจริงThe default is SET ANSI PADDING ON = potential for lots of trailing spacesหรือไม่ ตราบใดที่ความกว้างแถวรวมน้อยกว่า 8060 มีความกังวลเกี่ยวกับประสิทธิภาพที่แท้จริงในคอลัมน์ VARCHAR ที่มีขนาดใหญ่เกินไปหรือไม่? หลักฐานที่แสดงความกว้างของคอลัมน์นั้นสำคัญ The same goes for CHAR and VARCHAR data types. Don’t specify more characters in character columns that …

5
ข้อดี / ข้อเสียของการใช้หลายฐานข้อมูลเทียบกับการใช้ฐานข้อมูลเดียว
ฉันกำลังทำงานในโครงการใหม่ที่มีความต้องการใช้ฐานข้อมูล 7 ตัวโดยยืนยันว่าประสิทธิภาพเสถียรภาพการปรับให้เหมาะสมนั้นง่ายขึ้น ในขณะที่ฉันไม่เห็นด้วยฉันมีปัญหาในการรวบรวมอาร์กิวเมนต์ที่ดีเพื่อใช้ฐานข้อมูลเดียว (แยกตารางออกเป็นโดเมนแบบลอจิคัล) อาร์กิวเมนต์หนึ่งที่ฉันมีคือความสมบูรณ์ของข้อมูล (ฉันไม่สามารถใช้คีย์ต่างประเทศระหว่างฐานข้อมูล) ข้อดี / ข้อเสียที่ดีในการใช้ฐานข้อมูลเดียวหรือหลายฐานข้อมูลคืออะไร [สรุปแล้ว] ข้อโต้แย้งกับฐานข้อมูลหลายแห่ง: การสูญเสียความถูกต้องของข้อมูล (ไม่สามารถใช้ foreign key แทนฐานข้อมูล) สูญเสียคืนความสมบูรณ์ การเพิ่มความซับซ้อน (ผู้ใช้ db / บทบาท) เซิร์ฟเวอร์ / ฐานข้อมูลอัตราต่อรองขนาดเล็กจะลดลง Solutions: ใช้สกีมาเพื่อแยกโดเมน POC: ใช้ข้อมูลจำลองเพื่อพิสูจน์จุดในแผนการดำเนินการของ 7/1 db

2
ฉันควรเพิ่มการบีบอัดระดับหน้าก่อนเพิ่มคีย์หลักหรือหลังจาก?
สถานการณ์ คลังข้อมูลบน SQL Server 2008 Enterprise ฮีปของแถว 36+ ล้านแถว (ไม่ต้องถาม) พร้อมคอลัมน์มากกว่า 60 คอลัมน์ เพิ่มขึ้น 750k ต่อเดือน ไม่ได้กำหนดคีย์หลัก (ตอนนี้ฉันระบุแล้ว) ไม่มีการบีบอัด สิ่งที่ฉันกำลังคิดที่จะทำ (ตามลำดับนี้) เพิ่มการบีบอัดระดับหน้า เพิ่ม PK เพิ่มดัชนีที่ไม่ทำคลัสเตอร์จำนวนหนึ่ง ทำสิ่งนี้ให้เร็วที่สุด คำถาม ท้ายที่สุด: ฉันจะเพิ่มการบีบอัด PK หรือหน้าก่อนหรือไม่ (มันสำคัญไหม) ถ้าฉันเพิ่มการบีบอัดก่อนลงในตารางดัชนีใด ๆ จะสืบทอดการตั้งค่าการบีบอัดระดับตารางหรือไม่ คำตอบสำหรับคำถามนี้คือ "ไม่บีบอัดไม่ได้รับมรดก" พบได้ที่นี่ใน dba.stackexchange สิ่งที่ฉันกำลังโน้มตัวไปข้างหน้าในขณะนี้ -- Add page level compression alter table dbo.TableName rebuild with …

2
แบบสอบถามแบบเลือกอย่างง่ายได้รับการล็อกหรือไม่
ฉันใหม่มากกับ SQL Server และต้องการที่จะเข้าใจว่าต่อไปนี้selectคำสั่งที่ง่ายมากที่จะล็อคใด ๆ Select * from Student; โปรดพิจารณากรณีที่คำสั่งจะไม่ทำงานภายในbegin tranบล็อก

1
SET NOCOUNT ข้อผิดพลาดในการจัดการการโทร SQL หลังจากอัพเกรด
เรากำลังอัพเกรดสภาพแวดล้อมการทดสอบของเราด้วยเซิร์ฟเวอร์ใหม่และ Microsoft SQL Server รุ่นที่ปรับปรุงแล้วและพบปัญหา บนเซิร์ฟเวอร์ใหม่รหัสเก่าของเราจะได้รับ "การดำเนินการไม่ได้รับอนุญาตเมื่อวัตถุถูกปิด" เมื่อดำเนินการขั้นตอนการจัดเก็บบางอย่าง ข้อความนี้ไม่เคยปรากฏบนเซิร์ฟเวอร์เก่า เมื่อเราติดตามมันปัญหาสามารถแก้ไขได้โดยการเพิ่มSET NOCOUNT ON;ขั้นตอนการจัดเก็บ ฉันดูค่าเริ่มต้นในฐานข้อมูลและไม่เห็นการตั้งค่าที่แตกต่าง (SQL Server 2008 เทียบกับ SQL Server 2014) ที่เกี่ยวข้องกับค่าเริ่มต้น ฉันควรตั้งค่าแบบใดเพื่อแก้ไขปัญหานี้ทั่วโลกโดยไม่จำเป็นต้องเพิ่มSET NOCOUNT ONโปรแกรมที่เก็บไว้เป็นพันรายการ

4
ในกรณีใดธุรกรรมสามารถกระทำจากภายในบล็อกจับเมื่อ XACT_ABORT ตั้งเป็น ON?
ฉันได้อ่านเกี่ยวกับ MSDN และTRY...CATCHXACT_STATE มันมีตัวอย่างต่อไปนี้ที่ใช้XACT_STATEในCATCHบล็อกของการTRY…CATCHสร้างเพื่อตรวจสอบว่าจะกระทำหรือย้อนกลับการทำธุรกรรม: USE AdventureWorks2012; GO -- SET XACT_ABORT ON will render the transaction uncommittable -- when the constraint violation occurs. SET XACT_ABORT ON; BEGIN TRY BEGIN TRANSACTION; -- A FOREIGN KEY constraint exists on this table. This -- statement will generate a constraint violation error. DELETE FROM Production.Product …

3
ฉันสามารถสร้างประเภทตารางที่ผู้ใช้กำหนดและใช้ในธุรกรรมเดียวกันได้หรือไม่?
เมื่อฉันดำเนินการต่อไปนี้ (ในสตูดิโอการจัดการ GO จะแยกคำสั่งออกเป็นแบทช์) use tempdb begin tran go CREATE TYPE dbo.IntIntSet AS TABLE( Value0 Int NOT NULL, Value1 Int NOT NULL ) go declare @myPK dbo.IntIntSet; go rollback ฉันได้รับข้อความแจ้งข้อผิดพลาดการหยุดชะงัก กระบวนการของฉันหยุดชะงักด้วยตัวเอง ฉันเคยเห็นพฤติกรรมนี้ในปี 2008, 2008R2 และ 2012 มีวิธีใช้ประเภทที่สร้างขึ้นใหม่ของฉันภายในธุรกรรมเดียวกันกับที่สร้างขึ้นหรือไม่

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

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