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

ใช้แท็กนี้สำหรับคำถามเฉพาะของ Microsoft SQL Server รุ่น 2008

12
NOLOCK (คำใบ้เซิร์ฟเวอร์ Sql) เป็นการปฏิบัติที่ไม่ดีหรือไม่?
ฉันอยู่ในธุรกิจการทำเว็บไซต์และแอพพลิเคชั่นที่ไม่สำคัญ -> เช่น ซอฟต์แวร์การธนาคารการบินอวกาศแอปพลิเคชันการตรวจสอบผู้ป่วยหนัก ฯลฯ คุณจะได้รับแนวคิด ดังนั้นด้วยข้อจำกัดความรับผิดชอบจำนวนมากการใช้คำใบ้ NOLOCK ในคำสั่ง Sql บางอย่างไม่ดีหรือไม่? เมื่อหลายปีก่อนมีผู้ดูแล Sql คนหนึ่งแนะนำว่าฉันควรใช้ NOLOCK ถ้าฉันพอใจกับ "การอ่านสกปรก" ซึ่งจะทำให้ฉันมีประสิทธิภาพมากขึ้นเล็กน้อยจากระบบของฉันเนื่องจากการอ่านแต่ละครั้งไม่ได้ล็อก ตาราง / แถว / สิ่ง ฉันยังบอกด้วยว่านี่เป็นวิธีแก้ปัญหาที่ยอดเยี่ยมหากฉันประสบปัญหาล็อคตาย ดังนั้นฉันจึงเริ่มทำตามความคิดนั้นเป็นเวลาสองสามปีจนกระทั่งผู้เชี่ยวชาญด้าน Sql ช่วยฉันด้วยโค้ดแบบสุ่มและสังเกตเห็น NOLOCKS ทั้งหมดในโค้ด sql ของฉัน ฉันถูกดุอย่างสุภาพและเขาพยายามอธิบายให้ฉันฟัง (ทำไมมันถึงไม่ใช่เรื่องดี) และฉันก็หลงทาง ฉันรู้สึกว่าแก่นแท้ของคำอธิบายของเขาคือ 'มันเป็นวิธีแก้ปัญหาแบบวงดนตรีสำหรับปัญหาที่ร้ายแรงกว่า .. โดยเฉพาะอย่างยิ่งถ้าคุณกำลังประสบกับภาวะชะงักงัน ดังนั้นแก้ไขต้นตอของปัญหา ' เมื่อเร็ว ๆ นี้ฉันได้ทำ googling เกี่ยวกับเรื่องนี้และเจอโพสต์นี้ ดังนั้นอาจารย์ sql db guru อาจารย์ช่วยสอนหน่อยได้ไหม

10
การแก้ไขฐานข้อมูลล้มเหลวเนื่องจากไม่สามารถวางล็อกบนฐานข้อมูลได้
ฉันต้องรีสตาร์ทฐานข้อมูลเนื่องจากกระบวนการบางอย่างไม่ทำงาน แผนของฉันคือทำให้ออฟไลน์และกลับมาออนไลน์อีกครั้ง ฉันกำลังพยายามทำสิ่งนี้ใน Sql Server Management Studio 2008: use master; go alter database qcvalues set single_user with rollback immediate; alter database qcvalues set multi_user; go ฉันได้รับข้อผิดพลาดเหล่านี้: Msg 5061, Level 16, State 1, Line 1 ALTER DATABASE failed because a lock could not be placed on database 'qcvalues'. Try again later. …

4
ตัวอย่างชีวิตจริงเมื่อใดควรใช้ OUTER / CROSS APPLY ใน SQL
ฉันได้ดูCROSS / OUTER APPLYกับเพื่อนร่วมงานคนหนึ่งและเรากำลังดิ้นรนเพื่อหาตัวอย่างในชีวิตจริงว่าจะนำไปใช้ที่ไหน ฉันใช้เวลาค่อนข้างมากในการดูว่าเมื่อไหร่ควรใช้ Cross Apply ผ่าน Inner Join และ googling แต่ตัวอย่างหลัก (เท่านั้น) ดูค่อนข้างแปลก (ใช้ rowcount จากตารางเพื่อกำหนดจำนวนแถวที่จะเลือกจากตารางอื่น) ฉันคิดว่าสถานการณ์นี้อาจได้รับประโยชน์จากOUTER APPLY: ตารางรายชื่อ (มี 1 บันทึกสำหรับแต่ละรายชื่อ) ตารางรายการการสื่อสาร (สามารถมีโทรศัพท์โทรสารอีเมลสำหรับผู้ติดต่อแต่ละราย) แต่การใช้ subqueries แสดงออกตารางทั่วไปOUTER JOINด้วยRANK()และOUTER APPLYทั้งหมดดูเหมือนจะดำเนินการอย่างเท่าเทียมกัน APPLYฉันคาดเดาที่นี้หมายถึงสถานการณ์ไม่สามารถใช้ได้กับ โปรดแบ่งปันตัวอย่างชีวิตจริงและช่วยอธิบายคุณลักษณะนี้!

15
ฉันจะค้นหาข้อ จำกัด ของคีย์ต่างประเทศที่อ้างอิงตารางใน SQL Server ได้อย่างไร
ฉันพยายามวางโต๊ะ แต่ได้รับข้อความต่อไปนี้: ข่าวสารเกี่ยวกับ 3726 ระดับ 16 สถานะ 1 บรรทัดที่ 3 ไม่สามารถวางออบเจ็กต์ 'dbo.UserProfile' ได้เนื่องจากถูกอ้างอิงโดยข้อ จำกัด ของคีย์ต่างประเทศ ข่าวสารเกี่ยวกับ 2714 ระดับ 16 สถานะ 6 บรรทัดที่ 2 มีออบเจ็กต์ชื่อ 'UserProfile' อยู่ในฐานข้อมูลแล้ว ฉันมองไปรอบ ๆ ด้วย SQL Server Management Studio แต่ฉันไม่พบข้อ จำกัด ฉันจะค้นหาข้อ จำกัด ของคีย์ต่างประเทศได้อย่างไร


6
ไม่สามารถล็อกอินเข้าสู่ SQL Server + SQL Server Authentication + Error: 18456
ฉันได้สร้างบัญชีล็อกอินบนเซิร์ฟเวอร์ localhost \ sql2008 ของฉันแล้ว (เช่น User123) แมปกับฐานข้อมูล (ค่าเริ่มต้น) โหมดการรับรองความถูกต้องบน SQL Server ถูกตั้งค่าเป็นทั้ง (Windows และ SQL) แต่การเข้าสู่ระบบ SQL Server ล้มเหลวด้วยข้อความต่อไปนี้ (สำหรับ User123) หมายเหตุ: ตรวจสอบหลายครั้งว่า UserName / Password พิมพ์ถูกต้อง รายละเอียดผิดพลาด: การเข้าสู่ระบบล้มเหลวสำหรับผู้ใช้ 'User123' (Net.SqlClient Data Provider) ชื่อเซิร์ฟเวอร์: localhost \ sql2008 หมายเลขข้อผิดพลาด: 18456 ความรุนแรง: 14 สถานะ: 1 หมายเลขบรรทัด: 65536 โปรดช่วยในเรื่องนี้


13
ข้อผิดพลาด - ไม่สามารถรับสิทธิ์การเข้าถึงแบบเอกสิทธิ์เฉพาะบุคคลเนื่องจากฐานข้อมูลถูกใช้งาน
ฉันพยายามสร้างสคริปต์ (ใน Sql Server 2008) เพื่อกู้คืนฐานข้อมูลหนึ่งฐานข้อมูลจากไฟล์สำรองหนึ่งไฟล์ ฉันสร้างรหัสต่อไปนี้และฉันได้รับข้อผิดพลาด - Msg 3101, Level 16, State 1, Line 3 Exclusive access could not be obtained because the database is in use. Msg 3013, Level 16, State 1, Line 3 RESTORE DATABASE is terminating abnormally. ฉันจะแก้ไขปัญหานี้ได้อย่างไร? IF DB_ID('AdventureWorksDW') IS NOT NULL BEGIN RESTORE DATABASE …


4
คำสั่ง INSERT หลายคำเทียบกับ INSERT เดียวที่มีหลายค่า
ฉันกำลังทำการเปรียบเทียบประสิทธิภาพระหว่างการใช้คำสั่ง 1000 INSERT: INSERT INTO T_TESTS (TestId, FirstName, LastName, Age) VALUES ('6f3f7257-a3d8-4a78-b2e1-c9b767cfe1c1', 'First 0', 'Last 0', 0) INSERT INTO T_TESTS (TestId, FirstName, LastName, Age) VALUES ('32023304-2e55-4768-8e52-1ba589b82c8b', 'First 1', 'Last 1', 1) ... INSERT INTO T_TESTS (TestId, FirstName, LastName, Age) VALUES ('f34d95a7-90b1-4558-be10-6ceacd53e4c4', 'First 999', 'Last 999', 999) .. ตรงกันข้ามโดยใช้คำสั่ง INSERT เดียวที่มีค่า …

8
ใช้ SQL Server 2008 และ SQL Server 2005 และวันเวลา
ฉันได้สร้างแบบจำลองกรอบเอนทิตีเทียบกับฐานข้อมูลปี 2008 ทั้งหมดใช้ได้กับฐานข้อมูลปี 2008 เมื่อฉันพยายามอัปเดตเอนทิตีบนฐานข้อมูลปี 2005 ฉันได้รับข้อผิดพลาดนี้ เวอร์ชันของ SQL Server ที่ใช้งานไม่รองรับประเภทข้อมูล 'datetime2 ฉันไม่ได้ใช้คุณลักษณะใด ๆ ในปี 2008 โดยเฉพาะเมื่อฉันสร้างฐานข้อมูล ฉันไม่พบการอ้างอิงถึง datetime2 ในโค้ด และใช่คอลัมน์นี้ถูกกำหนดให้เป็น "วันที่และเวลา" ในฐานข้อมูล

10
ฉันจะเปลี่ยน db schema เป็น dbo ได้อย่างไร
ฉันนำเข้าตารางจำนวนมากจากเซิร์ฟเวอร์ sql เก่า (2000) ไปยังฐานข้อมูลปี 2008 ของฉัน jonathan.MovieDataทุกตารางที่นำเข้าจะมีคำนำหน้าด้วยชื่อผู้ใช้ของฉันตัวอย่างเช่น: ในตารางpropertiesจะแสดงรายการjonathanเป็น db schema เมื่อฉันเขียนกระบวนงานที่จัดเก็บไว้ตอนนี้ฉันต้องรวมjonathan.ไว้หน้าชื่อตารางทั้งหมดซึ่งทำให้สับสน ฉันจะเปลี่ยนตารางทั้งหมดให้เป็น dbo แทนโจนาธานได้อย่างไร ผลลัพธ์ปัจจุบัน: jonathan.MovieData ผลลัพธ์ที่ต้องการ: dbo.MovieData

6
“ ผู้ให้บริการ 'Microsoft.ACE.OLEDB.12.0' ไม่ได้ลงทะเบียนบนเครื่องท้องถิ่น” เกิดข้อผิดพลาดในการนำเข้า xlsx ไปยังเซิร์ฟเวอร์ sql
ฉันมี Windows 7 64 บิตและ SQLServer 2008 R2 (64 บิต) ฉันทำตามคำแนะนำที่นี่เพื่อนำเข้าไฟล์ excel ไปยังเซิร์ฟเวอร์ sql แต่ในส่วนรูปที่ 3 ของโพสต์นั้นเมื่อฉันพยายามเข้าถึงไฟล์ excel และเมื่อฉันคลิกถัดไปข้อผิดพลาดนี้ทำให้ฉันหยุด: The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine AccessDatabaseEngine_x64ฉันค้นหาเว็บฉันรู้ว่าฉันต้องติดตั้ง แต่เมื่อฉันติดตั้งฉันมีปัญหาเดียวกัน คุณช่วยฉันหน่อยได้ไหมว่าต้องทำอย่างไร

5
SQL Server Management Studio ไม่ยอมให้ฉันเพิ่มดัชนีลงในตาราง
เมื่อฉันคลิกขวาที่โฟลเดอร์ indexes ในตารางรายการเมนู "ดัชนีใหม่" จะเป็นสีเทา ฉันไม่เข้าใจว่าทำไม ฉันได้ลบข้อมูลทั้งหมดในตารางแล้วในกรณีและรีเฟรชและรีสตาร์ท SSMS แต่โชคไม่ดี ฉันใช้ SQL Server 2012 Business Intelligence SP1 CTP

4
เวลาวันที่ T-SQL ปัดเศษเป็นนาทีที่ใกล้ที่สุดและชั่วโมงที่ใกล้ที่สุดโดยใช้ฟังก์ชัน
ใน SQL server 2008 ฉันต้องการให้คอลัมน์วันที่และเวลาปัดเศษเป็นชั่วโมงที่ใกล้ที่สุดและนาทีที่ใกล้ที่สุดโดยเฉพาะอย่างยิ่งกับฟังก์ชันที่มีอยู่ในปี 2008 สำหรับค่าคอลัมน์นี้2007-09-22 15:07:38.850ผลลัพธ์จะมีลักษณะดังนี้: 2007-09-22 15:08 -- nearest minute 2007-09-22 15 -- nearest hour

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