0
A
回答
0
沒有辦法在SQL Server管理工作室中搜索對象。有可用於搜索對象的視圖和表格,如:
SELECT * FROM sys.tables WHERE name LIKE '%...%'
要搜索表格。
如果您的意思是,在表格內搜索數據,我需要學習T-SQL。
0
有非免費的第三方工具(例如Redgate的SQL Search),但我使用下面的proc。你必須在每一個[主]數據庫中創建PROC所以它的可用服務器範圍內,但你可以在搜索詞和一個可選的數據庫名稱傳遞(否則它會搜索所有數據庫中的對象定義):
USE [master]
GO
/****** Object: StoredProcedure [dbo].[sp_FindTextOnServer] Script Date: 10/6/2017 3:39:19 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*-----------------------------------------------------------
This procedure will search all or a specified database objects
for the supplied text and return a table with the values
Examples:
EXEC sp_FindTextOnServer 'Billing', 'fcsCore'
EXEC sp_FindTextOnServer 'vJurisdiction'
-----------------------------------------------------------*/
ALTER PROCEDURE [dbo].[sp_FindTextOnServer]
@text VARCHAR(40),
@searchDB VARCHAR(100) = NULL
AS
DECLARE @DisplayText VARCHAR(100),
@sSql VARCHAR(1000),
@line VARCHAR(300),
@char CHAR,
@lineNo INTEGER,
@counter INTEGER,
@AddedRecord BIT,
@dbObjectType VARCHAR(100),
@dbObject VARCHAR(100),
@ObjectBody VARCHAR(7000),
@dbName VARCHAR(100)
SET @DisplayText = @Text
SET @text = '%' + @text + '%'
SET @AddedRecord = 0
CREATE TABLE #SearchResults
(
DBName VARCHAR(100) NOT NULL,
ObjectType VARCHAR(100) NOT NULL,
ObjectName VARCHAR(100) NOT NULL,
Line INT NOT NULL,
Reference VARCHAR(7000) NOT NULL
)
CREATE TABLE #tempSysComments
(
DBName VARCHAR(100),
DBObjectType VARCHAR(100),
DBObject VARCHAR(100),
TextString text
)
--Populate a table with the search results from all databases on the server that include the searched text
SET @sSql = 'USE [?]
SELECT
''?'' AS DBName,
LOWER(REPLACE(o.type_desc, ''_'', '' '')) + '' ('' + RTRIM(type) + '')'' AS DBObjectType,
OBJECT_NAME(sm.object_id) AS DBObject,
CAST(sm.definition AS VARCHAR(7000)) AS TextString
FROM sys.sql_modules AS sm
JOIN sys.objects AS o
ON sm.object_id = o.object_id
WHERE CAST(sm.definition AS VARCHAR(7000)) LIKE ''' + @text + '''
ORDER BY o.type_desc, OBJECT_NAME(sm.object_id)'
IF (@searchDB IS NULL)
BEGIN
INSERT INTO #tempSysComments
EXEC sp_MSFOREachDB @sSql
END
ELSE
BEGIN
SET @sSql = REPLACE(@sSql, '?', @searchDB)
INSERT INTO #tempSysComments
EXEC (@sSql)
END
DECLARE codeCursor CURSOR
FOR
SELECT DBName, DBObjectType, DBObject, TextString
FROM #tempSysComments
WHERE DBName IS NOT NULL
OPEN codeCursor
FETCH NEXT FROM codeCursor INTO @dbName, @dbObjectType, @dbObject, @ObjectBody
IF @@FETCH_STATUS <> 0
BEGIN
PRINT 'Text ''' + @DisplayText + ''' was not found in objects on server ' + @@SERVERNAME
-- Close and release code cursor.
CLOSE codeCursor
DEALLOCATE codeCursor
RETURN
END
-- Search each object within code cursor.
WHILE @@FETCH_STATUS = 0
BEGIN
SET @lineNo = 0
SET @counter = 1
-- Process each line.
WHILE (@counter <> Len(@ObjectBody))
BEGIN
SET @char = SUBSTRING(@ObjectBody, @counter,1)
-- Check for line breaks.
IF (@char = CHAR(13))
BEGIN
SET @lineNo = @lineNo + 1
-- Check if we found the specified text.
IF (PATINDEX(@text, @line) <> 0)
BEGIN
SET @AddedRecord = 1
INSERT #SearchResults
SELECT @dbName, @dbObjectType, @dbObject, @lineNo, LEFT(RTRIM(LTRIM(@line)), 7000)
END
SET @line = ''
END
SET @line = @line + @char
SET @counter = @counter + 1
END
IF (@AddedRecord = 0)
INSERT #SearchResults
SELECT @dbName, @dbObjectType, @dbObject, 0, SUBSTRING(@ObjectBody, 1, 7000)
SET @AddedRecord = 0
FETCH NEXT FROM codeCursor INTO @dbName, @dbObjectType, @dbObject, @ObjectBody
END
-- Close and release cursor.
CLOSE codeCursor
DEALLOCATE codeCursor
-- Return the info.
SELECT DISTINCT DBName, ObjectType, ObjectName, Line, RTRIM(LTRIM(REPLACE(REPLACE(Reference, CHAR(9), ' '), CHAR(13)+CHAR(10), ' '))) AS Reference
FROM #SearchResults
ORDER BY DBName, ObjectType, ObjectName, Line
-- Cleanup.
DROP TABLE #SearchResults
DROP TABLE #tempSysComments
RETURN
+0
Redgate SQL Search *是免費的(而且非常有用),實際上,我認爲它是Redgate唯一的免費工具:-)。無論如何,我認爲OP會詢問如何在數據庫的任何字段中搜索數據。 –
相關問題
- 1. 如何從Sql Server DataBase中搜索記錄?
- 2. 在C#Windows窗體應用程序中搜索Microsoft Access記錄?
- 3. SQL&C#搜索記錄並期望記錄或一組記錄?
- 4. 搜索在SQL Server問題
- 5. 搜索與SQL Server
- 6. SQL Server - 更快的記錄檢索
- 7. 如何在RoR中搜索記錄?
- 8. Sql以百萬記錄搜索。可能?
- 9. 正在搜索記錄
- 10. ASP.NET中的Microsoft Search Server或Microsoft搜索服務
- 11. 搜索SQL Server行以查找包含在搜索字符串中的記錄是否使用ASP
- 12. 在SQL Server中搜索可用日期
- 13. 在SQL Server中全文搜索
- 14. EMPTY_CLOB()在Microsoft SQL Server
- 15. SQL列搜索問題(SQL Server 2005中)
- 16. 前綴在Mysql中搜索記錄
- 17. 在SQL Server中計數記錄
- 18. 在SQL Server表中選擇記錄
- 19. 在SQL Server中展開記錄集?
- 20. 在VB.NET中使用SQL語言記錄搜索腳本
- 21. SQL Server文本搜索
- 22. .Net和sql server搜索
- 23. 搜索SQL Server元數據
- 24. SQL Server 2008搜索日期
- 25. SQL Server搜索和orderby
- 26. sql server - 全文搜索
- 27. SQL Server 2008 - 搜索查詢
- 28. MS訪問SQL Server搜索
- 29. SQL Server全文搜索
- 30. LINQ的 - 搜索表記錄中包含搜索字符串
按下CTRL + T並運行您的查詢。結果會以文本形式輸出,那麼你可以搜索 – FLICKER
你能澄清一下這個問題嗎?您想要搜索查詢返回的結果或搜索所有數據庫中的某些數據?或者你想在表格/視圖/等搜索。定義? –