2017-03-14 16 views
0

所有行我所期望的:如果不懂得如何選擇基於表 - 和數據庫名稱

我要創造我的SQL Server代理作業,讓我火了一個存儲過程來清理特定的表。該spu將採取兩個參數:TableNameDays

TableName將是我正在查找的表的名稱,而Days將是我希望刪除記錄的距離。

我做了什麼:

已經看了看四周後,在網上我發現就怎麼看,如果一個用戶數據庫保存所提供的表名來源: SELECT * FROM INFORMATION_SCHEMA.Tables WHERE TABLE_NAME = @TableName

這導致幾行看起來有點像這樣: TABLE_CATALOG | TABLE_SCHEMA |TABLE_NAME |TABLE_TYPE Database_A | table_schema |table_A |table_type

什麼,我不明白:

如何使用所導致的先前的查詢的行找到一個特定的數據庫提供的@TableName的所有行?在僞: SELECT * FROM table_A WHERE database = database_A

我知道我需要使用光標不知何故,這不是問題

我只是努力去理解的是,我如何使用數據庫名稱和表名來查找特定數據庫中表的行。

在我來說,我有10個左右的數據庫需要通過迭代找到初始數據集(其中@TableName存在的所有用戶數據庫),然後二次查詢找到在該@TableName的所有行數據庫目前指向的數據庫。

+0

請發表問題。但是,您將最需要動態SQL。我想你會遇到的問題是,當你將光標加載到一個可放大的象@TableToDeleteFrom並嘗試'DELETE FROM @ TableToDeleteFrom'時。這是行不通的。您必須使用連接字符串構建動態SQL語句。 – scsimon

+0

以下是與您的帖子相似的兩個很好的答案。 [Damien使用forEDBDB](http://stackoverflow.com/a/4733452/6167855)和[Pinal使用不同的方法](https://blog.sqlauthority.com/2008/04/29/sql-server-find -table-every-database-of-sql-server /) – scsimon

回答

-1

你必須做select * from ..table_A ,但你不能在一個簡單的TSQL中做到這一點。可能你可以生成一個子腳本並執行。

+1

這不是一個答案。 –

相關問題