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

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


13
รายการข้อมูลเกี่ยวกับไฟล์ฐานข้อมูลทั้งหมดใน SQL Server
เป็นไปได้ไหมที่จะแสดงรายการข้อมูลเกี่ยวกับไฟล์ (MDF / LDF) ของฐานข้อมูลทั้งหมดบน SQL Server ฉันต้องการรับรายการที่แสดงว่าฐานข้อมูลใดใช้ไฟล์ใดในดิสก์ภายในเครื่อง สิ่งที่ฉันพยายาม: exec sp_databases ฐานข้อมูลทั้งหมด select * from sys.databases แสดงข้อมูลจำนวนมากเกี่ยวกับแต่ละฐานข้อมูล - แต่น่าเสียดายที่ไม่แสดงไฟล์ที่ใช้โดยแต่ละฐานข้อมูล select * from sys.database_filesแสดงไฟล์ mdf / ldf ของmasterฐานข้อมูล - แต่ไม่ใช่ฐานข้อมูลอื่น

6
เพิ่มความสัมพันธ์ของ Foreign Key ระหว่างสองฐานข้อมูล
ฉันมีสองตารางในสองฐานข้อมูลที่แตกต่างกัน ใน table1 (ในฐานข้อมูล 1) มีคอลัมน์ชื่อ column1 และเป็นคีย์หลัก ตอนนี้ใน table2 (ใน database2) มีคอลัมน์ชื่อ column2 และฉันต้องการเพิ่มเป็นคีย์ต่างประเทศ ฉันพยายามเพิ่มมันและทำให้ฉันมีข้อผิดพลาดต่อไปนี้: ข่าวสารเกี่ยวกับ 1763 ระดับ 16 สถานะ 0 บรรทัด 1 การอ้างอิงคีย์ต่างประเทศข้ามฐานข้อมูลไม่ได้รับการสนับสนุน ฐานข้อมูลคีย์ต่างประเทศ 2.table2. ข่าวสารเกี่ยวกับ 1750 ระดับ 16 สถานะ 0 บรรทัด 1 ไม่สามารถสร้างข้อ จำกัด ดูข้อผิดพลาดก่อนหน้านี้ ฉันจะทำเช่นนั้นได้อย่างไรเนื่องจากตารางอยู่ในฐานข้อมูลที่แตกต่างกัน

2
สับสนเกี่ยวกับ UPDLOCK, HOLDLOCK
ในขณะที่ค้นคว้าการใช้Table Hintsฉันเจอคำถามสองข้อนี้: ฉันควรใช้คำแนะนำการล็อกใด (T-SQL) HOLDLOCK มีผลอย่างไรต่อ UPDLOCK? คำตอบของทั้งสองคำถามบอกว่าเมื่อใช้(UPDLOCK, HOLDLOCK)กระบวนการอื่น ๆ จะไม่สามารถอ่านข้อมูลบนตารางนั้นได้ แต่ฉันไม่เห็นสิ่งนี้ ในการทดสอบฉันสร้างตารางและเริ่มหน้าต่าง SSMS สองหน้าต่าง จากหน้าต่างแรกฉันรันธุรกรรมที่เลือกจากตารางโดยใช้คำแนะนำตารางต่างๆ ในขณะที่ธุรกรรมกำลังทำงานอยู่จากหน้าต่างที่สองฉันเรียกใช้คำสั่งต่างๆเพื่อดูว่ารายการใดจะถูกบล็อก ตารางทดสอบ: CREATE TABLE [dbo].[Test]( [ID] [int] IDENTITY(1,1) NOT NULL, [Value] [nvarchar](50) NULL, CONSTRAINT [PK_Test] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, …

7
มีวิธีการดึงข้อมูลนิยามมุมมองจาก SQL Server โดยใช้ ADO ธรรมดาหรือไม่
ฉันสามารถแยกคำจำกัดความของคอลัมน์จากฐานข้อมูลที่โฮสต์บนเซิร์ฟเวอร์ SQL ได้สำเร็จโดยใช้การOpenSchema()เรียกการเชื่อมต่อ ADO ในรูปแบบต่างๆดังนั้นฉันจึงสามารถสร้างตารางเหล่านั้นขึ้นมาใหม่ในฐานข้อมูล SQL อื่นโดยทางโปรแกรมได้ จนถึงตอนนี้ดีมาก การโต้ตอบหลักกับตารางด้านบนเกิดขึ้นโดยใช้หลายมุมมอง ในขณะที่OpenSchema()สามารถส่งคืนคำจำกัดความของคอลัมน์สำหรับมุมมองในลักษณะเดียวกับที่ส่งกลับคำจำกัดความคอลัมน์สำหรับตารางข้อมูลที่สำคัญขาดหายไป - ตารางและคอลัมน์ใดในตารางที่อยู่ในคอลัมน์ในมุมมองที่แมป ฉันพยายามเข้าถึงคำสั่ง SQL ที่ใช้สร้างมุมมองโดยใช้ ADOX Catalog Views แต่ดูเหมือนว่าไดรเวอร์ OLEDB สำหรับ SQL Server ที่เราใช้ไม่รองรับฟังก์ชันนี้ มีวิธีใดบ้างในการรับข้อมูลนี้สำหรับการกำหนดค่ามุมมองผ่าน ADO ทั้งในลักษณะที่ระบุว่า "ColumnX แมปกับ ColumnY ในตาราง Z" หรือในรูปแบบของคำสั่ง SQL จริงที่ใช้สร้างมุมมอง
92 sql-server  view  ado 

2
จำเป็นต้องใช้ # ในการสร้างตารางชั่วคราวในเซิร์ฟเวอร์ SQL หรือไม่
จำเป็นต้องใช้#ก่อนสร้างตารางชั่วคราวในเซิร์ฟเวอร์ SQL หรือไม่? ตัวอย่าง: SELECT column1, column2, someInt, someVarChar INTO ItemBack1 FROM table2 WHERE table2.ID = 7 สำหรับ ItemBack1 จำเป็นต้องใช้#สัญลักษณ์หรือไม่? ถ้าไม่เช่นนั้น#การสร้างตารางชั่วคราวคืออะไร?


5
มีข้อดีกว่า varchar (500) มากกว่า varchar (8000) หรือไม่?
ฉันได้อ่านเรื่องนี้ในฟอรัม MSDN และที่นี่ก็ยังไม่ชัดเจน ฉันคิดว่าถูกต้อง: Varchar (สูงสุด) จะถูกจัดเก็บเป็นประเภทข้อมูลข้อความดังนั้นจึงมีข้อเสีย สมมติว่าฟิลด์ของคุณมีความยาวน้อยกว่า 8000 อักขระได้อย่างน่าเชื่อถือ เช่นเดียวกับเขตข้อมูล BusinessName ในตารางฐานข้อมูลของฉัน ในความเป็นจริงชื่อธุรกิจมักจะต่ำกว่า (ดึงตัวเลขออกจากหมวก) 500 อักขระ ดูเหมือนว่าช่อง varchar จำนวนมากที่ฉันวิ่งข้ามจะลดลงภายใต้จำนวนอักขระ 8k ฉันควรทำให้ฟิลด์นั้นเป็น varchar (500) แทน varchar (8000) หรือไม่? จากสิ่งที่ฉันเข้าใจเกี่ยวกับ SQL ไม่มีความแตกต่างระหว่างสองสิ่งนี้ ดังนั้นเพื่อให้ชีวิตง่ายขึ้นฉันต้องการกำหนดฟิลด์ varchar ทั้งหมดของฉันเป็น varchar (8000) มีข้อบกพร่องหรือไม่? ที่เกี่ยวข้อง: ขนาดของคอลัมน์ varchar (ฉันไม่รู้สึกว่าคนนี้ตอบคำถามของฉัน)
91 sql  sql-server  tsql 

4
คุณจะทราบได้อย่างไรว่าตารางใดใช้พื้นที่มากที่สุดในฐานข้อมูล SQL Server 2005
คุณจะทราบได้อย่างไรว่าตารางใดใช้พื้นที่มากที่สุดในฐานข้อมูล SQL Server 2005 ฉันแน่ใจว่ามีขั้นตอนการจัดเก็บระบบบางอย่างที่แสดงข้อมูลนี้ ฉันมีฐานข้อมูล TEST ที่เพิ่มขึ้นจาก 1tb เป็น 23tb ขณะนี้เรากำลังทำการทดสอบการแปลงไคลเอ็นต์จำนวนมากในฐานข้อมูลซึ่งเกี่ยวข้องกับการเรียกใช้ขั้นตอนการจัดเก็บ Conversion เดียวกันหลายครั้ง มันลบซึ่งฉันแน่ใจว่ากำลังเพิ่มบันทึกธุรกรรม แต่นี่ทำให้ฉันคิดที่จะถามคำถามนี้ ข้อมูล ปัญหาใหญ่คือตารางดาวน์โหลด dbo มันสร้างที่เก็บข้อมูลขนาดใหญ่ที่ไม่จำเป็นจริงๆฉันมี 3GB ก่อนที่จะตัดทอนมันแล้ว 52MB;)

4
ข้อผิดพลาดในการกู้คืนฐานข้อมูล SQL Server: แคสต์ที่ระบุไม่ถูกต้อง (SqlManagerUI)
ฉันใช้ SQL Server 2008 R2 Standard (เวอร์ชัน 10.50.1600.1) สำหรับเว็บไซต์ที่ใช้งานจริงและรุ่น SQL Server Express พร้อมบริการขั้นสูง (v10.50.1600.1) สำหรับ localhost ของฉันเป็นฐานข้อมูล ไม่กี่วันหลัง SQL Server ของฉันขัดข้องและฉันต้องติดตั้ง 2008 R2 Express เวอร์ชันใหม่บน localhost ของฉัน ทำงานได้ดีเมื่อฉันกู้คืนเวอร์ชันเก่าบางรุ่นที่นำมาจาก Express edition แต่เมื่อฉันพยายามกู้คืนฐานข้อมูลจาก.bakไฟล์ที่นำมาจากเซิร์ฟเวอร์การผลิตทำให้เกิดข้อผิดพลาดต่อไปนี้: ข้อผิดพลาด: การแคสต์ที่ระบุไม่ถูกต้อง (SqlManagerUI) และเมื่อฉันพยายามกู้คืนฐานข้อมูลโดยใช้คำสั่ง Use Master Go RESTORE DATABASE Publications FROM DISK = 'C:\Publications.bak' WITH MOVE 'Publications' TO 'C:\Program …

10
SQL Row_Number () ฟังก์ชันใน Where Clause
ฉันพบหนึ่งคำถามที่ตอบด้วยRow_Number()ฟังก์ชันในประโยค where เมื่อฉันลองใช้แบบสอบถามหนึ่งรายการฉันได้รับข้อผิดพลาดต่อไปนี้: "ข่าวสารเกี่ยวกับ 4108 ระดับ 15 สถานะ 1 บรรทัด 1 ฟังก์ชันที่มีหน้าต่างสามารถปรากฏได้เฉพาะในส่วนคำสั่ง SELECT หรือ ORDER BY" นี่คือคำถามที่ฉันพยายาม หากใครรู้วิธีแก้ปัญหานี้โปรดแจ้งให้เราทราบ SELECT employee_id FROM V_EMPLOYEE WHERE row_number() OVER ( ORDER BY employee_id ) > 0 ORDER BY Employee_ID


7
คำสั่ง WHERE บนชนิดข้อมูล "ข้อความ" ของเซิร์ฟเวอร์ SQL
โดยที่ [CastleType] ถูกตั้งค่าเป็นชนิดข้อมูล "text" ใน SQL Server และแบบสอบถามคือ: SELECT * FROM [Village] WHERE [CastleType] = 'foo' ฉันได้รับข้อผิดพลาด: ชนิดข้อมูลTEXTและVARCHARเข้ากันไม่ได้ในตัวดำเนินการเท่ากับ ฉันไม่สามารถสืบค้นข้อมูลประเภทนี้ด้วย WHERE clause ได้หรือไม่?

5
เหตุใดจึงเลือก SCOPE_IDENTITY () ส่งคืนทศนิยมแทนที่จะเป็นจำนวนเต็ม
ดังนั้นฉันจึงมีตารางที่มีคอลัมน์ข้อมูลประจำตัวเป็นคีย์หลักดังนั้นมันจึงเป็นจำนวนเต็ม เหตุใดจึงSCOPE_IDENTITY()ส่งคืนค่าทศนิยมแทนที่จะเป็น int ไปยังแอปพลิเคชัน C # ของฉันเสมอ นี่เป็นเรื่องที่น่ารำคาญจริงๆเนื่องจากค่าทศนิยมจะไม่แปลงเป็นจำนวนเต็มใน C # โดยปริยายซึ่งหมายความว่าตอนนี้ฉันต้องเขียนสิ่งต่างๆมากมายและมีวิธีการช่วยเหลือมากมายเพราะฉันใช้ SQL Server และ Postgres ซึ่ง Postgres จะส่งคืนจำนวนเต็มสำหรับ ฟังก์ชันเทียบเท่า .. ทำไมSCOPE_IDENTITY()ไม่คืนค่าจำนวนเต็มธรรมดา มีคนทั่วไปที่ใช้ค่าทศนิยม / ไม่ใช่ตัวตนสำหรับคีย์หลักหรือไม่?

10
ขนาดตารางและดัชนีใน SQL Server
เราสามารถมีแบบสอบถาม SQL ซึ่งโดยพื้นฐานแล้วจะช่วยในการดูตารางและขนาดดัชนีใน SQl Server เซิร์ฟเวอร์ SQL รักษาการใช้หน่วยความจำสำหรับตาราง / ดัชนีอย่างไร
91 sql-server 

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