Ich möchte herausfinden, welche gespeicherte Prozedur ich erstellt habe. Außerdem möchte ich herausfinden, welche gespeicherte Prozedur ich in meinem SQL Server an einem bestimmten Datum wie dem 27. September 2012 (27/09/2012) geändert habe.
Gibt es eine Abfrage, die diese Prozeduren auflistet, die an diesem Datum erstellt und auch geändert wurden?
Sie können diese Abfrage in einer beliebigen SQL Server-Datenbank versuchen:
SELECT
name,
create_date,
modify_date
FROM sys.procedures
WHERE create_date = '20120927'
in dem ist der Name, die Erstellung und das letzte Änderungsdatum aufgeführt - leider wird nicht who erfasst und/oder die betreffende gespeicherte Prozedur geändert.
Hier ist die "neuere Schule" Version.
SELECT * FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_TYPE = N'PROCEDURE' and ROUTINE_SCHEMA = N'dbo'
and CREATED = '20120927'
SELECT name
FROM sys.objects
WHERE type = 'P'
AND (DATEDIFF(D,modify_date, GETDATE()) < 7
OR DATEDIFF(D,create_date, GETDATE()) < 7)
SELECT * FROM sys.objects WHERE type='p' ORDER BY modify_date DESC
SELECT name, create_date, modify_date
FROM sys.objects
WHERE type = 'P'
SELECT name, crdate, refdate
FROM sysobjects
WHERE type = 'P'
ORDER BY refdate desc
Die erste Abfrage wurde für weitere Objekte geändert: Tabellen, Ansichten, UDF, SP usw. Sie können eigene Objekttypen hinzufügen.
DECLARE @OldSchema AS VARCHAR(255);
DECLARE @NewSchema AS VARCHAR(255);
SET @OldSchema = 'dbo';
SET @NewSchema = 'new_dbo';
DECLARE @sql AS VARCHAR(MAX);
DECLARE @sqlTmp AS VARCHAR(MAX);
SET @sql = 'CREATE SCHEMA [' + @NewSchema + ']' + CHAR(13) + CHAR(10);
PRINT @sql;
DECLARE @a INT = 1;
WHILE ( @a < 1000000 )
BEGIN
SET @sqlTmp = '';
SELECT @sqlTmp = 'ALTER SCHEMA [' + @NewSchema + '] TRANSFER ['
+ s_name + '].[' + o_name + ']'
FROM ( SELECT s.name s_name ,
o.name o_name ,
ROW_NUMBER() OVER ( ORDER BY o.object_id ) r
FROM sys.objects o
JOIN sys.schemas s ON o.schema_id = s.schema_id
WHERE s.name = @OldSchema
AND o.type IN ( 'P', 'U', 'V', 'IF', 'TF', 'FN' )
) a
WHERE r = @a;
IF ( @@ROWCOUNT = 0 )
SET @a = 100000000;
SET @a = @a + 1;
SET @sql = @sql + COALESCE(@sqlTmp, '') + CHAR(13) + CHAR(10);
PRINT @sqlTmp;
END;
SET @sql = @sql + 'DROP SCHEMA [' + @OldSchema + ']';
PRINT 'DROP SCHEMA [' + @OldSchema + ']';
Für SQL Server 2012:
SELECT name, modify_date, create_date, type
FROM sys.procedures
WHERE name like '%XXX%'
ORDER BY modify_date desc