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

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

29
เทคนิคการปรับแต่งประสิทธิภาพที่ชื่นชอบ [ปิด]
ตามที่กล่าวไว้ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา เมื่อคุณมีแบบสอบถามหรือขั้นตอนการจัดเก็บที่ต้องการการปรับแต่งประสิทธิภาพสิ่งแรกที่คุณลองทำคืออะไร?

6
การเพิ่มข้อมูลประจำตัวกำลังกระโดดในฐานข้อมูล SQL Server
ในตารางของฉันFeeในคอลัมน์ "ReceiptNo" ในการเพิ่มข้อมูลประจำตัวฐานข้อมูล SQL Server 2012 ก็เริ่มกระโดดไปที่ 100s แทนที่จะเป็น 1 ขึ้นอยู่กับสองสิ่งต่อไปนี้ ถ้ามันคือ 1205446 มันกระโดดไปที่ 1206306 ถ้ามันคือ 1206321 มันจะข้ามไปที่ 1207306 และถ้ามันคือ 1207314 มันจะข้ามไปที่ 1208306 สิ่งที่ฉันอยากจะแจ้งให้คุณทราบก็คือตัวเลขสามตัวสุดท้ายจะคงที่นั่นคือ 306 ทุกครั้งที่กระโดด เกิดขึ้นดังแสดงในภาพต่อไปนี้ ปัญหานี้เกิดขึ้นเมื่อฉันรีสตาร์ทคอมพิวเตอร์

19
SQL เพื่อกำหนดวันเข้าใช้งานตามลำดับขั้นต่ำ?
ตารางประวัติผู้ใช้ต่อไปนี้มีหนึ่งระเบียนสำหรับทุกวันที่ผู้ใช้รายหนึ่งเข้าถึงเว็บไซต์ (ในช่วงเวลา UTC 24 ชั่วโมง) มีบันทึกมากมายหลายพันรายการ แต่มีเพียงหนึ่งรายการต่อวันต่อผู้ใช้ หากผู้ใช้ไม่ได้เข้าถึงเว็บไซต์ในวันนั้นจะไม่มีการสร้างบันทึก Id UserId CreationDate ------ ------ ------------ 750997 12 2552-07-07 18: 42: 20.723 750998 15 2552-07-07 18: 42: 20.927 751000 19 2009-07-07 18: 42: 22.283 สิ่งที่ฉันกำลังมองหาคือแบบสอบถาม SQL ในตารางนี้ที่มีประสิทธิภาพที่ดีซึ่งจะบอกฉันว่าผู้ใช้รายใดได้เข้าถึงเว็บไซต์เป็นเวลา (n) วันต่อเนื่องโดยไม่ขาดวัน ในคำอื่น ๆจำนวนผู้ใช้ที่มี (n) ระเบียนในตารางนี้มีลำดับ (วันก่อนหรือวันหลัง) วันที่ ? หากวันใดขาดหายไปจากลำดับลำดับจะเสียและควรเริ่มใหม่อีกครั้งที่ 1; เรากำลังมองหาผู้ใช้ที่มีจำนวนวันต่อเนื่องที่นี่โดยไม่มีช่องว่าง ความคล้ายคลึงใด ๆ ระหว่างข้อความค้นหานี้กับป้าย …

12
NOLOCK (คำใบ้เซิร์ฟเวอร์ Sql) เป็นการปฏิบัติที่ไม่ดีหรือไม่?
ฉันอยู่ในธุรกิจการทำเว็บไซต์และแอพพลิเคชั่นที่ไม่สำคัญ -> เช่น ซอฟต์แวร์การธนาคารการบินอวกาศแอปพลิเคชันการตรวจสอบผู้ป่วยหนัก ฯลฯ คุณจะได้รับแนวคิด ดังนั้นด้วยข้อจำกัดความรับผิดชอบจำนวนมากการใช้คำใบ้ NOLOCK ในคำสั่ง Sql บางอย่างไม่ดีหรือไม่? เมื่อหลายปีก่อนมีผู้ดูแล Sql คนหนึ่งแนะนำว่าฉันควรใช้ NOLOCK ถ้าฉันพอใจกับ "การอ่านสกปรก" ซึ่งจะทำให้ฉันมีประสิทธิภาพมากขึ้นเล็กน้อยจากระบบของฉันเนื่องจากการอ่านแต่ละครั้งไม่ได้ล็อก ตาราง / แถว / สิ่ง ฉันยังบอกด้วยว่านี่เป็นวิธีแก้ปัญหาที่ยอดเยี่ยมหากฉันประสบปัญหาล็อคตาย ดังนั้นฉันจึงเริ่มทำตามความคิดนั้นเป็นเวลาสองสามปีจนกระทั่งผู้เชี่ยวชาญด้าน Sql ช่วยฉันด้วยโค้ดแบบสุ่มและสังเกตเห็น NOLOCKS ทั้งหมดในโค้ด sql ของฉัน ฉันถูกดุอย่างสุภาพและเขาพยายามอธิบายให้ฉันฟัง (ทำไมมันถึงไม่ใช่เรื่องดี) และฉันก็หลงทาง ฉันรู้สึกว่าแก่นแท้ของคำอธิบายของเขาคือ 'มันเป็นวิธีแก้ปัญหาแบบวงดนตรีสำหรับปัญหาที่ร้ายแรงกว่า .. โดยเฉพาะอย่างยิ่งถ้าคุณกำลังประสบกับภาวะชะงักงัน ดังนั้นแก้ไขต้นตอของปัญหา ' เมื่อเร็ว ๆ นี้ฉันได้ทำ googling เกี่ยวกับเรื่องนี้และเจอโพสต์นี้ ดังนั้นอาจารย์ sql db guru อาจารย์ช่วยสอนหน่อยได้ไหม

7
SQL Server: ตัวอย่างข้อมูล PIVOTing String
พยายามหาตัวอย่าง SQL Server PIVOT แบบง่ายๆ ตัวอย่างส่วนใหญ่ที่ฉันพบเกี่ยวข้องกับการนับหรือการสรุปตัวเลข ฉันแค่ต้องการเปลี่ยนข้อมูลสตริง ตัวอย่างเช่นฉันมีข้อความค้นหาที่ส่งคืนสิ่งต่อไปนี้ Action1 VIEW Action1 EDIT Action2 VIEW Action3 VIEW Action3 EDIT ฉันต้องการใช้ PIVOT (ถ้าเป็นไปได้) เพื่อให้ได้ผลลัพธ์ดังนี้: Action1 VIEW EDIT Action2 VIEW NULL Action3 VIEW EDIT เป็นไปได้ด้วยฟังก์ชัน PIVOT หรือไม่?
125 sql-server  tsql  pivot 

3
วิธีการเชื่อมต่อล็อกอิน SQL Server ที่มีอยู่กับผู้ใช้ฐานข้อมูล SQL Server ที่มีชื่อเดียวกัน
มีคำสั่ง SQL Server เพื่อเชื่อมต่อผู้ใช้ฐานข้อมูลเดียวกับล็อกอินสำหรับเซิร์ฟเวอร์ฐานข้อมูลที่มีชื่อเดียวกันหรือไม่ ตัวอย่างเช่น: เซิร์ฟเวอร์ฐานข้อมูล - ฐานข้อมูลอินสแตนซ์เริ่มต้น: TestDB เข้าสู่ระบบเซิร์ฟเวอร์ - ผู้ใช้ที่มีอยู่ของTestUser บน TestDB - TestUser ถ้าฉันพยายามทำให้การTestUserเข้าสู่ระบบเป็นผู้ใช้ของTestDBฐานข้อมูลจะมี "ผู้ใช้กลุ่มหรือบทบาท" อยู่แล้ว มีใครทราบวิธีง่ายๆในการกำหนดผู้ใช้ DB ให้เข้าสู่ระบบเซิร์ฟเวอร์หรือไม่?
124 sql  sql-server 

6
การเปลี่ยนขนาดของคอลัมน์ที่อ้างอิงโดยมุมมองที่ผูกกับสคีมาใน SQL Server
ฉันกำลังพยายามเปลี่ยนขนาดของคอลัมน์ในเซิร์ฟเวอร์ sql โดยใช้: ALTER TABLE [dbo].[Address] ALTER COLUMN [Addr1] [nvarchar](80) NULL ที่ความยาวของเดิมAddr140 ล้มเหลวโดยเพิ่มข้อผิดพลาดนี้: The object 'Address_e' is dependent on column 'Addr1'. ALTER TABLE ALTER COLUMN Addr1 failed because one or more objects access this column. ฉันพยายามอ่านและดูเหมือนว่าเป็นเพราะบางมุมมองอ้างถึงคอลัมน์นี้และดูเหมือนว่า SQL Server กำลังพยายามปล่อยคอลัมน์ที่ทำให้เกิดข้อผิดพลาดขึ้น Address_e เป็นมุมมองที่สร้างขึ้นโดย DB Administrator คนก่อน มีวิธีอื่นอีกไหมที่ฉันสามารถเปลี่ยนขนาดของคอลัมน์ได้
124 sql  sql-server 

14
SQL Server 2008: จะสอบถามขนาดฐานข้อมูลทั้งหมดได้อย่างไร
ฉันมี MS SQL 2008 R2, 500 ฐานข้อมูล อะไรคือวิธีที่มีประสิทธิภาพที่สุดง่ายที่สุดและ 'ทันสมัย' ในการสืบค้นขนาดฐานข้อมูลทั้งหมด ผลลัพธ์ควรมีคอลัมน์: ฐาน DataFilesSize LogFilesSize

4
ตัวอย่างชีวิตจริงเมื่อใดควรใช้ OUTER / CROSS APPLY ใน SQL
ฉันได้ดูCROSS / OUTER APPLYกับเพื่อนร่วมงานคนหนึ่งและเรากำลังดิ้นรนเพื่อหาตัวอย่างในชีวิตจริงว่าจะนำไปใช้ที่ไหน ฉันใช้เวลาค่อนข้างมากในการดูว่าเมื่อไหร่ควรใช้ Cross Apply ผ่าน Inner Join และ googling แต่ตัวอย่างหลัก (เท่านั้น) ดูค่อนข้างแปลก (ใช้ rowcount จากตารางเพื่อกำหนดจำนวนแถวที่จะเลือกจากตารางอื่น) ฉันคิดว่าสถานการณ์นี้อาจได้รับประโยชน์จากOUTER APPLY: ตารางรายชื่อ (มี 1 บันทึกสำหรับแต่ละรายชื่อ) ตารางรายการการสื่อสาร (สามารถมีโทรศัพท์โทรสารอีเมลสำหรับผู้ติดต่อแต่ละราย) แต่การใช้ subqueries แสดงออกตารางทั่วไปOUTER JOINด้วยRANK()และOUTER APPLYทั้งหมดดูเหมือนจะดำเนินการอย่างเท่าเทียมกัน APPLYฉันคาดเดาที่นี้หมายถึงสถานการณ์ไม่สามารถใช้ได้กับ โปรดแบ่งปันตัวอย่างชีวิตจริงและช่วยอธิบายคุณลักษณะนี้!

4
ข้อผิดพลาด SQL Server ': setvar'
ฉันพยายามสร้างตัวแปรสคริปต์ใน T-SQL ดังนี้: /* Deployment script for MesProduction_Preloaded_KLM_MesSap */ GO SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER ON; SET NUMERIC_ROUNDABORT OFF; GO :setvar DatabaseName "MesProduction_Preloaded_KLM_MesSap" อย่างไรก็ตามเมื่อฉันเรียกใช้สิ่งนี้ฉันได้รับข้อผิดพลาดที่ระบุว่า 'ไม่ถูกต้องไวยากรณ์ใกล้': ' ผมทำอะไรผิดหรือเปล่า?
123 sql  sql-server  tsql 

6
ฉันจะวางตัวแปรตารางใน SQL-Server ได้อย่างไร ฉันควรทำสิ่งนี้หรือไม่?
ฉันมีตัวแปรตารางในสคริปต์ (ไม่ใช่โพรซีเดอร์ที่เก็บไว้) สองคำถาม: ฉันจะวางตัวแปรตารางได้อย่างไร Drop Table @varName ให้ข้อผิดพลาด "ไม่ถูกต้อง snytax" ฉันควรทำสิ่งนี้เสมอหรือไม่? ฉันได้ยินว่ามันเป็นแนวทางปฏิบัติที่ดี มันจำเป็นมากสำหรับสคริปต์ขนาดเล็กเช่นนี้หรือไม่? นี่คือรหัสของฉัน: Declare @projectList table( name varchar(40) NOT NULL); Insert Into @projectList Values ('BCR-00021') Select * From @projectList Drop Table @projectList -- does not work

2
เป็นไปได้หรือไม่ที่ส่วนคำสั่ง SQL Output ส่งคืนคอลัมน์ที่ไม่ได้ถูกแทรก
ฉันได้ทำการแก้ไขฐานข้อมูลบางอย่างและจำเป็นต้องย้ายข้อมูลเก่าไปยังตารางใหม่ สำหรับสิ่งนั้นฉันต้องกรอกข้อมูลในตาราง (ReportOptions) โดยนำข้อมูลจากตารางเดิม (แบบฝึกหัด) และเติมตารางกลางที่สอง (PracticeReportOption) ReportOption (ReportOptionId int PK, field1, field2...) Practice (PracticeId int PK, field1, field2...) PracticeReportOption (PracticeReportOptionId int PK, PracticeId int FK, ReportOptionId int FK, field1, field2...) ฉันทำแบบสอบถามเพื่อรับข้อมูลทั้งหมดที่จำเป็นในการย้ายจาก Practice ไปยัง ReportOptions แต่ฉันมีปัญหาในการกรอกตารางกลาง --Auxiliary tables DECLARE @ReportOption TABLE (PracticeId int /*This field is not on the actual …
123 sql  sql-server 

11
คุณจะคัดลอกระเบียนในตาราง SQL ได้อย่างไร แต่จะสลับ id เฉพาะของแถวใหม่
คำถามนี้ใกล้เคียงกับสิ่งที่ฉันต้องการ แต่สถานการณ์ของฉันแตกต่างกันเล็กน้อย ตารางต้นทางและตารางปลายทางเหมือนกันและคีย์หลักคือตัวบ่งชี้เฉพาะ (guid) เมื่อฉันลองสิ่งนี้: insert into MyTable select * from MyTable where uniqueId = @Id; เห็นได้ชัดว่าฉันได้รับการละเมิดข้อ จำกัด ของคีย์หลักเนื่องจากฉันพยายามคัดลอกคีย์หลัก อันที่จริงฉันไม่ต้องการคัดลอกคีย์หลักเลย แต่ฉันต้องการสร้างใหม่ นอกจากนี้ฉันต้องการคัดลอกช่องบางช่องและปล่อยให้ช่องอื่นว่าง เพื่อให้เรื่องซับซ้อนมากขึ้นฉันต้องใช้คีย์หลักของระเบียนต้นฉบับและแทรกลงในฟิลด์อื่นในสำเนา (ฟิลด์ PreviousId) ฉันแน่ใจว่ามีวิธีแก้ปัญหาง่ายๆสำหรับเรื่องนี้ฉันไม่รู้ TSQL มากพอที่จะรู้ว่ามันคืออะไร

4
จะใช้ตัวแปรสำหรับชื่อฐานข้อมูลใน T-SQL ได้อย่างไร?
ฉันใช้ชื่อฐานข้อมูลในหลาย ๆ ที่ในสคริปต์ของฉันและฉันต้องการที่จะเปลี่ยนแปลงได้อย่างรวดเร็วดังนั้นฉันจึงมองหาสิ่งนี้: DECLARE @DBNAME VARCHAR(50) SET @DBNAME = 'TEST' CREATE DATABASE @DBNAME GO ALTER DATABASE @DBNAME SET COMPATIBILITY_LEVEL = 90 GO ALTER DATABASE @DBNAME SET RECOVERY SIMPLE GO แต่มันไม่ได้ผล แล้ววิธีที่ถูกต้องในการเขียนโค้ดนี้คืออะไร?
123 sql-server 

8
การตั้งค่าการพึ่งพา maven สำหรับ SQL Server
ฉันกำลังพัฒนาพอร์ตเล็ตที่ฉันมีสิทธิ์ไฮเบอร์เนตเข้าถึงฐานข้อมูล SQL Server ฉันตั้งค่าการอ้างอิง mavenสำหรับมันและพยายามค้นหาตัวเชื่อมต่อ SQL Server ด้วยวิธีเดียวกับที่ฉันรู้ว่ามี MySql การค้นหาโดย Google ของฉันยังให้เฉพาะ Mysql เท่านั้นหากฉันค้นหาตัวเชื่อมต่อ SQL Server ค่าการพึ่งพา maven ที่ถูกต้องคืออะไร?

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