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

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

9
INSERT เทียบกับ INSERT INTO
ฉันทำงานกับ T-SQL ใน MS SQL มาระยะหนึ่งแล้วและเมื่อใดก็ตามที่ฉันต้องแทรกข้อมูลลงในตารางฉันมักจะใช้ไวยากรณ์: INSERT INTO myTable <something here> ฉันเข้าใจว่าคำหลักINTOนั้นเป็นตัวเลือกที่นี่และฉันไม่จำเป็นต้องใช้ แต่อย่างใดมันก็กลายเป็นนิสัยในกรณีของฉัน คำถามของฉันคือ: มีความหมายของการใช้INSERTวากยสัมพันธ์INSERT INTOหรือไม่? ข้อใดเป็นไปตามมาตรฐานอย่างครบถ้วน ทั้งสองอย่างถูกต้องในการใช้งานมาตรฐาน SQL อื่น ๆ หรือไม่?
91 sql  sql-server  tsql 


17
ไม่สามารถวางฐานข้อมูลได้เนื่องจากมีการใช้งานอยู่
ฉันต้องการวางฐานข้อมูล ฉันใช้รหัสต่อไปนี้แล้ว แต่ไม่มีประโยชน์ public void DropDataBase(string DBName,SqlConnection scon) { try { SqlConnection.ClearAllPools(); SqlCommand cmd = new SqlCommand("ALTER DATABASE " + DBName + " SET SINGLE_USER WITH ROLLBACK IMMEDIATE", scon); cmd.CommandType = CommandType.Text; scon.Open(); cmd.ExecuteNonQuery(); scon.Close(); SqlCommand cmddrpdb = new SqlCommand("drop database " + DBName + "", scon); cmddrpdb.CommandType = CommandType.Text; …
91 c#  asp.net  sql-server 

6
"บันทึกธุรกรรมสำหรับฐานข้อมูลเต็มเนื่องจาก" LOG_BACKUP "" ในโฮสต์ที่ใช้ร่วมกัน
ฉันมีเว็บไซต์ Asp.Net MVC 5 พร้อมแนวทางแรกของ EntityFramework ในแผนโฮสต์ที่ใช้ร่วมกัน ใช้WebbsitePanel แบบโอเพนซอร์สสำหรับแผงควบคุมและพาเนล SQL Server ค่อนข้าง จำกัด วันนี้เมื่อฉันต้องการแก้ไขฐานข้อมูลฉันพบข้อผิดพลาดนี้: The transaction log for database 'db_name' is full due to 'LOG_BACKUP' ฉันค้นหารอบ ๆ และพบคำตอบที่เกี่ยวข้องมากมายเช่นนี้และสิ่งนี้หรือสิ่งนี้แต่ปัญหาคือพวกเขาแนะนำให้เรียกใช้แบบสอบถามบนฐานข้อมูล ฉันพยายามวิ่ง db.Database.ExecuteSqlCommand("ALTER DATABASE db_name SET RECOVERY SIMPLE;"); กับสตูดิโอภาพ (บนHomeController) แต่ฉันได้รับข้อผิดพลาดต่อไปนี้: System.Data.SqlClient.SqlException: ALTER DATABASE statement not allowed within multi-statement transaction. ฉันจะแก้ปัญหาของฉันได้อย่างไร? ฉันควรติดต่อทีมสนับสนุน (ซึ่งค่อนข้างแย่สำหรับโฮสต์ของฉัน) …

7
เซิร์ฟเวอร์ SQL ละเว้นกรณีในนิพจน์ where
ฉันจะสร้างแบบสอบถาม SQL (MS SQL Server) ได้อย่างไรโดยที่ส่วนคำสั่ง "where" ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ SELECT * FROM myTable WHERE myField = 'sOmeVal' ฉันต้องการให้ผลลัพธ์กลับมาโดยไม่สนใจคดี

8
วิธีกำหนดจำนวนการเชื่อมต่อที่เปิด / แอ็คทีฟทั้งหมดใน ms sql Server 2005
แอปพลิเคชั่น PHP / MS Sql Server 2005 / win 2003 ของฉันบางครั้งไม่ตอบสนองมากการใช้งานหน่วยความจำ / cpu ไม่ขัดขวาง ถ้าฉันพยายามเปิดการเชื่อมต่อใหม่จากสตูดิโอการจัดการ sql มันก็แฮงค์ที่กล่องโต้ตอบการเชื่อมต่อที่เปิดอยู่ วิธียับยั้งจำนวนการเชื่อมต่อที่ใช้งานอยู่ทั้งหมด ms sql server 2005

7
T-SQL: วนลูปผ่านอาร์เรย์ของค่าที่รู้จัก
นี่คือสถานการณ์ของฉัน: สมมติว่าฉันมีกระบวนงานที่เก็บไว้ซึ่งฉันจำเป็นต้องเรียกใช้กระบวนงานอื่นที่เก็บไว้ในชุดของรหัสเฉพาะ มีวิธีทำไหม กล่าวคือแทนที่จะต้องทำสิ่งนี้: exec p_MyInnerProcedure 4 exec p_MyInnerProcedure 7 exec p_MyInnerProcedure 12 exec p_MyInnerProcedure 22 exec p_MyInnerProcedure 19 ทำสิ่งนี้: *magic where I specify my list contains 4,7,12,22,19* DECLARE my_cursor CURSOR FAST_FORWARD FOR *magic select* OPEN my_cursor FETCH NEXT FROM my_cursor INTO @MyId WHILE @@FETCH_STATUS = 0 BEGIN exec p_MyInnerProcedure …
90 sql  sql-server  tsql 

2
ขนาดสูงสุดของตัวแปร varchar (สูงสุด)
เมื่อใดก็ตามที่ผ่านมาหากมีคนถามฉันว่าขนาดสูงสุดของ a varchar(max)ฉันจะบอกว่า 2GB หรือค้นหาตัวเลขที่แน่นอนกว่านี้ (2 ^ 31-1 หรือ 2147483647) อย่างไรก็ตามในการทดสอบล่าสุดฉันพบว่าvarchar(max)ตัวแปรสามารถเกินขนาดนี้ได้: create table T ( Val1 varchar(max) not null ) go declare @KMsg varchar(max) = REPLICATE('a',1024); declare @MMsg varchar(max) = REPLICATE(@KMsg,1024); declare @GMsg varchar(max) = REPLICATE(@MMsg,1024); declare @GGMMsg varchar(max) = @GMsg + @GMsg + @MMsg; select LEN(@GGMMsg) insert into T(Val1) …
90 sql-server  tsql 


10
ดึงข้อมูลความยาวสูงสุดของคอลัมน์ VARCHAR ใน SQL Server
ฉันต้องการค้นหาVARCHARคอลัมน์ที่ยาวที่สุดในคอลัมน์เฉพาะของตาราง SQL Server นี่คือตัวอย่าง: ID = INT IDENTITY DESC = VARCHAR(5000) ID | Desc ---|----- 1 | a 2 | aaa 3 | aa SQL ที่จะส่งคืน 3 คืออะไร? เนื่องจากค่าที่ยาวที่สุดคือ 3 ตัวอักษร?

17
วิธีการสอบถามฟิลด์ DATETIME โดยใช้วันที่เท่านั้นใน Microsoft SQL Server
ฉันมีตาราง TEST พร้อมDATETIMEฟิลด์ดังนี้: ID NAME DATE 1 TESTING 2014-03-19 20:05:20.000 สิ่งที่ฉันต้องการคำค้นหาที่ส่งคืนแถวนี้และทุกแถวที่มีวันที่ 03/19/2014 ไม่ว่าเวลาจะเป็นอย่างไร ฉันลองใช้ select * from test where date = '03/19/2014'; แต่กลับไม่มีแถว วิธีเดียวที่จะทำให้มันใช้งานได้คือระบุส่วนเวลาของวันที่: select * from test where date = '03/19/2014 20:03:02.000';

4
ฟังก์ชันพาร์ติชัน COUNT () เป็นไปได้โดยใช้ DISTINCT
ฉันพยายามเขียนสิ่งต่อไปนี้เพื่อให้ได้จำนวน NumUsers ที่แตกต่างกันออกไปทั้งหมดดังนี้: NumUsers = COUNT(DISTINCT [UserAccountKey]) OVER (PARTITION BY [Mth]) สตูดิโอบริหารดูเหมือนจะไม่ค่อยมีความสุขกับเรื่องนี้ ข้อผิดพลาดจะหายไปเมื่อฉันลบDISTINCTคีย์เวิร์ด แต่จะไม่เป็นการนับเฉพาะ DISTINCTดูเหมือนจะไม่เป็นไปได้ภายในฟังก์ชันพาร์ติชัน ฉันจะหาจำนวนที่แตกต่างได้อย่างไร ฉันใช้วิธีการแบบเดิมๆ เช่นการสืบค้นย่อยที่สัมพันธ์กันหรือไม่ เมื่อพิจารณาเพิ่มเติมอีกเล็กน้อยOVERฟังก์ชั่นเหล่านี้อาจทำงานแตกต่างจาก Oracle ในลักษณะที่ไม่สามารถใช้ในSQL-Serverการคำนวณผลรวมที่กำลังทำงานอยู่ ฉันได้เพิ่มตัวอย่างสดที่นี่ในSQLfiddleซึ่งฉันพยายามใช้ฟังก์ชันพาร์ติชันเพื่อคำนวณผลรวมที่กำลังทำงานอยู่

18
เรียกใช้สคริปต์ SQL ขนาดใหญ่ (ด้วยคำสั่ง GO)
ฉันต้องการเรียกใช้ชุดคำสั่ง SQL จำนวนมาก (สร้างตารางจำนวนมากมุมมองและขั้นตอนการจัดเก็บ) จากภายในโปรแกรม C # ข้อความเหล่านี้จำเป็นต้องแยกด้วยGOงบ แต่SqlCommand.ExecuteNonQuery()ไม่ชอบGOงบ วิธีแก้ปัญหาของฉันซึ่งฉันคิดว่าฉันจะโพสต์เพื่อการอ้างอิงคือการแยกสตริง SQL ในGOบรรทัดและดำเนินการแต่ละชุดแยกกัน มีวิธีที่ง่ายกว่า / ดีกว่านี้ไหม?
89 c#  sql-server 

14
จะหลีกเลี่ยงสตริงใน SQL Server โดยใช้ PHP ได้อย่างไร
ฉันกำลังมองหาทางเลือกอื่นmysql_real_escape_string()สำหรับ SQL Server เป็นaddslashes()ตัวเลือกที่ดีที่สุดของฉันหรือมีฟังก์ชันทางเลือกอื่นที่สามารถใช้ได้หรือไม่? อีกทางเลือกหนึ่งmysql_error()ก็จะมีประโยชน์เช่นกัน

6
การสืบค้นย่อยโดยใช้ Exists 1 หรือ Exists *
ฉันเคยเขียนเช็ค EXISTS ของฉันดังนี้: IF EXISTS (SELECT * FROM TABLE WHERE Columns=@Filters) BEGIN UPDATE TABLE SET ColumnsX=ValuesX WHERE Where Columns=@Filters END DBA คนหนึ่งในชีวิตก่อนหน้านี้บอกฉันว่าเมื่อฉันทำEXISTSประโยคให้ใช้SELECT 1แทนSELECT * IF EXISTS (SELECT 1 FROM TABLE WHERE Columns=@Filters) BEGIN UPDATE TABLE SET ColumnsX=ValuesX WHERE Columns=@Filters END สิ่งนี้สร้างความแตกต่างได้จริงหรือ?
89 sql  sql-server  tsql 

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