2013-02-20 74 views
1

有很多答案,在这个问题的地方很多,如:搜索在SQL Server数据库中的所有表中的字符串2000

Search for a string in all tables, rows and columns of a DB

但是我使用SQL Server 2000和需要做的同样的事情:搜索数据库中的所有表以查找特定的字符串。

+0

是你的问题与SQL在其他答案,或者你找不到一个程序来运行它? – 2013-02-20 15:10:54

+0

是的,它是关于其他答案中的SQL。我的意思是我不能让他们为SQL Server 2000工作。 – Mtok 2013-02-20 15:13:40

+1

尝试此链接:http://www.richnetapps.com/searching_in_all_tables_and_columns_of_a/ – Pandian 2013-02-20 15:13:48

回答

2
DECLARE @SearchString VARCHAR(32); 
SET @SearchString = 'Something'; 

CREATE TABLE #results(o NVARCHAR(512), c SYSNAME, value NVARCHAR(4000)); 

DECLARE @sql NVARCHAR(4000), @o NVARCHAR(512), @c SYSNAME; 

DECLARE c CURSOR LOCAL FAST_FORWARD FOR 
    SELECT QUOTENAME(u.name) + '.' + QUOTENAME(o.name), QUOTENAME(c.name) 
FROM sysobjects AS o 
INNER JOIN syscolumns AS c ON o.id = c.id 
INNER JOIN sysusers AS u ON o.uid = u.uid 
WHERE c.xtype IN (35, 99, 167, 175, 231, 239) AND o.xtype = 'U'; 

OPEN c; 

FETCH c INTO @o, @c; 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    SET @sql = N'INSERT #Results(o,c,value) SELECT @o, @c, 
    CONVERT(NVARCHAR(4000), ' + @c + ') FROM ' + @o + ' WHERE ' 
    + @c + ' LIKE ''%' + @SearchString + '%'';'; 
    EXEC sp_executesql @sql, N'@o NVARCHAR(512), @c SYSNAME', @o, @c; 
    FETCH c INTO @o, @c; 
END 

CLOSE c; 
DEALLOCATE c; 

SELECT o, c, value FROM #Results; 

DROP TABLE #Results; 
相关问题