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

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

2
มีความแตกต่างระหว่าง NUMERIC และ DECIMAL หรือไม่?
ฉันรู้ว่าชนิดข้อมูล NUMERIC และ DECIMAL ใน SQL Server ทำงานเหมือนกัน: ไวยากรณ์สำหรับการสร้างนั้นเหมือนกันช่วงของค่าที่คุณสามารถจัดเก็บได้นั้นเหมือนกัน ฯลฯ อย่างไรก็ตามเอกสาร MSDN อธิบายถึงความสัมพันธ์ระหว่างสองสิ่งนี้: ตัวเลขมีฟังก์ชันเทียบเท่ากับทศนิยม โดยปกติเมื่อฉันเห็นรอบคัดเลือก " หน้าที่เทียบเท่า" ก็หมายความว่าทั้งสองสิ่งที่ไม่ตรงเหมือนกัน แต่ที่พวกเขาเป็นสองประเภทต่าง ๆ ที่มีความแตกต่างจากด้านนอก ความหมายนี้เป็นจริงหรือไม่? มีความแตกต่างระหว่าง NUMERIC และ DECIMAL ที่เพิ่งเกิดขึ้นกับผู้สังเกตการณ์ภายนอกหรือไม่ หรือว่าเทียบเท่ากันจริง ๆเช่น NUMERIC เป็นเพียงคำพ้องความหมายดั้งเดิมสำหรับ DECIMAL หรือไม่
47 sql-server 

4
การทำคลัสเตอร์กับการจำลองแบบของทรานแซคชันกับกลุ่มความพร้อมใช้งาน
สมมติว่าคุณต้องตรวจสอบให้แน่ใจว่าแอปพลิเคชันของคุณที่ใช้ SQL Server 2012 เป็นแบ็กเอนด์ฐานข้อมูลของมันพร้อมใช้งานตลอดเวลาแม้ว่าเครื่องเซิร์ฟเวอร์หนึ่งเครื่องจะล้มเหลวก็ตาม ในฐานะนักพัฒนาซอฟต์แวร์และไม่ใช่ DBA ฉันกำลังพยายามเข้าใจว่าจะใช้เมื่อใดกับสถานการณ์ที่ล้มเหลว / มีความพร้อมใช้งานสูง: เซิร์ฟเวอร์สองตัว (หรือมากกว่า) ในคลัสเตอร์ Windows Failover, SQL Server เป็นอินสแตนซ์ของคลัสเตอร์ อินสแตนซ์ของ SQL Server สอง (หรือมากกว่า) ที่ได้รับการปรับปรุงด้วยการจำลองแบบของทรานแซคชัน เซิร์ฟเวอร์ SQL สองตัว (หรือมากกว่า) ใน SQL Server Availability Group ที่กำหนดค่าในโหมดการส่งข้อมูลแบบซิงโครนัส สถานการณ์ใดบ้างที่เหมาะกับภาระงานประเภทใดและสถานการณ์ความล้มเหลว / การหยุดทำงานประเภทใดที่สามารถจัดการได้ พวกเขายังเปรียบได้ / แลกเปลี่ยนได้?

2
พฤติกรรมที่แท้จริงของความเข้ากันได้ระดับ 80 คืออะไร?
มีใครให้ข้อมูลเชิงลึกที่ดีกว่าเกี่ยวกับคุณสมบัติโหมดความเข้ากันได้หรือไม่ มันมีพฤติกรรมแตกต่างจากที่ฉันคาดไว้ เท่าที่ฉันเข้าใจโหมดความเข้ากันได้มันเป็นเรื่องเกี่ยวกับความพร้อมใช้งานและการสนับสนุนโครงสร้างภาษาบางอย่างระหว่าง SQL Server รุ่นต่างๆ ไม่ส่งผลกระทบต่อการทำงานภายในของรุ่นโปรแกรมฐานข้อมูล มันจะพยายามป้องกันการใช้คุณสมบัติและโครงสร้างที่ยังไม่พร้อมใช้งานในรุ่นก่อนหน้า ฉันเพิ่งสร้างฐานข้อมูลใหม่ด้วยระดับ 80 ที่เข้ากันได้ใน SQL Server 2008 R2 สร้างตารางที่มีคอลัมน์ int หนึ่งคอลัมน์และสร้างด้วยแถวไม่กี่แถว จากนั้นดำเนินการคำสั่งเลือกด้วยrow_number()ฟังก์ชั่น ความคิดของฉันคือเนื่องจากฟังก์ชั่น row_number เพิ่งเปิดตัวในปี 2005 สิ่งนี้จะทำให้เกิดข้อผิดพลาดในโหมด 80 ที่เข้ากันได้ แต่ด้วยความประหลาดใจของฉันนี้ทำงานได้ดี จากนั้นแน่นอนว่ากฎการเข้ากันได้จะได้รับการประเมินก็ต่อเมื่อคุณ 'บันทึกบางอย่าง' ดังนั้นฉันจึงสร้าง proc ที่เก็บไว้สำหรับคำสั่ง row_number ของฉัน การสร้าง proc ที่จัดเก็บเป็นไปด้วยดีและฉันสามารถดำเนินการได้อย่างสมบูรณ์และได้ผลลัพธ์ มีใครช่วยให้ฉันเข้าใจการทำงานของโหมดความเข้ากันได้ดีขึ้นหรือไม่ ความเข้าใจของฉันมีข้อบกพร่องอย่างชัดเจน


8
ฉันจะลดขนาดไฟล์ทั้งหมดอย่างรวดเร็วสำหรับฐานข้อมูลทั้งหมดได้อย่างไร
ใน SQL Server (2008 ในกรณีนี้) ฉันจะย่อขนาดไฟล์ทั้งหมดอย่างรวดเร็วทั้งบันทึกและข้อมูลสำหรับฐานข้อมูลทั้งหมดในอินสแตนซ์ได้อย่างไร ฉันสามารถผ่าน SSMS และคลิกขวาแต่ละครั้งและเลือกงาน -> ลดขนาด แต่ฉันกำลังมองหาบางสิ่งที่เร็วขึ้น ฉันสคริปต์สคริปต์ "สร้างฐานข้อมูล" บางส่วนและลืมว่าพวกเขามีขนาดบอลลูนเป็นค่าเริ่มต้นและไม่ต้องการพื้นที่ที่สงวนไว้สำหรับไฟล์เหล่านี้ในโครงการนี้ค่อนข้างมาก

2
วันที่ส่งเป็นเรื่องง่าย แต่เป็นความคิดที่ดีใช่ไหม
ใน SQL Server 2008 มีการเพิ่มประเภทข้อมูลวันที่ การคัดเลือกdatetimeคอลัมน์เพื่อให้dateสามารถขายได้และสามารถใช้ดัชนีในdatetimeคอลัมน์ได้ select * from T where cast(DateTimeCol as date) = '20130101'; ตัวเลือกอื่นที่คุณมีคือใช้ช่วงแทน select * from T where DateTimeCol >= '20130101' and DateTimeCol < '20130102' คำถามเหล่านี้ดีพอ ๆ กันหรือควรเป็นคำถามที่ดีกว่า
47 sql-server 

6
ไฟล์. bak ไม่ปรากฏในไดเรกทอรีใด ๆ ใน SSMS
ฉันมีไฟล์. bak ที่สร้างขึ้นในวันนี้โดยบุคคลอื่นซึ่งสร้างด้วยตนเองผ่าน SSMS 2008 R2 ฉันพยายามกู้คืนฐานข้อมูลด้วยตนเอง แต่น่าเสียดายที่ไฟล์ไม่ปรากฏขึ้นเมื่อฉันไปเรียกดู ฉันสามารถเขียนสคริปต์กระบวนการคืนค่าได้ แต่ฉันเคยเห็นปัญหานี้มาก่อนและฉันไม่แน่ใจว่าสิ่งใดที่อาจทำให้. bak ไม่ปรากฏ

2
วัตถุประสงค์ของฐานข้อมูล 'เจ้าของ' คืออะไร?
วันนี้ในขณะที่การแก้ไขปัญหานายหน้าบริการฉันค้นพบว่าเจ้าของฐานข้อมูลคือการเข้าสู่ระบบ Windows ของพนักงานที่ออกจาก บริษัท การเข้าสู่ระบบของเขาถูกลบและทำให้การแจ้งเตือนการค้นหาล้มเหลว แนวทางปฏิบัติที่ดีที่สุดในการจัดการกับสิ่งนี้คือการทำให้เจ้าของฐานข้อมูลเป็น เราเปลี่ยนและลบล้างคิว คำถาม (ระดับประถมศึกษา) ของฉัน: เจ้าของฐานข้อมูลคืออะไรและวัตถุประสงค์ของมันคืออะไร

6
หลังจากย้ายฐานข้อมูล (สำรองข้อมูลคืนค่า) ฉันต้องเพิ่มผู้ใช้อีกครั้ง
ฉันย้ายฐานข้อมูล (SQL Express 2012) เป็นครั้งคราวจากเครื่องพัฒนาไปยังเซิร์ฟเวอร์หรือในทางกลับกันโดยใช้การสำรองฐานข้อมูลและเรียกคืนใน SQL Server Management Studio เมื่อใดก็ตามที่ฉันทำสิ่งนี้แอปพลิเคชันบนเครื่องเป้าหมายไม่สามารถเข้าถึงฐานข้อมูลจนกว่าฉันจะลบผู้ใช้ที่ใช้ "george" จากผู้ใช้ฐานข้อมูล (ฐานข้อมูลความปลอดภัยผู้ใช้ใน SQL Server Management Studio) และเพิ่มเป็น เจ้าของภายใต้ความปลอดภัย, การเข้าสู่ระบบ, จอร์จ / คุณสมบัติ, การจับคู่ผู้ใช้ มีวิธีที่ดีกว่าในการทำเช่นนี้? ดูเหมือนจะสับสนเล็กน้อย


4
คำสั่ง SQL Server เพื่อล้างแคชก่อนเรียกใช้การเปรียบเทียบประสิทธิภาพ
เมื่อเปรียบเทียบเวลาดำเนินการของแบบสอบถามที่แตกต่างกันสองรายการสิ่งสำคัญคือการล้างแคชเพื่อให้แน่ใจว่าการดำเนินการของแบบสอบถามแรกไม่ได้เปลี่ยนประสิทธิภาพของแบบสอบถามที่สอง ในการค้นหาโดย Google ฉันสามารถค้นหาคำสั่งเหล่านี้ได้: DBCC FREESYSTEMCACHE DBCC FREESESSIONCACHE DBCC FREEPROCCACHE อันที่จริงแล้วข้อความค้นหาของฉันใช้เวลาในการดำเนินการหลายครั้งกว่าจริงกว่าเดิม อย่างไรก็ตามฉันไม่แน่ใจว่านี่เป็นเทคนิคที่แนะนำ วิธีปฏิบัติที่ดีที่สุดคืออะไร

3
การอนุญาตหน่วยความจำเรียงมากเกินไป
เหตุใดแบบสอบถามแบบง่ายนี้จึงได้รับหน่วยความจำมากมาย -- Demo table CREATE TABLE dbo.Test ( TID integer IDENTITY NOT NULL, FilterMe integer NOT NULL, SortMe integer NOT NULL, Unused nvarchar(max) NULL, CONSTRAINT PK_dbo_Test_TID PRIMARY KEY CLUSTERED (TID) ); GO -- 100,000 example rows INSERT dbo.Test WITH (TABLOCKX) (FilterMe, SortMe) SELECT TOP (100 * 1000) CHECKSUM(NEWID()) % 1000, …

5
ฉันไม่สามารถเชื่อมต่อกับฐานข้อมูล SQL เซิร์ฟเวอร์ของฉันผ่านที่อยู่ IP
ฉันติดตั้งเซิร์ฟเวอร์ที่รัน Windows Server 2008 และติดตั้ง SQL Server 2008 Express แล้ว ฉันสามารถเชื่อมต่อกับฐานข้อมูล SQL Server Express MACHINENAME/SQLEXPRESSของเครื่องผ่านทาง อย่างไรก็ตามเมื่อเราเชื่อมต่อผ่านซอฟต์แวร์หรือสคริปต์โดยใช้ที่อยู่ IPจะไม่อนุญาตการเชื่อมต่อ ฉันเหนื่อย: ปิดไฟร์วอลล์ อนุญาตการเชื่อมต่อระยะไกลสำหรับฐานข้อมูล SQL การเปิดใช้งาน TCP / IP ภายในการกำหนดค่า SQL เมื่อเราพยายามเชื่อมต่อผ่านซอฟต์แวร์ 'SQL Server Management Studio' เราจะได้รับข้อความต่อไปนี้: ข้อความผิดพลาด: เกิดข้อผิดพลาดขณะสร้างการเชื่อมต่อกับเซิร์ฟเวอร์ เมื่อเชื่อมต่อกับ SQL Server 2005 ความล้มเหลวนี้อาจเกิดจากข้อเท็จจริงที่ว่าภายใต้การตั้งค่าเริ่มต้น SQL Server ไม่อนุญาตการเชื่อมต่อระยะไกล (ผู้ให้บริการ: ผู้ให้บริการ TCP ข้อผิดพลาด: 0 - ไม่สามารถทำการเชื่อมต่อได้เนื่องจากเครื่องเป้าหมายปฏิเสธอย่างแข็งขัน) …

4
ฉันสามารถติดตั้ง Studio จัดการเซิร์ฟเวอร์ SQL ในเครื่องได้หรือไม่
ฉันสามารถติดตั้ง Studio จัดการเซิร์ฟเวอร์ SQL บนเดสก์ท็อปของฉันเพื่อเข้าถึงฐานข้อมูลบนอินสแตนซ์ SQL Server 2012 ได้หรือไม่ ถ้าเป็นเช่นนั้นฉันจะหาตัวติดตั้งได้ที่ไหน Google ค้นหาเฉพาะคืนค่า 'ด่วน' ในขณะที่ฉันกำลังค้นหา Studio จัดการเซิร์ฟเวอร์ SQL แบบเต็ม

5
คำสั่ง SQL Server CASE ประเมินเงื่อนไขทั้งหมดหรือออกจากเงื่อนไขแรกของ TRUE หรือไม่
คำสั่ง SQL Server (2008 หรือ 2012 โดยเฉพาะ) CASEประเมินWHENเงื่อนไขทั้งหมดหรือไม่หรือออกเมื่อพบWHENประโยคที่ประเมินว่าเป็นจริงหรือไม่? หากผ่านเงื่อนไขทั้งชุดนั่นหมายความว่าเงื่อนไขสุดท้ายที่ประเมินเป็นจริงจะเขียนทับเงื่อนไขแรกที่ประเมินว่าเป็นจริงหรือไม่ ตัวอย่างเช่น: SELECT CASE WHEN 1+1 = 2 THEN'YES' WHEN 1+1 = 3 THEN 'NO' WHEN 1+1 = 2 THEN 'NO' END ผลลัพธ์คือ "ใช่" แม้ว่าเงื่อนไขสุดท้ายควรประเมินเป็น "ไม่" ดูเหมือนว่ามันจะออกเมื่อพบเงื่อนไขที่แท้จริง ใครบางคนได้โปรดยืนยันถ้าเป็นกรณีนี้
44 sql-server  t-sql  case 

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