[英]How can I find out which tables are in a view (SQL Server Management Studio)
[英]How can i find out which tables in which databases have a column with a given name in SQL Server Management Studio?
在SQL Server 2016 Management Studio中,我有多個數據庫。
我想找出數據庫中的哪些表具有名稱包含字符串的列。 我怎樣才能做到這一點?
是否可以在“對象資源管理器”窗口中搜索?
您將需要迭代服務器上的數據庫,
SELECT name FROM master.dbo.sysdatabases
使用以下命令對每個命令執行以下命令
select table_name,COLUMN_NAME
from INFORMATION_SCHEMA.columns
where COLUMN_NAME like '% XXX %'
用游標做
CREATE TABLE #tmpList (DatabaseName varchar(64),TableName varchar(64))
DECLARE @DbName varchar(64)
DECLARE @sql nvarchar(max)
DECLARE @ColCursor CURSOR
SET @colCursor = CURSOR FOR
SELECT [name] FROM master.dbo.sysdatabases
OPEN @ColCursor
FETCH NEXT FROM @ColCursor INTO @DBName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = 'INSERT INTO #tmpList '+
'SELECT '''+@DbName+''',table_Name FROM '+@dbName+'.INFORMATION_SCHEMA.columns where COLUMN_NAME like ''% XXX %'' '
EXEC(@sql)
FETCH NEXT FROM @ColCursor INTO @DBName
END
CLOSE @ColCursor;
select * from #tmpList
drop table #tmpList
您可以使用sp_MSForeeachdb
這種方法將為服務器上的每個數據庫收集INFORMATION_SCHEMA.COLUMNS
Select * Into #TempFields From INFORMATION_SCHEMA.COLUMNS where 1=0
Declare @SQL varchar(max)=';Use [?]; Insert Into #TempFields Select * From INFORMATION_SCHEMA.COLUMNS '
Execute master.sys.sp_MSforeachdb @SQL
Select * from #TempFields
Where Column_Name Like '%XYZ%'
編輯-請求的評論
第一個查詢創建一個EMPTY結構來保存Information_Schema
然后,我們使用DECLARE @SQL,其中包含要對每個數據庫執行的SQL。 注意;使用[?];
然后我們只需選擇#Temp表以獲得所需的結果
在每個數據庫上運行以下命令,或使用cursor
和dynamic sql
迭代每個數據庫
select A.name,B.name From sys.objects as A
inner join sys.all_columns as B
on B.object_id = A.object_id
where A.type = 'U' and B.name = ...
更新:對於模糊查找,請使用B.name like '%serarch_pttern%
, %
表示任何前導或尾隨字符
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.