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

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

1
ฉันจะกำหนดค่าสุ่มที่แตกต่างให้กับแต่ละแถวในคำสั่ง SELECT ได้อย่างไร
โปรดดูรหัสนี้: create table #t1( id int identity (1,1), val varchar(10) ); insert into #t1 values ('a'); insert into #t1 values ('b'); insert into #t1 values ('c'); insert into #t1 values ('d'); ตอนนี้เมื่อใดก็ตามที่คุณดำเนินการนี้ select *, ( select top 1 val from #t1 order by NEWID()) rnd from #t1 order by 1; …

5
การใช้บรรทัดคำสั่งของ SQL Server? เป็นไปได้ไหม?
ฉันพยายามใช้ SQL Server Management Studio 2008 ที่สร้างขึ้นใน "Solution Explorer" เพื่อจัดการโครงการและหลังจาก 2 สัปดาห์ของการดิ้นรนกับมันฉันตัดสินใจว่าฉันไม่สนใจจริงๆ มันเป็นคุณสมบัติ "ความสะดวกสบาย" ที่จริงแล้วค่อนข้างเป็นอุปสรรค น่าเสียดายที่ที่ที่ฉันทำงานคือร้านขายของ MS และค่อนข้างติดอยู่กับที่ ฉันต้องการกลับไปที่บรรทัดคำสั่ง (ฉันอยากเป็นกลุ่ม!) ฉันได้ติดตั้งที่เก็บโค่นล้มท้องถิ่นด้วย TortiseSVN ส่วนหน้าเพื่อแทนที่ "Solution Explorer" ที่กล่าวถึงข้างต้นและให้มันทำงานได้ค่อนข้างดี ฉันได้ติดตั้ง Vim แล้วและในขณะที่ยังคงปรับแต่งมันอยู่ อย่างไรก็ตามสิ่งหนึ่งที่ฉันยังหาวิธีแก้ไขคือวิธีการเรียกใช้คำสั่งไปยัง SQL Server ผ่านทางบรรทัดคำสั่ง ฉันเคยชินกับพรอมต์บรรทัดคำสั่งของ MySQL / Postgres เพราะนั่นคือสิ่งที่ฉันเคยใช้ในอดีตและใช้ในขณะที่เรียนวิชา อย่างไรก็ตามฉันไม่สามารถหาวิธีเรียกใช้สคริปต์ของฉันผ่านทางบรรทัดคำสั่งใน windows ได้ ขณะนี้ฉันแก้ไขเป็นกลุ่ม, รีเฟรชหน้าเว็บใน SSMS และดำเนินการ ฉันไม่ต้องการแม้แต่แตะที่ SMSS หากจำเป็น ฉันเห็นโพสต์แนะนำ sqlsharp …

5
วิธีที่ดีที่สุดในการค้นหาจำนวนระเบียนที่ไม่มีหมายเลขโทรศัพท์ที่เหมาะสมใน SQL Server คืออะไร?
ฉันมีสาขาที่ผู้คนในอดีตสามารถใช้เพื่อให้คุณค่าได้อย่างอิสระ ฉันต้องระบุระเบียนที่ไม่มีค่าที่เหมาะสมเพื่อให้ฉันสามารถทำความสะอาดได้ ฉันได้ดูรอบนี้ใน SSIS ความชอบของฉันคือการใช้องค์ประกอบสคริปต์ที่มีการแสดงออก regex ในบางรหัส C # ตามด้วยการเปลี่ยนเส้นทาง ถึงกระนั้นฉันก็สงสัยว่ามีวิธีใน SSIS ที่จะทำเช่นนี้โดยไม่ต้องหันไปใช้ C # ฉันไม่ได้มีโชคมากมายในการค้นหาวิธีการค้นหาว่ามีกี่ระเบียนที่ไม่มีหมายเลขโทรศัพท์ที่เหมาะสม

2
“ ใหญ่เกินไป” สำหรับ SQL 2008 Web Edition มีขนาดใหญ่เพียงใด
สำหรับแอปพลิเคชั่นที่จะเป็นโฮสต์ของเราฉันต้องเลือกระหว่าง SQL Server 2008 Web edition และ SQL Server 2008 Enterprise edition ไม่มีฟังก์ชั่น "ต้องมี": แอปพลิเคชันทำงานบน SQL Express ในขณะนี้ แต่จะเกินขนาดสูงสุด 10GB ที่ SQL Express เรียกเก็บ ฉันกำลังดูแผนภูมิเปรียบเทียบนี้และตารางที่สำคัญที่สุดในหน้านี้ "ความยืดหยุ่นและประสิทธิภาพ" เมื่อตารางมีขนาดใหญ่ขึ้นฟังก์ชันการทำงานเช่น "การแบ่งพาร์ติชันของตารางและดัชนี" จึงเป็นสิ่งสำคัญในการรับประกันความเร็ว แต่จะต้องใช้ขนาดโต๊ะแบบไหน? ฉันควรใช้กลยุทธ์ใดในการพิจารณาว่าขนาดและการใช้ฐานข้อมูลของฉันต้องการฟังก์ชันการปรับขนาดองค์กรและประสิทธิภาพหรือไม่

1
มีวิธีที่เชื่อถือได้ในการกำหนดเมื่อคุณควรเรียกใช้ DBCC CLEANTABLE เพื่อเรียกคืนพื้นที่หรือไม่
เมื่อเร็ว ๆ นี้แทนที่จะเพิ่งเพิ่มไฟล์เมื่อพวกเขาใกล้ถึงการใช้ไฟล์ 80% ฉันได้ทำเชิงรุกมากขึ้นในการเรียกคืนพื้นที่ผ่านเทคนิคทั่วไปเช่นการจัดเรียงข้อมูลฮีปเพิ่มและวางดัชนีคลัสเตอร์การใช้การบีบอัดแถวหรือหน้าเป็นต้น แต่มีเพียงไม่กี่กรณีที่ผมสามารถที่จะเรียกคืนพื้นที่มากยิ่งขึ้นโดยการดำเนินการDBCC CLEANTABLE ด้วยฐานข้อมูลหลายร้อยในสภาพแวดล้อมของฉันมันเป็นไปไม่ได้ที่จะรู้ว่าสิ่งที่ผู้ใช้ทำในแต่ละคนและเป็นที่ยอมรับอย่างสมบูรณ์ว่าจะมีการเปลี่ยนแปลงที่เกี่ยวข้องกับการลดลงของคอลัมน์ความยาวคงที่ ฉันมักจะพบโอกาสเหล่านี้โดยดูที่การนับแถวกับจำนวนหน้าในสคริปต์การใช้พื้นที่วัตถุบางอย่างที่ฉันเขียน ฉันต้องการดำเนินการขั้นตอนต่อไปโดยพยายามตรวจจับสถานการณ์เหล่านี้โดยอัตโนมัติ สิ่งที่ฉันอยากรู้คือถ้ามีใครบางคนกำลังติดตามโอกาสประเภทนี้อย่างกระตือรือร้นและถ้าเป็นเช่นนั้นคุณมองหาอะไรเป็นพิเศษ ความคิดของฉันคือการเขียนบางอย่างตามแนวการรวบรวมขนาดสูงสุดและต่ำสุดของแถวจำนวนแถวในตารางจำนวนหน้าที่จัดสรรและจำนวนหน้าที่ใช้แล้วทำคณิตศาสตร์พื้นฐานเพื่อบันทึกผลลัพธ์ที่ อยู่ข้างนอกสิ่งที่จะ "คาดหวัง"

2
มีใครใช้คุณสมบัติ SQL Server เพื่อสร้างกลุ่มของขั้นตอนการจัดเก็บแตกต่างกันตามหมายเลขหรือไม่
คำถามหมายถึงพารามิเตอร์ number ในเอกสารคู่มือmsdnนี้ หากคุณไม่สามารถสร้างโพรซีเดอร์ที่เก็บไว้จำนวนมากใน SQL-Server สร้างความแตกต่างด้วยหมายเลขแล้วปล่อยด้วยการดรอปเพียงครั้งเดียว create procedure dbo.stored_proc1 as select 1 go create procedure dbo.stored_proc1;2 as select 2 go exec stored_proc1 -- returns 1 go exec stored_proc1;2 -- returns 2 go drop stored_proc1 -- drops both go ฉันสงสัยว่าทุกคนจะใช้คุณลักษณะนี้เพื่อประโยชน์หรือไม่หรือเป็นเพียงความอยากรู้อยากเห็นในอดีต

3
เหตุใดเครื่องมือเพิ่มประสิทธิภาพจึงเลือกดัชนีที่เป็นกลุ่ม + เรียงลำดับแทนที่จะเป็นดัชนีที่ไม่ได้ทำคลัสเตอร์
รับตัวอย่างถัดไป: IF OBJECT_ID('dbo.my_table') IS NOT NULL DROP TABLE [dbo].[my_table]; GO CREATE TABLE [dbo].[my_table] ( [id] int IDENTITY (1,1) NOT NULL PRIMARY KEY, [foo] int NULL, [bar] int NULL, [nki] int NOT NULL ); GO /* Insert some random data */ INSERT INTO [dbo].[my_table] (foo, bar, nki) SELECT TOP (100000) ABS(CHECKSUM(NewId())) …

2
เมื่อจะใช้ 'nvarchar / nchar' กับ SQL Server 2019?
กับ SQL Server 2019 ไมโครซอฟท์เปิดตัวสนับสนุน UTF-8สำหรับCHARและVARCHARชนิดข้อมูลและพูดว่า: คุณสมบัตินี้อาจช่วยประหยัดพื้นที่เก็บข้อมูลได้อย่างมากทั้งนี้ขึ้นอยู่กับชุดอักขระที่ใช้งาน ตัวอย่างเช่นการเปลี่ยนชนิดข้อมูลคอลัมน์ที่มีอยู่ด้วยสตริง ASCII จาก NCHAR (10) เป็น CHAR (10) โดยใช้การเปรียบเทียบการเปิดใช้งาน UTF-8 แปลเป็นความต้องการหน่วยเก็บข้อมูลลดลงเกือบ 50% การลดลงนี้เป็นเพราะ NCHAR (10) ต้องการ 22 ไบต์สำหรับการจัดเก็บในขณะที่ CHAR (10) ต้องการ 12 ไบต์สำหรับสายอักขระ Unicode เดียวกัน ดูเหมือนว่า UTF-8 จะรองรับทุกสคริปต์ดังนั้นโดยทั่วไปเราสามารถเริ่มเก็บข้อมูล Unicode ในvarcharและcharคอลัมน์ และตามที่ได้กล่าวไว้ในเอกสารแล้วสิ่งนี้สามารถลดขนาดของตารางและดัชนีและจากนั้นเราจะได้ประสิทธิภาพที่ดียิ่งขึ้นเนื่องจากอ่านข้อมูลในปริมาณที่น้อยลง ฉันสงสัยว่านี่หมายความว่าเราสามารถหยุดใช้nvarcharและncharคอลัมน์ที่ใช้ UTF-16 หรือไม่ ใครสามารถชี้สถานการณ์และเหตุผลที่จะไม่ใช้ชนิดข้อมูลถ่านด้วยการUTFเข้ารหัสและใช้ n-chars ต่อไปได้?

1
อะไรคือความแตกต่างระหว่างผู้ใช้ `dbo 'และเจ้าของฐานข้อมูลที่เก็บไว้ใน sys.database
เราเพิ่งมีคำถามเกิดขึ้นที่ผู้ใช้dboในฐานข้อมูลมีsidที่ไม่ตรงกับในowner_sid sys.databasesฉันเข้าใจว่าเจ้าของฐานข้อมูลแตกต่างจากสมาชิกของบทบาทอย่างไรdb_ownerแต่ฉันคิดเสมอว่าผู้ใช้dboนั้นเป็นเจ้าของฐานข้อมูลจริง นั่นไม่ใช่กรณีหรือไม่ และถ้าเป็นเช่นนั้นมีความแตกต่างที่แท้จริงระหว่างdboและมีอะไรsys.databasesบ้าง?

2
วิธีการเปลี่ยนฐานข้อมูลแบบไดนามิกโดยใช้ TSQL
ฉันมีปัญหากับการพยายามเปลี่ยนบริบทของ SSMS เป็นฐานข้อมูลที่ระบุใน SQL แบบไดนามิก: EXEC sys.sp_executesql N'USE db1 ' ; สามารถดำเนินการได้สำเร็จ แต่บริบทฐานข้อมูลของ SSMS จะไม่เปลี่ยนแปลง ฉันได้ลองปรับเปลี่ยนเล็กน้อยตามข้างบน DECLARE @sql NVARCHAR(100) DECLARE @db NVARCHAR(50) SET @db = N'db1' SET @sql = N'Use ' + @db EXEC sp_executesql @sql ดำเนินการสำเร็จอีกครั้ง แต่ฐานข้อมูลไม่เปลี่ยนแปลง

3
SQL Server แทรกเข้าไป - วิธีการระบุคอลัมน์ที่ทำให้เกิดข้อผิดพลาดการตัด
ฉันมีขั้นตอนการจัดเก็บที่แทรก 650 ฟิลด์ลงในตาราง การแทรกล้มเหลวด้วยข้อผิดพลาดการตัด มันง่ายมาก INSERT INTO SELECT (a bunch of fields) FROM (a bunch of tables) ด้านล่างนี้เป็นข้อความแสดงข้อผิดพลาด: ข่าวสารเกี่ยวกับ 8152, ระดับ 16, สถานะ 14, กระบวนงาน DSP_Procedure, สาย 1075 สายอักขระหรือข้อมูลไบนารีจะถูกตัดทอน มีวิธีที่รวดเร็วที่ฉันสามารถระบุฟิลด์ที่ทำให้เกิดข้อผิดพลาดการตัด? ความจริงที่ว่าคำสั่ง select ที่จะแทรกลงในตารางมี 650 ฟิลด์ทำให้ยากที่จะระบุว่าฟิลด์ใดที่ทำให้เกิดข้อผิดพลาดการตัด ฉันคิดว่าฉันสามารถแสดงความคิดเห็นบล็อกของเขตข้อมูลได้ครั้งละหนึ่งครั้งเพื่อให้มีการแทรก SP เพียง 100 ครั้งในแต่ละครั้งจากนั้นจึงเรียกใช้ SP 6 หรือ 7 ครั้งที่แตกต่างกันจนกว่าฉันจะแคบลงอย่างน้อย 100 กลุ่ม ที่จะมีฟิลด์ที่ทำให้เกิดข้อผิดพลาดการตัด อีกทางหนึ่งฉันคิดว่าบางทีฉันสามารถSELECT INTOสร้างตารางใหม่และเปรียบเทียบความยาวข้อมูลในตารางเทียบกับความยาวข้อมูลของตารางเป้าหมายที่ฉันพยายามแทรกลงใน …

4
วิธีสร้างแถวสำหรับทุกวันในช่วงวันที่โดยใช้กระบวนงานที่เก็บไว้ได้อย่างไร
ฉันต้องการสร้างกระบวนงานที่เก็บไว้ซึ่งจะสร้างแถวในตารางสำหรับทุกวันในช่วงวันที่ที่กำหนด กระบวนงานที่เก็บไว้ยอมรับสองอินพุต - วันที่เริ่มต้นและวันที่สิ้นสุดของช่วงวันที่ที่ผู้ใช้ต้องการ ดังนั้นสมมติว่าฉันมีตารางดังนี้ SELECT Day, Currency FROM ConversionTable Day คือ DateTime และ Currency เป็นเพียงจำนวนเต็ม เพื่อให้ง่ายขึ้นสมมติว่าฉันต้องการให้คอลัมน์สกุลเงินเป็น 1 สำหรับแต่ละแถวที่แทรกเหล่านี้ ดังนั้นหากมีคนป้อน '5 มีนาคม 2017' เป็นวันที่เริ่มต้นและ '11 เมษายน 2017' เป็นวันที่สิ้นสุดฉันต้องการสร้างแถวต่อไปนี้: 2017-03-05 00:00:00, 1 2017-03-06 00:00:00, 1 ... 2017-04-11 00:00:00, 1 วิธีที่ดีที่สุดในการเขียนโค้ดของกระบวนงานที่เก็บไว้เพื่อทำสิ่งนี้คืออะไร ฉันใช้ SQL Server 2008 R2 ในสภาพแวดล้อมการทดสอบของฉัน แต่สภาพแวดล้อมจริงของเราใช้ SQL Server 2012 ดังนั้นฉันสามารถอัพเกรดเครื่องทดสอบของฉันได้หากมีฟังก์ชั่นใหม่ที่เปิดตัวในปี …

2
ฐานข้อมูลหลักเสียหายอินสแตนซ์จะไม่เริ่ม - ตัวเลือกของฉันคืออะไร
ช่วยด้วย! ฐานข้อมูลหลักของฉันเสียหายฉันไม่สามารถนำอินสแตนซ์ SQL ออนไลน์มาใช้ได้! ตัวเลือกของฉันคืออะไรในการทำให้เซิร์ฟเวอร์สำรอง ฉันมีการสำรองข้อมูลของมาสเตอร์ แต่หน้า MSDN "การกู้คืนฐานข้อมูลหลัก"ขอให้ฉันเริ่มอินสแตนซ์ในโหมดผู้ใช้คนเดียวซึ่งฉันทำไม่ได้! (หมายเหตุ: ฉันทิ้งคำถามนี้ไว้โดยไม่ระบุว่าเป็นเวอร์ชัน SQL เพื่ออ้างอิงที่ใช้กันอย่างแพร่หลายมากขึ้นมีคำถามที่คล้ายกันใน DBA.SE แต่ไม่มีใครที่เกี่ยวข้องกับเซิร์ฟเวอร์ไม่สามารถเริ่มต้นได้)

5
วิธีตรวจสอบว่ามีการติดตั้งโปรแกรมฐานข้อมูลใดบนเซิร์ฟเวอร์ DataBase ที่ฉันมี acces ให้เรียกใช้แบบสอบถาม
ฉันต้องการตรวจสอบประเภทของ sql ที่กำลังทำงานอยู่บนเซิร์ฟเวอร์ Datasase ที่ฉันสามารถเข้าถึงได้ ฉันมีสิทธิ์เข้าถึงเว็บอินเตอร์เฟสและรายการตารางเท่านั้น ผ่านอินเทอร์เฟซฉันสามารถเรียกใช้แบบสอบถามบนตารางที่มีอยู่ในรายการ ฉันจะรับข้อมูลเพิ่มเติมเกี่ยวกับเซิร์ฟเวอร์และรุ่นที่เซิร์ฟเวอร์ใช้งานอยู่ได้อย่างไร ฉันไม่รู้เกี่ยวกับ IP หรือ PORT ที่เซิร์ฟเวอร์กำลังทำงาน ฉันต้องการทราบว่าเซิร์ฟเวอร์นั้นเป็น MySQL, Mircosoft SQL Server, Oracle SQL, Postgre SQL หรือเซิร์ฟเวอร์ sql อื่น ๆ เว็บไซต์ที่ผมพูดถึงเป็นหนึ่งในนี้: w3schools.com SQL แก้ไข แก้ไข 2: สำหรับบางคำสั่ง select sqlite_version () ใช้งานได้สำหรับฉันมันไม่ทำงาน นี่คือภาพหน้าจอของการตอบสนอง แก้ไข 3: บน Chromium Browser คำสั่งทำงานได้อย่างถูกต้อง อย่างไรก็ตามใน Firefox Browser คำสั่งไม่ทำงาน ฉันยังพูดถึงว่าฉันใช้ Linux …

1
จำนวนขั้นตอนฮิสโตแกรมมีการตัดสินใจในสถิติอย่างไร
จำนวนขั้นตอนฮิสโตแกรมมีการตัดสินใจในสถิติใน SQL Server อย่างไร ทำไมถึง จำกัด เพียง 200 ขั้นตอนถึงแม้ว่าคอลัมน์หลักของฉันมีค่าแตกต่างกันมากกว่า 200 ค่า มีปัจจัยในการตัดสินใจหรือไม่? การสาธิต นิยามสคีมา CREATE TABLE histogram_step ( id INT IDENTITY(1, 1), name VARCHAR(50), CONSTRAINT pk_histogram_step PRIMARY KEY (id) ) การแทรก 100 บันทึกลงในตารางของฉัน INSERT INTO histogram_step (name) SELECT TOP 100 name FROM sys.syscolumns การอัปเดตและตรวจสอบสถิติ UPDATE STATISTICS histogram_step WITH fullscan DBCC …

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