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

ใช้แท็กนี้สำหรับคำถามเฉพาะสำหรับ SQL Server ของ Microsoft รุ่น 2000 โปรดทราบว่า ณ วันที่ 9 เมษายน 2013 Microsoft ไม่สนับสนุน SQL Server เวอร์ชันนี้อีกต่อไปจนถึงจุดที่ไม่มีการสร้างแพตช์ความปลอดภัยอีกต่อไป


28
ตรวจสอบว่ามีตารางอยู่ใน SQL Server หรือไม่
ฉันต้องการให้เป็นการอภิปรายขั้นสุดท้ายเกี่ยวกับวิธีตรวจสอบว่ามีตารางอยู่ใน SQL Server 2000/2005 โดยใช้คำสั่ง SQL หรือไม่ เมื่อคุณได้รับคำตอบจาก Google คุณจะได้คำตอบที่แตกต่างกันมากมาย มีวิธีอย่างเป็นทางการ / ย้อนกลับและไปข้างหน้าในการทำมัน? นี่เป็นวิธีที่เป็นไปได้สองวิธี วิธีใดที่หนึ่งในสองคือมาตรฐาน / วิธีที่ดีที่สุดในการทำมัน? วิธีแรก: IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' AND TABLE_NAME='mytablename') SELECT 1 AS res ELSE SELECT 0 AS res; วิธีที่สอง: IF OBJECT_ID (N'mytablename', N'U') IS NOT NULL SELECT 1 AS res …

11
วิธีเข้าร่วมแถวแรก
ฉันจะใช้รูปธรรม แต่เป็นตัวอย่างสมมุติ โดยปกติแล้วคำสั่งซื้อแต่ละรายการจะมีเพียงหนึ่งรายการ : คำสั่งซื้อ: OrderGUID OrderNumber ========= ============ {FFB2...} STL-7442-1 {3EC6...} MPT-9931-8A รายการโฆษณา: LineItemGUID Order ID Quantity Description ============ ======== ======== ================================= {098FBE3...} 1 7 prefabulated amulite {1609B09...} 2 32 spurving bearing แต่บางครั้งจะมีคำสั่งซื้อที่มีรายการโฆษณาสองรายการ: LineItemID Order ID Quantity Description ========== ======== ======== ================================= {A58A1...} 6,784,329 5 pentametric fan {0E9BC...} 6,784,329 …

19
ฉันจะสร้างหมายเลขสุ่มสำหรับแต่ละแถวใน TSQL Select ได้อย่างไร
ฉันต้องการหมายเลขสุ่มที่แตกต่างกันสำหรับแต่ละแถวในตารางของฉัน รหัสที่ชัดเจนปรากฏขึ้นต่อไปนี้ใช้ค่าสุ่มที่เหมือนกันสำหรับแต่ละแถว SELECT table_name, RAND() magic_number FROM information_schema.tables ฉันต้องการเอา INT หรือ FLOAT ออกจากนี้ ส่วนที่เหลือของเรื่องนี้คือฉันจะใช้หมายเลขสุ่มนี้เพื่อสร้างการชดเชยวันที่แบบสุ่มจากวันที่ที่รู้จักเช่น 1-14 วันชดเชยจากวันที่เริ่มต้น นี่สำหรับ Microsoft SQL Server 2000

18
ฉันสามารถป้องกันการฉีด SQL ด้วยการหลีกเลี่ยงการอ้างคำพูดเดียวและป้อนข้อมูลผู้ใช้โดยรอบด้วยคำพูดเดียว?
ฉันรู้ว่าการสืบค้น SQL แบบแปรผันเป็นวิธีที่ดีที่สุดในการฆ่าเชื้ออินพุตของผู้ใช้เมื่อสร้างเคียวรีที่มีการป้อนข้อมูลของผู้ใช้ แต่ฉันสงสัยว่าเกิดอะไรขึ้นกับการป้อนข้อมูลผู้ใช้และหลีกเลี่ยงคำพูดเดี่ยว ๆ นี่คือรหัส: sSanitizedInput = "'" & Replace(sInput, "'", "''") & "'" เครื่องหมายคำพูดเดี่ยวใด ๆ ที่ผู้ใช้ป้อนจะถูกแทนที่ด้วยเครื่องหมายคำพูดเดี่ยวสองชั้นซึ่งจะช่วยลดความสามารถของผู้ใช้ในการวางสตริงดังนั้นสิ่งอื่น ๆ ที่พวกเขาอาจพิมพ์เช่นอัฒภาคเครื่องหมายเปอร์เซ็นต์และอื่น ๆ ทั้งหมดจะเป็นส่วนหนึ่งของสตริงและ ไม่ได้ดำเนินการจริง ๆ เป็นส่วนหนึ่งของคำสั่ง เรากำลังใช้ Microsoft SQL Server 2000 ซึ่งฉันเชื่อว่า single-quote เป็นตัวคั่นสตริงเท่านั้นและวิธีเดียวที่จะหลีกเลี่ยงตัวคั่นสตริงดังนั้นจึงไม่มีวิธีดำเนินการใด ๆ กับผู้ใช้ประเภทใด ๆ ฉันไม่เห็นวิธีใดที่จะเปิดการโจมตีด้วยการฉีด SQL เพื่อต่อต้านสิ่งนี้ แต่ฉันรู้ว่าถ้านี่เป็นกระสุนที่ดูเหมือนกับฉันคนอื่นจะคิดว่ามันแล้วและมันจะเป็นเรื่องธรรมดา เกิดอะไรขึ้นกับรหัสนี้ มีวิธีการโจมตี SQL injection ผ่านเทคนิคการฆ่าเชื้อนี้หรือไม่ ตัวอย่างอินพุตของผู้ใช้ที่ใช้ประโยชน์จากเทคนิคนี้จะเป็นประโยชน์ UPDATE: ฉันยังไม่รู้วิธีการเปิดใช้การโจมตี SQL injection …

22
ค้นหาดัชนีของการเกิดครั้งสุดท้ายของสตริงย่อยโดยใช้ T-SQL
มีวิธีที่ตรงไปตรงมาในการค้นหาดัชนีของสตริงที่เกิดขึ้นล่าสุดโดยใช้ SQL หรือไม่? ตอนนี้ฉันใช้ SQL Server 2000 โดยพื้นฐานแล้วฉันต้องการฟังก์ชันที่System.String.LastIndexOfเมธอด. NET มีให้ googling เล็กน้อยเปิดเผยสิ่งนี้ - Function To Retrieve Last Index - แต่จะไม่ได้ผลหากคุณส่งผ่านนิพจน์คอลัมน์ "text" โซลูชันอื่น ๆ ที่พบในที่อื่นใช้ได้ตราบเท่าที่ข้อความที่คุณกำลังค้นหามีความยาว 1 อักขระ ฉันอาจจะต้องทำอาหารขึ้นมา ถ้าฉันทำเช่นนั้นฉันจะโพสต์ไว้ที่นี่เพื่อให้คุณสามารถดูและใช้ประโยชน์ได้


5
ให้สิทธิ์ดำเนินการสำหรับผู้ใช้ในโพรซีเดอร์ที่เก็บไว้ทั้งหมดในฐานข้อมูลหรือไม่
ฉันสร้างสคริปต์จากฐานข้อมูลเก่าสร้างฐานข้อมูลใหม่และนำเข้าข้อมูลทั้งหมดจากฐานข้อมูลเก่า อย่างไรก็ตามจนถึงตอนนี้ดีมากไม่มีผู้ใช้คนใดเรียกใช้สิทธิ์สำหรับโพรซีเดอร์ที่จัดเก็บไว้ ฉันรู้ว่าฉันสามารถใช้ได้ GRANT EXECUTE ON [storedProcName] TO [userName] อย่างไรก็ตามหากเป็นเพียงไม่กี่ขั้นตอนฉันมีประมาณ 100 ขั้นตอนดังนั้นวิธีใดที่ง่ายที่สุดสำหรับฉันในการให้สิทธิ์ดำเนินการเข้าถึงสำหรับผู้ใช้เฉพาะกับพวกเขาทั้งหมด? ขอบคุณล่วงหน้า.

11
ฉันจะทิ้งฟังก์ชันได้อย่างไรหากมีอยู่แล้ว
ฉันรู้ว่าสิ่งนี้ต้องง่าย แต่ฉันจะนำหน้าการสร้างฟังก์ชันด้วยการตรวจสอบเพื่อดูว่ามีอยู่แล้วได้อย่างไร หากมีอยู่ฉันต้องการปล่อยและสร้างใหม่

4
มีวิธีแสดงรายการธุรกรรมที่เปิดอยู่บนฐานข้อมูล SQL Server 2000 หรือไม่
ไม่มีใครรู้วิธีใด ๆ ในการแสดงรายการธุรกรรมที่เปิดอยู่บนฐานข้อมูล SQL Server 2000? ฉันทราบว่าฉันสามารถสอบถามมุมมองsys.dm_tran_session_transactionsในเวอร์ชันฐานข้อมูล SQL 2005 (และใหม่กว่า) ได้ แต่สิ่งนี้ไม่มีใน SQL 2000

1
การประกาศข้อ จำกัด เริ่มต้นเมื่อสร้างตาราง
ฉันกำลังสร้างตารางใหม่ใน Microsoft SQL Server 2000 โดยเขียนโค้ดแทนการใช้ GUI ฉันกำลังพยายามเรียนรู้วิธีการทำ "วิธีการด้วยตนเอง" นี่คือรหัสที่ฉันใช้จริงและใช้งานได้ดี: CREATE TABLE "attachments" ( "attachment_id" INT NOT NULL, "load_date" SMALLDATETIME NOT NULL, "user" VARCHAR(25) NOT NULL, "file_name" VARCHAR(50) NOT NULL, CONSTRAINT "pk_attachments" PRIMARY KEY ("attachment_id"), CONSTRAINT "fk_users" FOREIGN KEY ("user") REFERENCES "users" ("user"), CONSTRAINT "ch_load_date" CHECK ("load_date" < GETDATE()) ) …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.