SQL Serverは、(ライブラリ全体の検索コンテンツに)すべてのテーブルを検索します

SQL Serverのバージョン:SQL Server2008
ローカルデータベースに格納されて最終的に特定のコンテンツ?起動しないときは、完全なライブラリの検索を使用することができます。
SQL Serverの一時テーブルを使用し、すべてのテーブルのすべてのフィールド全体のライブラリ内のコンテンツを見つけるために、カーソルループ。

declare @Str nvarchar(max), @tableName varchar(50), @colName varchar(50), @rowCount int

select a.name tableName, b.name Colname, 0 as IsFound into #t1
from sysobjects a join syscolumns b on a.id=b.id join systypes c on b.xtype=c.xtype
where a.[type]='U' and c.name in ('varchar', 'nvarchar', 'char', 'nchar') --这里是设置字段的类型,以缩小范围

declare _c1 cursor for select Colname, tableName from #t1
open _c1
fetch next from _c1 into @colName, @tableName
while @@FETCH_STATUS=0 begin
--print @Str
	select @Str='select @rowCount=count(1) from ['+@tableName+'] where ['+@colName+'] like ''%TotalDsc%''' --这里是要查找的内容
	exec sp_executesql @Str, N'@rowCount int output', @rowCount output
	if @rowCount>0 update #t1 set IsFound=1 where ColName=@colName and tableName=@tableName
fetch next from _c1 into @colName, @tableName
end
close _c1
deallocate _c1
select * from #t1 where IsFound=1
drop table #t1

結果の解釈を検索:
tableNameの:テーブル名
COLNAME:列名
IsFound:投票された数
の恐れなくなったが、データベース内の見つけることができません。

おすすめ

転載: blog.csdn.net/jeesr/article/details/91367909