首页 > 解决方案 > 如果超过一天并且仅当它以某些字符开头时如何删除视图?

问题描述

我想从超过 1 天前创建的服务器中删除所有以“EXAMPLE_VIEW%”开头的视图。我该怎么做呢?

标签: sqlsql-serverviewssmssql-server-2016

解决方案


sys.views一种方法是使用您想要的标准从目录视图生成脚本。下面的示例XML PATH用于字符串连接,因为您使用的是 SQL Server 2016。可以STRING_AGG在 SQL Server 2017 及更高版本中使用。此示例还包括对dbo模式的检查,如果需要,您可以对其进行调整。

DECLARE @DropScript nvarchar(MAX) =
    STUFF(
        (SELECT
            N';DROP VIEW ' + QUOTENAME(OBJECT_SCHEMA_NAME(object_id)) + N'.' + QUOTENAME(name)
        FROM sys.views
        WHERE
            name LIKE N'WQB_VIEW%'
            AND OBJECT_SCHEMA_NAME(object_id) = N'dbo'
            AND create_date < DATEADD(day, -1, GETDATE())
        FOR XML PATH(''),TYPE).value('.','nvarchar(MAX)')
    ,1,1,'');
EXECUTE sp_executesql @DropScript;

推荐阅读