DROP Database with WHERE Clause - TSQL

I want to delete any development databases that are older than 15 days by comparing the date column in the specified table.

Is there a way to write a DROP database query with a WHERE clause or do I need to do dynamic SQL?

Below is my SQL query:

DROP DATABASE IF EXISTS 
WHERE (SELECT ID FROM master.TableName
        WHERE Date < DATEADD(DAY, -15, GETDATE())
            AND ColumnName1 = 1
            AND ColumnName2 = 0)
+4
source share
2 answers

sp_MSforeachdb will run an instruction for each database.

exec sp_MSforeachdb 'IF EXISTS (SELECT ID FROM [?].dbo.TableName WHERE Date < DATEADD(DAY, -15, GETDATE()) AND ColumnName1 = 1 AND ColumnName2 = 0) DROP DATABASE [?];'
+2
source

Try this code:

   IF EXISTS
   (SELECT ID FROM master.TableName
    WHERE Date < DATEADD(DAY, -15, GETDATE())
        AND ColumnName1 = 1
        AND ColumnName2 = 0)
       Drop database ......
0
source

Source: https://habr.com/ru/post/1658734/


All Articles