有沒有辦法在存儲過程中搜索文本?例如,我想知道某個表是否被任何存儲過程引用。在SQL Management Studio 2005中搜索
回答
用途:
SELECT OBJECT_NAME(m.object_id), m.*
FROM SYS.SQL_MODULES m
WHERE m.definition like N'%text_youre_looking_for%'
SYSCOMMENTS
和INFORMATION_SCHEMA.routines
有NVARCHAR(4000)列。所以如果在位置3998使用「text_youre_looking_for」,它將不會被找到。 SYSCOMMENTS
確實有多行,但是截斷了INFORMATION_SCHEMA.routines
。
SELECT
OBJECT_SCHEMA_NAME(object_id) + '.' + OBJECT_NAME(object_id)
FROM
sys.sql_modules
WHERE
definition like '%whatever%'
syscomments中是傳統和分裂定義爲nvarchar的這樣4000塊冒着沒有找到你想要的東西。這同樣適用於INFORMATION_SCHEMA.ROUTINES
+1,'OBJECT_SCHEMA_NAME()'比聯接到sys.objects然後sys.schemas更好! – 2010-10-21 19:24:55
您可以編寫腳本並搜索腳本。
我的同事最近向我推薦了這個。它正如其他人注意到一些類似的搜索,但有一點更增加。
DECLARE
@chvStringToFind varchar(256), /* String to find */
@chrObjectType char(2),--=null, /* Only look for objects of this type */
@intNbCharToExtract int
--=50 /* Number of characters to extract before and after the string to find */
--exec DBA_FindStringInDB @chvStringToFind='sp_helpdia', @chrObjectType=null, @intNbCharToExtract=50
SET @chvStringToFind = 'EnterSearchTextHere' -- Change this to search
SET @chrObjectType = NULL
SET @intNbCharToExtract = 50
SELECT t.Name, t.TypeDescription, t.CreationDate, t.ModificationDate,
'...' + SUBSTRING
(
t.ObjectDefinition,
CHARINDEX(@chvStringToFind, t.ObjectDefinition) - @intNbCharToExtract,
LEN(@chvStringToFind) + (@intNbCharToExtract*2)
) + '...' AS Extract
FROM
(
SELECT o.name AS Name,
o.type_desc AS TypeDescription,
o.create_date AS CreationDate, o.modify_date AS ModificationDate,
OBJECT_DEFINITION(object_id) AS ObjectDefinition
FROM sys.objects o
WHERE
((o.type IN ('AF', 'FN', 'IF', 'P', 'TF', 'TT', 'U', 'V', 'X') AND @chrObjectType IS NULL) OR o.type = @chrObjectType)
AND OBJECT_DEFINITION(o.object_id) LIKE '%' + @chvStringToFind + '%'
) AS t
ORDER BY TypeDescription, Name
紅門有一個名爲Sql Search是我比較喜歡的免費工具。它保留了一個索引,以便在第一次搜索後,它非常快速(甚至第一個非常好)。它可以搜索procs中的文本以及表格和視圖定義等。有一些過濾功能可以使它更容易使用。搜索結果以非常有用的方式顯示,並突出顯示對象的全文和搜索文本。
太棒了,我知道他們有一個,但不知道我不知道它是免費的。 – Prabhu 2010-10-21 20:00:51
+1優秀的公司工具 - 強烈推薦!不能再活下去了..... – 2010-10-21 20:35:10
- 1. 2005 SQL Server Management Studio
- 2. SQL Server Management Studio中2005 - 備份位置
- 3. SQL Server Management Studio 2005的SVN客戶端
- 4. 在SQL Server Management Studio Express中連接到SQL Server 2005數據庫
- 5. SQL在SQL Server Management Studio中
- 6. SQL 2005 XML搜索
- 7. 如何在SQL Server 2005 Management Studio中創建SQL Server 2005存儲過程模板?
- 8. 如何在SQL Management Studio 2005中創建腳本?
- 9. 僅在SQL Server 2005 Management Studio選項卡中顯示文件名
- 10. 在SQL Server Management Studio 2005中禁用「保存」提示
- 11. SQL列搜索問題(SQL Server 2005中)
- 12. SQL Server Management Studio
- 13. SQL 2005 - 搜索字符串
- 14. SQL Server Management Studio命令行?
- 15. 從SQL Server 2016到SQL Server Management Studio 2005的ETL
- 16. 我可以讓SQL 2008 Management Studio驗證SQL 2005的代碼嗎?
- 17. SQL Server Management Studio 2012仍在使用服務器2005實例
- 18. 外部工具開發SQL Server Management Studio中2005
- 19. SQL Server Management Studio中2005和源代碼控制
- 20. SQL Server Management Studio中2005年的「記住密碼」不工作
- 21. sql server management studio 2008
- 22. SQL Server Management Studio ZEROFILL
- 23. 我們可以在Sql Management Studio 2005中使用Sql server 2008新增功能嗎?
- 24. 的SQL Server 2014 Management Studio中
- 25. 的SQL Server 2014 Management Studio中
- 26. 在SQL Server 2005中搜索特殊字符2005
- 27. 在sql server 2005中全文搜索和xml內容2005
- 28. 錯誤:未能加載包'Microsoft SQL Management Studio包'。在SQL Server Management Studio中
- 29. 用於SQL Server 2000的SQL Sever Management Studio
- 30. Visual Studio 2005快速文件搜索
感謝您爲我設置直線。 – JNK 2010-10-21 19:16:51
@JNK:爲了記錄,我沒有讓你失望。 – 2010-10-21 19:17:24
@OMG - 沒有biggie,我發佈了一個錯誤的答案:) – JNK 2010-10-21 19:17:55