2014-01-17 53 views
-5

請,如果任何人都知道,那麼我提供查詢由完整的數據庫搜索數據來獲取表名和DB名..查詢SQL Server中的搜索數據來獲得表名20008

+4

看來,英語不是你的第一語言。爲了幫助人們瞭解您的問題,您可能需要提供問題的樣本以及所需的輸出。沒有人會急於回答一個構思不好的問題。 – MarkD

+0

如果可能,請嘗試使用RedGate SQL搜索以使其更容易。另外,搜索谷歌。這是你想要的 - 在sql server中找到表 – Steam

+0

請嘗試問一個好問題:http://stackoverflow.com/help/how-to-ask – NickyvV

回答

0

您可以搜索在數據庫如表名稱如下:

USE YourDatabaseName 

SELECT * 
FROM sys.Tables 
WHERE name LIKE '%SearchText%' 

您也可以搜索所有數據庫,如皮納爾戴夫介紹here一個表名:

CREATE PROCEDURE usp_FindTableNameInAllDatabase 
    @TableName VARCHAR(256) 
AS 

DECLARE @DBName VARCHAR(256) 
DECLARE @varSQL VARCHAR(512) 
DECLARE @getDBName CURSOR 

SET @getDBName = CURSOR FOR 
SELECT name 
FROM sys.databases 
CREATE TABLE #TmpTable (DBName VARCHAR(256), 
SchemaName VARCHAR(256), 
TableName VARCHAR(256)) 

OPEN @getDBName 
FETCH NEXT 
FROM @getDBName INTO @DBName 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    SET @varSQL = 'USE ' + @DBName + '; 
    INSERT INTO #TmpTable 
    SELECT '''+ @DBName + ''' AS DBName, 
    SCHEMA_NAME(schema_id) AS SchemaName, 
    name AS TableName 
    FROM sys.tables 
    WHERE name LIKE ''%' + @TableName + '%''' 
    EXEC (@varSQL) 
    FETCH NEXT 
    FROM @getDBName INTO @DBName 
END 
CLOSE @getDBName 
DEALLOCATE @getDBName 

SELECT * 
FROM #TmpTable 
DROP TABLE #TmpTable 
GO 

EXEC usp_FindTableNameInAllDatabase 'Address' 
GO