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

Microsoft SQL Server เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) ใช้แท็กนี้สำหรับ SQL Server ทุกรุ่นรวมถึง Compact, Express, Azure, Fast-track, APS (เดิมคือ PDW) และ Azure SQL DW อย่าใช้แท็กนี้สำหรับ DBMS ประเภทอื่น (MySQL, PostgreSQL, Oracle, ฯลฯ ) อย่าใช้แท็กนี้สำหรับปัญหาเกี่ยวกับซอฟต์แวร์และการพัฒนาอุปกรณ์พกพาเว้นแต่จะเกี่ยวข้องโดยตรงกับฐานข้อมูล

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 เดียวที่มีค่า …

13
การจัดรูปแบบตัวเลขโดยการเติมด้วยศูนย์นำหน้าใน SQL Server
เรามีตาราง SQL เก่าที่ SQL Server 2000 ใช้เป็นเวลาเกือบ 10 ปี ในนั้นหมายเลขบัตรพนักงานของเราจะถูกเก็บเป็นchar(6)จากไป000001999999 ตอนนี้ฉันกำลังเขียนเว็บแอปพลิเคชันและต้องการจัดเก็บหมายเลขตราพนักงาน ในตารางใหม่ของฉันฉันอาจจะใช้ตัดสั้นและคัดลอกตารางเก่า แต่ฉันหวังสำหรับการถ่ายโอนข้อมูลที่ดีกว่า, ขนาดที่เล็กกว่า ฯลฯ โดยเพียงแค่การจัดเก็บintค่าจากการ1999999 ใน C # ฉันสามารถจัดรูปแบบintค่าสำหรับหมายเลขตราได้อย่างรวดเร็วโดยใช้ public static string GetBadgeString(int badgeNum) { return string.Format("{0:000000}", badgeNum); // alternate // return string.Format("{0:d6}", badgeNum); } ฉันจะแก้ไขแบบสอบถาม SQL แบบธรรมดานี้เพื่อจัดรูปแบบค่าที่ส่งคืนด้วยได้อย่างไร SELECT EmployeeID FROM dbo.RequestItems WHERE ID=0 ถ้าEmployeeIDเป็น 7135, 007135แบบสอบถามนี้ควรกลับ

2
ควรใช้ SELECT … FOR UPDATE เมื่อใด
SELECT ... FOR UPDATEโปรดช่วยให้ฉันเข้าใจที่อยู่เบื้องหลังกรณีการใช้งาน คำถามที่ 1ต่อไปนี้เป็นตัวอย่างที่ดีว่าSELECT ... FOR UPDATEควรใช้เมื่อใด? ได้รับ: ห้อง [ID] แท็ก [id, name] room_tags [room_id, tag_id] room_id และ tag_id เป็นคีย์ต่างประเทศ แอปพลิเคชันต้องการแสดงรายการห้องทั้งหมดและแท็ก แต่ต้องแยกความแตกต่างระหว่างห้องที่ไม่มีแท็กกับห้องที่ถูกลบออก หากไม่ได้ใช้ SELECT ... FOR UPDATE สิ่งที่อาจเกิดขึ้นคือ: ในขั้นต้น: ห้องประกอบด้วย [id = 1] แท็กประกอบด้วย [id = 1, name = 'cats'] room_tags ประกอบด้วย [room_id = 1, tag_id = 1] …

6
เหตุใดการใช้อักขระขีดล่างในตัวกรอง LIKE จึงให้ผลลัพธ์ทั้งหมดแก่ฉัน
ฉันเขียนแบบสอบถาม SQL ด้านล่างโดยมีLIKEเงื่อนไข: SELECT * FROM Manager WHERE managerid LIKE '_%' AND managername LIKE '%_%' ในส่วนLIKEฉันต้องการค้นหาขีดล่าง%_%แต่ฉันรู้ว่าข้อมูลในคอลัมน์ของฉันไม่มีอักขระขีดล่าง เหตุใดแบบสอบถามจึงให้บันทึกทั้งหมดจากตารางแก่ฉัน ข้อมูลตัวอย่าง: create table Manager( id int ,managerid varchar(3) ,managername varchar(50) ); insert into Manager(id,managerid,managername)values(1,'A1','Mangesh'); insert into Manager(id,managerid,managername)values(2,'A2','Sagar'); insert into Manager(id,managerid,managername)values(3,'C3','Ahmad'); insert into Manager(id,managerid,managername)values(4,'A4','Mango'); insert into Manager(id,managerid,managername)values(5,'B5','Sandesh'); Sql-Fiddle
119 sql  sql-server 

6
ด้วย (NOLOCK) เทียบกับระดับการแยกการทำธุรกรรมที่ตั้งไว้อ่านโดยไม่ได้รับอนุญาต
ใครช่วยให้คำแนะนำฉันได้บ้างว่าเมื่อใดที่ฉันควรใช้WITH (NOLOCK)เมื่อเทียบกับSET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ข้อดี / ข้อเสียของแต่ละข้อคืออะไร? มีผลที่ไม่คาดคิดใด ๆ ที่คุณพบเมื่อใช้งานเมื่อเทียบกับผลกระทบอื่น ๆ หรือไม่?

10
วิธีที่มีประสิทธิภาพในการใช้เพจจิ้ง
ฉันควรใช้ LINQ Skip()และTake()เมธอดในการเพจหรือใช้เพจจิ้งของตัวเองกับคิวรี SQL? ข้อใดมีประสิทธิภาพสูงสุด ทำไมฉันถึงเลือกอย่างใดอย่างหนึ่ง ฉันใช้ SQL Server 2008, ASP.NET MVC และ LINQ

4
ค่า "Null" มีขนาดเท่าใดใน SQL Server
ฉันมีตารางขนาดใหญ่ที่มีคอลัมน์ say 10 4 คนยังคงเป็นโมฆะเกือบตลอดเวลา ฉันมีแบบสอบถามที่ใช้ค่า null โดยใช้ขนาดหรือไม่มีขนาดเป็นไบต์ ฉันอ่านบทความสองสามบทความบางบทความกล่าวว่า: http://www.sql-server-citation.com/2009/12/common-mistakes-in-sql-server-part-4.html มีความเข้าใจผิดว่าถ้าเรามีค่า NULL ในตารางจะไม่ใช้พื้นที่จัดเก็บ ความจริงก็คือค่า NULL ใช้พื้นที่ - 2 ไบต์ SQL: การใช้ค่า NULL เทียบกับค่าเริ่มต้น NULLค่าในฐานข้อมูลเป็นค่าระบบที่ใช้เวลาถึงหนึ่งไบต์ในการจัดเก็บและแสดงให้เห็นว่าไม่มีค่าเมื่อเทียบกับพื้นที่หรือศูนย์หรือค่าเริ่มต้นอื่น ๆ คุณช่วยแนะนำฉันเกี่ยวกับขนาดที่ใช้ค่า null ได้ไหม

7
Entity Framework Migrations เปลี่ยนชื่อตารางและคอลัมน์
ฉันเปลี่ยนชื่อเอนทิตีสองรายการและคุณสมบัติการนำทางของพวกเขาและสร้างการย้ายใหม่ใน EF 5 ตามปกติกับการเปลี่ยนชื่อในการย้ายข้อมูล EF โดยค่าเริ่มต้นมันจะทิ้งวัตถุและสร้างขึ้นใหม่ นั่นไม่ใช่สิ่งที่ฉันต้องการดังนั้นฉันจึงต้องสร้างไฟล์โยกย้ายตั้งแต่เริ่มต้น public override void Up() { DropForeignKey("dbo.ReportSectionGroups", "Report_Id", "dbo.Reports"); DropForeignKey("dbo.ReportSections", "Group_Id", "dbo.ReportSectionGroups"); DropForeignKey("dbo.Editables", "Section_Id", "dbo.ReportSections"); DropIndex("dbo.ReportSectionGroups", new[] { "Report_Id" }); DropIndex("dbo.ReportSections", new[] { "Group_Id" }); DropIndex("dbo.Editables", new[] { "Section_Id" }); RenameTable("dbo.ReportSections", "dbo.ReportPages"); RenameTable("dbo.ReportSectionGroups", "dbo.ReportSections"); RenameColumn("dbo.ReportPages", "Group_Id", "Section_Id"); AddForeignKey("dbo.ReportSections", "Report_Id", "dbo.Reports", "Id"); AddForeignKey("dbo.ReportPages", "Section_Id", "dbo.ReportSections", …

13
วิธีรับวันแรกและวันสุดท้ายของเดือนก่อนหน้า (พร้อมประทับเวลา) ใน SQL Server
ฉันไม่พบวิธีแก้ปัญหาที่ให้วันแรกและวันสุดท้ายของเดือนก่อนหน้าพร้อมเวลาประทับ หวังว่านี่จะช่วยคนอื่น ๆ หากมีวิธีแก้ไขปัญหานี้อยู่แล้วฉันต้องขออภัย นี่คือวิธีแก้ปัญหา SELECT DATEADD(month, DATEDIFF(month, -1, getdate()) - 2, 0) as FirtDayPreviousMonthWithTimeStamp, DATEADD(ss, -1, DATEADD(month, DATEDIFF(month, 0, getdate()), 0)) as LastDayPreviousMonthWithTimeStamp สิ่งนี้จะส่งคืนค่าต่อไปนี้หาก currentdate = '2012-7-31' ผลลัพธ์: 2012-06-01 00:00:00.000 2012-06-30 23:59:59.000 สิ่งนี้จะส่งคืนค่าต่อไปนี้หาก currentdate = '2012-1-1' ผลลัพธ์: 2011-12-01 00:00:00.000 2011-12-31 23:59:59.000


13
เรียกใช้ไฟล์ SQL ทั้งหมดในไดเร็กทอรี
ฉันมีไฟล์. sql จำนวนหนึ่งซึ่งฉันต้องเรียกใช้เพื่อใช้การเปลี่ยนแปลงที่ทำโดยนักพัฒนารายอื่นบนฐานข้อมูล SQL Server 2005 ไฟล์ถูกตั้งชื่อตามรูปแบบต่อไปนี้: 0001 - abc.sql 0002 - abcef.sql 0003 - abc.sql ... มีวิธีเรียกใช้ทั้งหมดในครั้งเดียวหรือไม่?

4
วิธีแก้ไขค่าในตารางใน SQL Server Management Studio อย่างรวดเร็ว
นอกเหนือจากเมนูบริบท -> "แก้ไข 200 แถวบนสุด" จาก Object Explorer มีวิธีที่รวดเร็วในการเปิดตารางในโหมดแก้ไขที่ฉันสามารถแก้ไขค่าของเซลล์ได้อย่างรวดเร็วหรือไม่ ฉันต้องสามารถเลื่อนผ่าน 200 แถวแรกได้ และฉันไม่ต้องการเขียนสคริปต์ "แทรก" สำหรับการปรับแต่งเล็กน้อยทุกรายการที่ฉันต้องทำ ... ฉันไม่เข้าใจว่าเหตุใด SMS จึงไม่สามารถเข้าถึงโปรแกรมแก้ไขตารางเพจได้อย่างรวดเร็ว (เช่น Navicat)
117 sql  sql-server  ssms 

6
วิธีการตรวจจับข้อยกเว้นการหมดเวลาของ SQLServer
ฉันจำเป็นต้องจับข้อยกเว้นการหมดเวลาของเซิร์ฟเวอร์ SQL โดยเฉพาะเพื่อให้สามารถจัดการได้แตกต่างกัน ฉันรู้ว่าฉันสามารถจับ SqlException แล้วตรวจสอบว่าสตริงข้อความมี "หมดเวลา" หรือไม่ แต่สงสัยว่ามีวิธีที่ดีกว่านี้หรือไม่ try { //some code } catch (SqlException ex) { if (ex.Message.Contains("Timeout")) { //handle timeout } else { throw; } }


10
จะเปลี่ยนชื่อตารางโดยใช้แบบสอบถาม SQL ได้อย่างไร?
ฉันจะเปลี่ยนชื่อตารางโดยใช้คำสั่งแบบสอบถามได้อย่างไร ฉันใช้ไวยากรณ์ต่อไปนี้ แต่ฉันไม่พบคีย์เวิร์ดเปลี่ยนชื่อใน SQL Server 2005 Alter table Stu_Table rename to Stu_Table_10

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