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

Sql server 在SQL Server 2000的所有数据库表中搜索字符串,sql-server,sql-server-2000,Sql Server,Sql Server 2000,关于这个问题,在很多地方都有很多答案,例如: 但是,我正在使用SQL Server 2000,需要做同样的事情:搜索数据库中的所有表以查找特定字符串。其他答案中的SQL是您的问题,还是您找不到用于运行它的程序?是的,是关于其他答案中的SQL。我的意思是,我无法让它们在SQL Server 2000上运行。请尝试以下链接:那么,考虑到您决定尝试的SQL(另一个问题的公认答案?),您(特别是)遇到了什么问题在SQL2000中,它的可用性看起来并不遥远。您应该编辑您的问题,以包括您决定使用的代码,并

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


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

其他答案中的SQL是您的问题,还是您找不到用于运行它的程序?是的,是关于其他答案中的SQL。我的意思是,我无法让它们在SQL Server 2000上运行。请尝试以下链接:那么,考虑到您决定尝试的SQL(另一个问题的公认答案?),您(特别是)遇到了什么问题在SQL2000中,它的可用性看起来并不遥远。您应该编辑您的问题,以包括您决定使用的代码,并说明您在转换它时遇到的问题。目前,我们不知道您实际要运行的是什么。我看到您链接到的代码中唯一明显的问题是
sys.objects
(例如)是SQL 2000中的
sysobjects
。但是这些不同之处在于,修改代码应该很容易。在其他答案中,是您的SQL问题,还是您找不到用于运行SQL的程序?是的,其他答案中的SQL问题。我的意思是,我无法让它们在SQL Server 2000上运行。请尝试以下链接:那么,考虑到您决定尝试的SQL(另一个问题的公认答案?),您(特别是)遇到了什么问题在SQL2000中,它的可用性看起来并不遥远。您应该编辑您的问题,以包括您决定使用的代码,并说明您在转换它时遇到的问题。目前,我们不知道您实际要运行的是什么。我看到您链接到的代码中唯一明显的问题是
sys.objects
(例如)是SQL 2000中的
sysobjects
。但是这些差异是很明显的,所以修改代码应该很容易。
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;