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

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

1
คีย์หลักพร้อมตัวเลือก“ ไม่ใช่สำหรับการจำลอง”
ฉันเพิ่งเข้าร่วมโครงการและฉันได้ค้นพบว่าในตารางส่วนใหญ่คีย์หลักมีคุณสมบัติ " NOT FOR REPLICATION" ฉันไม่ใช่ DBA แต่แน่นอนในฐานข้อมูลส่วนใหญ่ระเบียนที่ไม่มีคีย์หลักจะถือว่าเสียหาย คีย์หลักของบันทึกเหล่านี้ส่วนใหญ่จะถูกใช้เป็นคีย์ต่างประเทศอย่างแน่นอน นี่เป็นข้อผิดพลาดในส่วนของนักพัฒนาก่อนหน้า (ที่ไม่ได้ทำงานให้กับ บริษัท อีกต่อไป) หรือมีตรรกะอื่น ๆ ที่เกี่ยวข้องหรือไม่? เราไม่ได้ใช้การจำลองแบบในสภาพแวดล้อมการผลิตดังนั้นนี่จะไม่ส่งผลกระทบต่ออะไรที่ร้ายแรงอยู่ดี แต่ฉันสงสัยว่ามีผลข้างเคียงอื่น ๆ จากการลบคำสั่งเหล่านี้ทั้งหมดที่ฉันไม่ทราบ ฉันไม่พบเพลงฮิตที่มีประโยชน์มากมายสำหรับคำค้นหาจำนวนหนึ่งที่เกี่ยวข้องกับหัวข้อนี้ดังนั้นฉันค่อนข้างมั่นใจว่านี่เป็นเพียงข้อผิดพลาดที่ฉันต้องย้อนกลับดังนั้นคำถามนี้เป็นคำถามที่ทำให้หวาดระแวงของฉันจริงๆ

2
ฉันจะทำให้เซิร์ฟเวอร์ที่เชื่อมโยงทำงานโดยใช้การรับรองความถูกต้อง Windows ได้อย่างไร
ฉันกำลังพยายามนำเซิร์ฟเวอร์ที่เชื่อมโยงไปยัง ServerA ที่สร้างขึ้นบนเซิร์ฟเวอร์อื่นโดยใช้ ServerB "ทำโดยใช้บริบทความปลอดภัยปัจจุบันของการเข้าสู่ระบบ" ในสภาพแวดล้อมของโดเมน ฉันอ่านว่าฉันต้องสร้าง SPN สำหรับบัญชีบริการที่ใช้ SQL Server ในแต่ละเซิร์ฟเวอร์เพื่อเปิดใช้งาน Kerberos ฉันได้ทำไปแล้วและตอนนี้ทั้งสองแสดงรูปแบบการตรวจสอบสิทธิ์เป็น Kerberos อย่างไรก็ตามฉันยังคงพบข้อผิดพลาด: "Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'". ใน Active Directory ฉันเห็นว่าบัญชีบริการสำหรับ ServerB เชื่อถือได้สำหรับการมอบหมายให้ MSSQLSvc แต่ฉันสังเกตเห็นว่าบัญชีบริการสำหรับ ServerA ยังไม่ได้เปิดใช้งาน "เชื่อใจผู้ใช้นี้สำหรับการมอบหมาย" เซิร์ฟเวอร์เป้าหมายต้องเปิดใช้งานตัวเลือกนั้นด้วยหรือไม่ มีสิ่งใดอีกที่จำเป็นในการใช้การเข้าสู่ระบบ Windows ปัจจุบันเพื่อใช้เซิร์ฟเวอร์ที่เชื่อมโยงหรือไม่

4
มีการดึงข้อมูลจาก SQL Server ที่ถูกบีบอัดเพื่อส่งข้อมูลหรือไม่?
ดึงข้อมูลจาก Microsoft SQL Server ถูกบีบอัดหรือไม่ หากสิ่งนี้ถูกควบคุมโดยสตริงการเชื่อมต่อมีวิธีง่าย ๆ ที่จะบอกได้หรือไม่ว่าแอพใดกำลังใช้งานอยู่ ฉันกำลังตรวจสอบเครื่องมือวิเคราะห์และปริมาณข้อมูลอาจใช้เวลาสักครู่เพื่อส่งผ่านเครือข่ายของเรา ฉันสงสัยว่าฉันควรคาดหวังว่าประสิทธิภาพจะเพิ่มขึ้นหรือไม่ถ้าเราดึงข้อมูลจากแหล่งข้อมูลที่บีบอัดบนเซิร์ฟเวอร์ระยะไกลเดียวกัน ตราบใดที่เราอยู่ในหัวข้อฉันอยากรู้อยากเห็น: มีการส่งข้อมูลในรูปแบบไบนารีหรือ ASCII หรือไม่? ตัวอย่างเช่นหากค่า12345ถูกสอบถามจากINTคอลัมน์จะมีการส่งค่าเป็นห้าไบต์ 0x31, 0x32, 0x33, 0x34, 0x34, 0x35; สองไบต์ที่จำเป็นสำหรับค่านั้น หรือสี่ไบต์ตามต้องการสำหรับคอลัมน์? เพื่อความชัดเจนฉันเข้าใจว่ามีตัวเลือกเกี่ยวกับการจัดเก็บข้อมูลด้วยการบีบอัดและสำรองข้อมูล ฉันถามเกี่ยวกับวิธีการส่งข้อมูล

1
วิธีใช้ธุรกรรมกับ SQL Server DDL
ฉันมีตารางเข้าสู่ระบบที่แทรกทั้งหมดจะทำโดยขั้นตอนการจัดเก็บเดียว CREATE TABLE dbo.LogTable( LogRefnr int IDENTITY(1, 1) NOT NULL, LogQuery varchar(255) NOT NULL, LogTime datetime NOT NULL, logQueryDuration int NULL, LogSessionID int NULL, CONSTRAINT PK_Log PRIMARY KEY CLUSTERED (LogRefnr) ) go Create procedure DBO.LogInsert ( @Query varchar(255), @time datetime, @duration int, @SessinID int) as begin Insert into LogTable ( …

1
เมื่อใดควรใช้เหตุการณ์เพิ่มเติมแทน SQL Profiler / perfmon
เหตุการณ์เพิ่มเติมดูเหมือนว่าเทคโนโลยีที่ดีกว่าและความเครียดน้อยลงบนเซิร์ฟเวอร์ แต่ตัวสร้างโปรไฟล์ SQL / perfmon มีเครื่องมือที่ดีกว่า นอกจากนี้เหตุการณ์ที่ยืดออกดูเหมือนจะมีช่วงการเรียนรู้ที่ชันกว่า ควรใช้แต่ละบริบทในลักษณะใด มันคุ้มหรือไม่ที่จะผ่านโค้งการเรียนรู้ที่สูงชันเพื่อใช้ประโยชน์จากเหตุการณ์ที่ขยายออกไป

5
คอลัมน์ว่างเปล่าใช้พื้นที่ในตารางหรือไม่?
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา ฉันมีตารางที่เก็บจากข้อมูลพื้นฐานมาก เพียงแค่ชื่อและเขตข้อมูลวันที่ไม่กี่ มีเขตข้อมูลหนึ่งที่เรียกว่าความคิดเห็นซึ่งเป็น varchar (4000) ส่วนใหญ่เวลาที่เราเว้นว่างไว้ แต่บางครั้งจะป้อนข้อมูลจำนวนมากที่นี่ นี่เป็นการออกแบบที่ไม่ดีจริงเหรอ? หรือนี่เป็นเพียงเล็กน้อยที่ไม่มีประสิทธิภาพ? ฉันจะถือว่าการสร้างตารางแยกสำหรับคอลัมน์นี้จะดีกว่า หมายเหตุ: นี่คือ sql server 2008

5
แบบสอบถามที่ดีที่สุดที่จะใช้เพื่อตรวจสอบสถานะของฐานข้อมูล SQL Server คืออะไร
ฉันต้องการที่จะเรียกใช้แบบสอบถามเพื่อรับข้อมูลที่สำคัญเกี่ยวกับสถานะของฐานข้อมูล เช่นฉันต้องการให้แบบสอบถามสามารถบอกได้ว่าฐานข้อมูลอยู่ในสภาพดีหรือไม่ นี่คือแบบสอบถามที่ฉันสืบทอดมาสำหรับการตรวจสอบนี้: SELECT name AS [SuspectDB], DATABASEPROPERTY(name, N'IsSuspect') AS [Suspect], DATABASEPROPERTY(name, N'IsOffline') AS [Offline], DATABASEPROPERTY(name, N'IsEmergencyMode') AS [Emergency], has_dbaccess(name) AS [HasDBAccess] FROM sysdatabases WHERE (DATABASEPROPERTY(name, N'IsSuspect') = 1) OR (DATABASEPROPERTY(name, N'IsOffline') = 1) OR (DATABASEPROPERTY(name, N'IsEmergencyMode') = 1) OR (has_dbaccess(name) = 0) หากเคียวรีนั้นส่งคืนผลลัพธ์ใด ๆ ข้อสันนิษฐานที่กำลังทำอยู่คือฐานข้อมูลอยู่ในสถานะสงสัยหรืออาจไม่ดี มีวิธีที่ดีกว่าในการทำเช่นนี้?

5
การใช้ IF ใน T-SQL จะทำให้แผนการดำเนินการแคชอ่อนลงหรือไม่
คำถามนี้ถูกโยกย้ายจาก Stack Overflow เพราะสามารถตอบได้ใน Exchange Administrators Stack Exchange อพยพ 7 ปีที่ผ่านมา มีการแนะนำให้ฉันว่าการใช้คำสั่ง IF ใน t-SQL batches นั้นเป็นอันตรายต่อประสิทธิภาพ ฉันพยายามค้นหาคำยืนยันหรือตรวจสอบยืนยันนี้ ฉันใช้ SQL Server 2005 และ 2008 การยืนยันคือชุดที่มีดังต่อไปนี้: - IF @parameter = 0 BEGIN SELECT ... something END ELSE BEGIN SELECT ... something else END SQL Server ไม่สามารถใช้แผนการดำเนินการที่สร้างขึ้นใหม่ได้เนื่องจากการดำเนินการครั้งต่อไปอาจต้องใช้สาขาอื่น นี่หมายความว่า SQL Server จะกำจัดหนึ่งสาขาทั้งหมดจากแผนการดำเนินการตามพื้นฐานของการดำเนินการปัจจุบันซึ่งสามารถกำหนดสาขาที่ต้องการได้แล้ว นี่เป็นเรื่องจริงหรือ …

1
ไม่แสดงพรอมต์ SSMS เพื่อบันทึกการเปลี่ยนแปลง
เป็นไปได้หรือไม่ที่จะกำหนดค่า SQL Server Management Studio (SSMS) เพื่อให้กล่องโต้ตอบที่แสดงด้านบนไม่ปรากฏขึ้นเมื่อฉันปิดหน้าต่างแบบสอบถามที่ไม่ได้บันทึก?


8
แบบสอบถามที่แสดงผู้ใช้ที่แมปทั้งหมดสำหรับการเข้าสู่ระบบที่กำหนด
เมื่อดูคุณสมบัติของการเข้าสู่ระบบโดยเฉพาะเป็นไปได้ที่จะเห็นรายการผู้ใช้ที่แมปเข้าสู่การเข้าสู่ระบบนั้น: ฉันทำโปรไฟล์ SQL Server Management Studio (SSMS) และฉันเห็นว่า SSMS เชื่อมต่อกับฐานข้อมูลทุกรายการทีละรายการและดึงข้อมูลจาก sys.database_permissions เป็นไปได้ไหมที่จะเขียนเคียวรีเดี่ยวที่ดึงข้อมูลการแม็พผู้ใช้ที่แสดงด้านบนหรือฉันถูกบังคับให้ใช้เคอร์เซอร์หรือ sp_MSforeachdb หรืออะไรทำนองนั้น

5
ตำแหน่งของไฟล์ mdf ของฐานข้อมูล
Projectฉันมีฐานข้อมูล ปัญหาของฉันคือที่ที่ฉันสามารถค้นหา.mdfและ_log.ldfของฐานข้อมูลของฉันเพื่อให้ฉันสามารถถ่ายโอนฐานข้อมูลของฉันไปยังผู้ใช้อื่น ฉันใช้ Microsoft SQL Server 2008 Management Studio ของฉันSsms.exeถูกเก็บไว้ในเส้นทางนี้ C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe

5
เหตุใดเซิร์ฟเวอร์ที่เชื่อมโยงจึงมีข้อ จำกัด ถึง 10 สาขาในนิพจน์ CASE
ทำไมCASEการแสดงออกนี้: SELECT CASE column WHEN 'a' THEN '1' WHEN 'b' THEN '2' ... c -> i WHEN 'j' THEN '10' WHEN 'k' THEN '11' END [col] FROM LinkedServer.database.dbo.table สร้างผลลัพธ์นี้หรือไม่ ข้อความแสดงข้อผิดพลาด: ข่าวสารเกี่ยวกับ 8180, ระดับ 16, สถานะ 1, คำสั่ง Line 1 ไม่สามารถจัดเตรียมได้ ข่าวสารเกี่ยวกับ 125, ระดับ 15, สถานะ 4, นิพจน์กรณีบรรทัด 1 อาจซ้อนอยู่ในระดับ 10 …


5
ไม่พบตัวแทนเซิร์ฟเวอร์ใน SSMS
ฉันทำตามคำแนะนำ - http://www.sqlchicken.com/2009/07/how-to-create-a-server-side-trace-with-sql-profiler/ซึ่งทำงานจนกว่าฉันจะไปถึงขั้นตอนที่ 8 ตอนนี้เพื่อกำหนดตารางสคริปต์ที่สร้างขึ้นใหม่ของคุณ ใน SSMS เชื่อมต่อกับเซิร์ฟเวอร์ที่คุณต้องการติดตาม ไปที่ตัวแทนเซิร์ฟเวอร์ SQL ของคุณและขยายเพื่อให้คุณเห็นโฟลเดอร์งาน คลิกขวาที่โฟลเดอร์งานและเลือกงานใหม่ SQL Server Agentฉันไม่สามารถไม่พบ ฉันจะทำให้สิ่งนี้SQL Server Agentมองเห็นได้ที่ไหน ฉันให้สิทธิ์การเข้าถึงทั้งหมดแก่ผู้ใช้ปัจจุบัน

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