翻譯|使用教程|編輯:鮑佳佳|2021-01-06 14:54:04.673|閱讀 418 次
概述:歡迎閱讀我們系列文章的第四部分,這將幫助您發現如何設計和使用數據庫。這次,我們將深入研究SQL Server中復雜的數據和對象搜索問題,將首先在標準腳本的幫助下進一步進行此操作,然后再使用dbForge Search工具進行進一步的操作。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
dbForge Studio for SQL Server為有效的探索、分析SQL Server數據庫中的大型數據集提供全面的解決方案,并設計各種報表以幫助作出合理的決策。
點擊下載dbForge Studio for SQL Server最新試用版
使用標準腳本在SQL Server中進行數據和對象搜索
讓我們首先展示如何在標準腳本的幫助下執行此操作。
您可以使用以下腳本在數據庫中搜索Employee表:
select [object_id], [schema_id],
schema_name([schema_id]) as [schema_name],
[name], [type], [type_desc],
[create_date],
[modify_date] from sys.all_objects where [name]='Employee'
該腳本的結果如下:
圖1。Employee表的搜索結果
它顯示:
要查找“項目”字符串的所有條目,可以使用以下腳本:
select [object_id], [schema_id],
schema_name([schema_id]) as [schema_name],
[name],
[type],
[type_desc],
[create_date],
[modify_date] from sys.all_objects where [name] like '%Project%'
結果將是下表的輸出:
圖2。所有數據庫對象中“ Project”子字符串的搜索結果
如結果所示,“ Project”字符串不僅包含在Project和ProjectSkill表中,而且還包含在一些主鍵和外部鍵中。
要了解哪個表包含這些鍵,我們通過執行以下操作,將parent_object_id字段,其名稱以及它所在的模式添加到輸出中:
select ao.[object_id], ao.[schema_id],
schema_name(ao.[schema_id]) as [schema_name], ao.parent_object_id,
p.[schema_id] as [parent_schema_id],
schema_name(p.[schema_id]) as [parent_schema_name],
p.[name] as [parent_name],
ao.[name],
ao.[type],
ao.[type_desc],
ao.[create_date],
ao.[modify_date] from sys.all_objects as ao left outer join sys.all_objects as p on ao.[parent_object_id]=p.[object_id] where ao.[name] like '%Project%'
結果將是帶有有關父對象的詳細信息的表輸出,這意味著在其中指定了主鍵和外鍵:
圖3。帶有父對象詳細信息的所有數據庫對象中“ Project”子字符串的搜索結果。
在查詢中使用以下系統對象:
通過此解決方案,您可以在所有數據庫表中找到字符串值。讓我們簡化此解決方案,并顯示如何使用以下腳本查找值“ Ramiro”:
set nocount on declare @name varchar(128), @substr nvarchar(4000), @column varchar(128) set @substr = '%Ramiro%'
declare @sql nvarchar(max);
create table #rslt (table_name varchar(128), field_name varchar(128), [value] nvarchar(max)) declare s cursor for select table_name as table_name from information_schema.tables where table_type = 'BASE TABLE' order by table_name open s fetch next from s into @name while @@fetch_status = 0 begin declare c cursor for select quotename(column_name) as column_name from information_schema.columns
where data_type in ('text', 'ntext', 'varchar', 'char', 'nvarchar', 'char', 'sysname', 'int', 'tinyint') and table_name = @name set @name = quotename(@name) open c fetch next from c into @column while @@fetch_status = 0 begin --print 'Processing table - ' + @name + ', column - ' + @column set @sql='insert into #rslt select ''' + @name + ''' as Table_name, ''' + @column + ''', cast(' + @column + ' as nvarchar(max)) from' + @name + ' where cast(' + @column + ' as nvarchar(max)) like ''' + @substr + '''';
print @sql; exec(@sql); fetch next from c into @column;
end close c deallocate c fetch next from s into @name end select table_name as [Table Name], field_name as [Field Name], count(*) as [Found Mathes] from #rslt group by table_name, field_name order by table_name, field_name drop table #rslt close s deallocate s
輸出可能如下:
圖4。數據庫搜索結果
在此,輸出顯示表的名稱,哪些列存儲包含子字符串“ Ramiro”的值,以及找到的匹配表列的該子字符串的找到的輸出數。
要查找其定義包含給定代碼片段的對象,可以使用以下系統視圖:
例如,使用最后一個視圖,可以借助以下腳本找到其定義包含給定代碼片段的所有對象:
select obj.[object_id], obj.[name], obj.[type_desc], sc.[text] from sys.syscomments as sc inner join sys.objects obj on sc.[id]=obj.[object_id] where sc.[text] like '%code snippet%'
在這里,輸出顯示對象的標識符,名稱,描述和完整定義。
使用dbForge搜索來搜索數據庫數據和對象
在現成的便捷工具的幫助下搜索數據和對象要方便得多。dbForge Search就是這樣的工具之一。
要調用此工具,請在SSMS窗口中按dbForge搜索。搜索窗口出現:
圖。5 dbForge搜索的搜索窗口
您可以注意頂部面板(從左到右),因為您可以更改:
圖6。搜索方式
你也可以:
圖7。選擇對象類型進行搜索
這是對象搜索模式,即包含DDL時:
圖8。按DDL對象搜索
在數據搜索模式下,唯一不同的是對象類型選擇:
圖9。依資料搜尋
也就是說,只有存儲數據的表可供選擇:
圖10。選擇表進行數據搜索
現在,以與以前相同的方式,讓我們在對象名稱中找到所有“ Project”子字符串條目:
圖11。數據庫對象名稱中所有“項目”字符串條目的搜索結果
顯然,搜索模式是由DDL對象設置的,我們正在尋找“ Project”字符串,因此已將其填充,其他所有內容均保留為默認設置。
選擇檢索到的對象時,您可以在下面看到給定對象及其父對象的定義代碼。
同樣,您可以通過按如下所示的按鈕將導航切換到檢索到的對象:
圖12。將導航移至檢索到的對象
您還可以按其類型對找到的對象進行分組:
圖13。按類型分組的對象進行搜索的結果
請注意,甚至會顯示包含名稱中包含“ Project”子字符串的字段的表。但是,讓我提醒您,可以更改搜索模式:搜索全部匹配或部分匹配,區分大小寫。
現在,讓我們在所有表中查找“ Ramiro”值:
圖14。所有數據庫數據中“ Ramiro”子字符串的搜索結果
請注意,將顯示所選Employee表上所有包含“ Ramiro”子字符串的字符串。
同樣,您可以像以前一樣通過按下下面顯示的按鈕將導航切換到找到的對象:
圖15。將導航移至找到的對象
結果,我們可以在數據庫中搜索所需的對象和數據。
點擊下載dbForge Studio for SQL Server,并通過30天免費試用版自行檢查此功能!現dbForge Studio SQL Sever直降3000,在線訂購正版授權最低只要1710元!
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: