2013-03-06 87 views
2

我想從每個服務器/數據庫中刪除表。如何基於sys.objects刪除表?

我運行查詢以獲取來自不同服務器的每個數據庫中表的列表。

SELECT * 
FROM sys.objects 
WHERE type = 'u' AND name LIKE '%JSK%' 

我想刪除這些表。

我需要查詢如何做到這一點?

+0

哪些DBMS和啥子約dependances你不能單前下降的客戶,如果訂單有客戶ID,例如一個外鍵引用。 – 2013-03-06 19:06:16

+0

這些是用戶表,並沒有與特定的客戶端名稱JSK做生意。所以我們試圖放棄這些用戶表。我們已經在所有那些僅包含來自JSK的信息的表中檢查數據。 – ETLUser 2013-03-06 19:09:16

回答

5

假設沒有外鍵關係作出重要下探的順序:

DECLARE @sql NVARCHAR(MAX) = N''; 

SELECT @sql += N' 
DROP TABLE ' 
    + QUOTENAME(SCHEMA_NAME([schema_id])) 
    + '.' + QUOTENAME(name) + ';' 
FROM sys.tables 
WHERE name LIKE '%JSK%'; 

PRINT @sql; 
-- EXEC sp_executesql @sql;