sql-server - 在SQL Server 2000数据库的所有表中搜索字符串

标签 sql-server sql-server-2000

关于这个问题,很多地方都有很多答案,例如:

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

但是,我使用的是 SQL Server 2000,并且需要执行相同的操作:在数据库中的所有表中搜索特定字符串。

最佳答案

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;

关于sql-server - 在SQL Server 2000数据库的所有表中搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14983082/

相关文章:

sql-server - 数据库的日志文件已满

mysql - 在 WHERE 子句中使用子查询结果

sql - 检查变量是否在SQL Server中包含任何非数字数字

sql-server-2008 - 如何处理存储过程以实现兼容性

sql - 如何在SQL中显示两个给定日期之间的所有日期

c# - SqlException : Cannot open database "path\db.mdf" requested by the login. 登录失败。用户 'NT AUTHORITY\SYSTEM' 登录失败

java - 是否可以在 sql server 上使用 jdbc 获取查询计划?

sql - 删除 SQL 中一对元素的顶行

sql - 找不到存储过程 'dbo.aspnet_CheckSchemaVersion'

SQL 查询 : See relationship between array of users and groups