59 messaggi dal 19 ottobre 2012
Buongiorno,
sto impazzendo a trovare una soluzione ad un problema che devo risolvere ma non ce la faccio proprio e spero possiate aiutarmi.
C'è un modo attraverso una query di identificare i Database aggiunti alla data di interrogazione rispetto all'ultimo Db installato?
Io sono partito da sys.databases prendendo la created_date ma non riesco a gestire la condizione.
Grazie

Giorgio BERTOCCHI
59 messaggi dal 19 ottobre 2012
Giusto per completezza, questa è la prova di query per l'estrazione delle date diverse da oggi:


select create_date
from sys.databases
where create_date <> (select max (create_date) from sys.databases)


ma già questa non funziona perchè mi estrae anche quella odierna che non dovrebbe


Giorgio
salve Giorgio,
probabilmente NON ho capito la domanda...
>identificare i Database aggiunti alla data di interrogazione rispetto all'ultimo Db installato?
l'ultimo DB creato/attaccato sara' ovviamente "l'ultimo", quindi non ci possono essere "Database aggiunti" dopo di questo... ma solo db create/attaccati prima...
quindi, ma ripeto che sicuramente NON ho capito la domanda, potro' interrogare sys.databases per sapere quali database sono stati attaccati/creati in una finestra temporale di d secondi/ore/minuti/giorni a me interessante (NON lo stesso orario preciso in quanto non fisicamente possibile)...
quindi, ad esempio, cerchiamo i db che sono stati creati NON piu' di 10 minuti prima dell'ultimo db creato:
USE master;
GO
CREATE DATABASE a1;
GO
CREATE database a2;
GO
SELECT name, create_date
  FROM sys.databases;
GO
DECLARE @date datetime = NULL;
SELECT @date = MAX (create_date)
  FROM sys.databases;

SELECT d.name AS [Ultimo DB creato], @date AS ['data creazione dell''ultimo database']
  FROM sys.databases d
  WHERE d.create_date = @date;

PRINT 'definizione dello scostamento massimo temporale dalla creazione dell''ultimo database in Minuti/Ore/....';
PRINT '  di seguito,  la richiesta e'' in minuti..';

DECLARE @rangeWindow int = 10;
SELECT d.name AS [Nome DB creato nell'arco temporale massimo], d.create_date
  FROM sys.databases d
  WHERE DATEDIFF(MI, d.create_date, @date) <= @rangeWindow
    AND d.create_date <> @date;
GO
DROP DATABASE a1;
GO
DROP DATABASE a2;

------------
Ultimo DB creato        'data creazione dell''ultimo database'
----------------------- --------------------------------------
a2                      2018-04-20 12:23:41.600


definizione dello scostamento massimo temporale dalla creazione dell'ultimo database in Minuti/Ore/....
  di seguito,  la richiesta e' in minuti..
Nome DB creato nell'arco temporale massimo    create_date
--------------------------------------------- -----------------------
a1                                            2018-04-20 12:23:41.177


ma ovviamente NON ho capito la domanda :D
salutoni

Andrea Montanari
http://www.hotelsole.com - http://www.hotelsole.com/asql/index.php
59 messaggi dal 19 ottobre 2012
Grazie Andrea,
la strada è quella giusta ed effettivamente mi sa che ho posto male la domanda. Te la spiego con un esempio:

Ho un'istanza dove ho i databases:

A
B
C
D

quando sono stati creati a me non interessa perchè sono già presenti.
Oggi arriva Tizio che installa il database E. Lunedì io voglio controllare se sull'Istanza qualcuno ha installato un nuovo Db. Con la Query che richiedo mi dovrei trovare il db E con la data di oggi (e l'orario).

Ma ripeto che quello che hai inviato sia già un buon risultato e ti ringrazio

Giorgio
45 messaggi dal 09 febbraio 2005
Ciao,

forse, se applicabile al tuo caso, potrebbe esserti utile il sseguente link
dove c'è un esempio di trigger DDL ( cerca FOR CREATE_DATABASE )

https://docs.microsoft.com/it-it/sql/relational-databases/triggers/ddl-triggers

HTH
Modificato da sspintux il 20 aprile 2018 22.35 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.