Yon*_*Kim 2 sql t-sql sql-server azure azure-sql-database
我需要删除所有外部表,因为我需要重新创建外部数据源。但是,您不能删除带有使用该特定数据源的外部表的外部数据源。但是,我不想输入所有表的名称来删除它们。
我搜索了 Stack Overflow,实际上无法找到这个特定问题的答案。我找到了关于删除所有表的更一般问题的答案,并且能够修改解决方案。我提出这个问题是为了记录我能够创建的解决方案,因此您想知道这个特定问题或使用更通用的方法删除 SQL DB 的元素,您可以使用此解决方案。
我能够通过修改P????? 的这个答案中的解决方案来获得这个解决方案。
DECLARE @sql NVARCHAR(max)=''
SELECT @sql += ' DROP EXTERNAL TABLE ' + QUOTENAME(S.name) + '.' + QUOTENAME(E.name) + '; '
FROM sys.external_tables E
LEFT JOIN sys.schemas S
ON E.schema_id = S.schema_id
Exec sp_executesql @sql
Run Code Online (Sandbox Code Playgroud)
但是,尽管此解决方案在大多数情况下都有效,但可能会因外部表名称中的意外字符而出错。因此,Dan Guzman 在评论中建议的这个替代方案将是一个更安全的替代方案。
DECLARE @SQL nvarchar(MAX) = ( SELECT STRING_AGG(N'DROP EXTERNAL TABLE ' + QUOTENAME(name), N';') + N';' FROM sys.external_tables );
EXECUTE sp_executesql @SQL;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1317 次 |
| 最近记录: |