วิธีตรวจสอบวันที่ของการเปลี่ยนแปลงครั้งล่าสุดในขั้นตอนหรือฟังก์ชันที่เก็บไว้ในเซิร์ฟเวอร์ SQL


183

ฉันต้องตรวจสอบเมื่อมีการเปลี่ยนฟังก์ชั่นครั้งที่แล้ว ฉันรู้วิธีตรวจสอบวันที่สร้าง (อยู่ในหน้าต่างคุณสมบัติของฟังก์ชันใน SQL Server Management Studio)
ฉันพบว่าใน SQL Server 2000 เป็นไปไม่ได้ที่จะตรวจสอบวันที่แก้ไข (ดูที่โพสต์นี้: เป็นไปได้หรือไม่ที่จะกำหนดว่าเมื่อใดที่กระบวนงานที่เก็บไว้ถูกแก้ไขครั้งล่าสุดใน SQL Server 2000 )

เป็นไปได้หรือไม่ที่จะตรวจสอบใน SQL Server 2008 MS เพิ่มคุณสมบัติใหม่บางอย่างในตารางระบบที่อนุญาตให้ตรวจสอบหรือไม่

คำตอบ:


387
SELECT name, create_date, modify_date 
FROM sys.objects
WHERE type = 'P'
ORDER BY modify_date DESC

typeสำหรับฟังก์ชั่นเป็นFNมากกว่าPสำหรับขั้นตอน หรือคุณสามารถกรองในคอลัมน์ชื่อ


5
ดูเหมือนว่าสิทธิ์บางอย่างสามารถทำให้ผลลัพธ์ถูกตัดออกจากคิวรีนี้ - แม้ว่าจะมีผลลัพธ์บางอย่างที่ส่งคืน เราได้สังเกตผลลัพธ์ที่แตกต่างกันโดยขึ้นอยู่กับสิทธิ์ของผู้ใช้ - แต่ฉันไม่ได้ จำกัด ให้แคบลงว่าหน่วยงานใดบ้างที่เกี่ยวข้อง สรุปสั้น ๆ : เรียกใช้คิวรีนี้เป็น SA หากคุณสามารถมั่นใจได้ว่าคุณเห็นทุกสิ่ง
Ryan Guill

1
คุณถูกต้องแน่นอน msdn.microsoft.com/en-us/library/ms190324%28v=sql.105%29.aspx "ใน SQL Server 2005 และรุ่นที่ใหม่กว่าการแสดงข้อมูลเมตาในมุมมองแคตาล็อกจะ จำกัด อยู่ที่ผู้ใช้เป็นเจ้าของหรือ ที่ผู้ใช้ได้รับอนุญาตบางอย่างสำหรับข้อมูลเพิ่มเติมดูการกำหนดค่าการเปิดเผยข้อมูลเมตา "
Chris Diver

2
คำเตือน หาก OP อ้างถึงการเปลี่ยนแปลงโมดูลที่ทำผ่านคำสั่ง ALTER DDL โดยเฉพาะmodify_dateอาจทำให้เข้าใจผิดได้ ตัวอย่างเช่นหากsys.sp_refreshsqlmoduleมีการดำเนินการในโมดูลmodify_dateจะมีการเปลี่ยนแปลงแม้ว่าในทางเทคนิครหัสของโมดูลจะไม่เปลี่ยนแปลง
gravidThoughts

จะได้รับขั้นตอนการจัดเก็บฐานข้อมูลเฉพาะได้อย่างไร!
Irfan

2
@im_one หลังจากบรรทัด WHERE ให้เพิ่มAND name = 'specified procedure'ตำแหน่งspecified procedureของ proc ที่จัดเก็บที่คุณต้องการค้นหา
TylerH

41

ลองทำตามขั้นตอนที่เก็บไว้:

SELECT name, create_date, modify_date
FROM sys.objects
WHERE type = 'P'
AND name = 'myProc'

1
นี่ควรเป็นคำตอบที่ยอมรับได้เพราะง่ายและตรงไปตรงมา
user3454439

13

นี่คือทางออกที่ถูกต้องสำหรับการค้นหาฟังก์ชั่น:

SELECT name, create_date, modify_date
FROM sys.objects
WHERE type = 'fn'
AND name = 'fn_NAME'

7

ฉันพบว่ารายการนี้เป็นเทคนิคใหม่

นี่เป็นรายละเอียดมาก

SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = N'PROCEDURE' and ROUTINE_SCHEMA = N'dbo' 
order by  LAST_ALTERED desc

SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = N'PROCEDURE' and ROUTINE_SCHEMA = N'dbo' 
order by  CREATED desc 


SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = N'FUNCTION' and ROUTINE_SCHEMA = N'dbo' 
order by  LAST_ALTERED desc

SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = N'FUNCTION' and ROUTINE_SCHEMA = N'dbo' 
order by  CREATED desc 

4

สำหรับ SQL 2000 ฉันจะใช้:

SELECT name, crdate, refdate 
FROM sysobjects
WHERE type = 'P' 
ORDER BY refdate desc

แล้วประมาณปี 2008 .. นั่นไม่ใช่คำถาม .. ?
NREZ

@ แบบสอบถาม NREZ เกี่ยวกับ sysobjects ได้รับการสนับสนุนในปี 2008 ดังนั้นสิ่งนี้จะใช้งานได้
Paul

refdate ไม่ใช่วันที่แก้ไขล่าสุด ตรวจสอบความแตกต่างวันที่ระหว่าง sys.object และ sysobjects
access_granted

2

ในเวอร์ชันล่าสุด (2012 หรือมากกว่า) เราสามารถแก้ไขรายละเอียดขั้นตอนการจัดเก็บโดยใช้แบบสอบถามนี้

SELECT create_date, modify_date, name FROM sys.procedures 
ORDER BY modify_date DESC

0
SELECT *
FROM sys.objects
WHERE type IN ('FN', 'IF', 'TF') 
AND name = 'dgdsgds'

1
ฉันขอให้คุณเพิ่มบริบทเพิ่มเติมในคำตอบของคุณได้ไหม คำตอบแบบรหัสเท่านั้นยากที่จะเข้าใจ มันจะช่วยผู้ถามและผู้อ่านในอนาคตทั้งสองหากคุณสามารถเพิ่มข้อมูลเพิ่มเติมในโพสต์ของคุณ
RBT

0

คุณสามารถใช้สิ่งนี้เพื่อตรวจสอบวันที่แก้ไขfunctionsและจัดstored proceduresเรียงตามวันที่:

SELECT 'Stored procedure' as [Type] ,name, create_date, modify_date 
FROM sys.objects
WHERE type = 'P' 

UNION all

Select 'Function' as [Type],name, create_date, modify_date
FROM sys.objects
WHERE type = 'FN'
ORDER BY modify_date DESC

หรือ :

SELECT type ,name, create_date, modify_date 
FROM sys.objects
WHERE type in('P','FN') 
ORDER BY modify_date DESC
-- this one shows type like : FN for function and P for stored procedure

ผลลัพธ์จะเป็นดังนี้:

Type                 |  name      | create_date              |  modify_date
'Stored procedure'   | 'firstSp'  | 2018-08-04 07:36:40.890  |  2019-09-05 05:18:53.157
'Stored procedure'   | 'secondSp' | 2017-10-15 19:39:27.950  |  2019-09-05 05:15:14.963
'Function'           | 'firstFn'  | 2019-09-05 05:08:53.707  |  2019-09-05 05:08:53.707
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.