0

我正在对特定表 MyTable 进行一些测试,我需要删除与 MyTable 无关的数据库的所有表/属性。

我将如何使用脚本和/或在 SQL Server Management Studio (2012) 中执行此操作?

免责声明:这仅在本地测试环境中,无需任何人担心产品问题。

4

1 回答 1

0

您可以编写一个快速光标来删除不在这个方便脚本结果中的所有内容:

WITH DepTree (referenced_id, referenced_name, referencing_id, referencing_name, NestLevel)
AS 
(
SELECT  o.[object_id] AS referenced_id , 
 o.name AS referenced_name, 
 o.[object_id] AS referencing_id, 
 o.name AS referencing_name,  
 0 AS NestLevel
FROM  sys.objects o 
WHERE o.name = 'dim_table_name'

UNION ALL

SELECT  d1.referenced_id,  
 OBJECT_NAME( d1.referenced_id) , 
 d1.referencing_id, 
 OBJECT_NAME( d1.referencing_id) , 
 NestLevel + 1
 FROM  sys.sql_expression_dependencies d1 
JOIN DepTree r ON d1.referenced_id =  r.referencing_id
)
SELECT DISTINCT referenced_id, referenced_name, referencing_id, referencing_name, NestLevel
FROM DepTree WHERE NestLevel > 0
ORDER BY NestLevel, referencing_id; 
于 2015-10-23T00:43:46.203 回答