Tsql 如何在Sybase中查找包含字符串的所有db对象

Tsql 如何在Sybase中查找包含字符串的所有db对象,tsql,sybase,Tsql,Sybase,有时我需要在数据库中找到一些字符串,通常只是主机名或ip地址 是否有任何脚本可以在所有Sybase db对象中或至少在我有权访问的所有表中查找字符串。没有我本机知道的脚本。您可以滚动一个过程,查询系统表以获得对象列表,然后让光标遍历这些对象并根据给定的搜索条件查询这些对象。对sysobjects+cursor+EXECUTE的查询有效。有点像 sp__map_object 'SELECT * FROM %O where name like "bar%"', 'foo_%' 代码中有太多的bug/

有时我需要在数据库中找到一些字符串,通常只是主机名或ip地址


是否有任何脚本可以在所有Sybase db对象中或至少在我有权访问的所有表中查找字符串。

没有我本机知道的脚本。您可以滚动一个过程,查询系统表以获得对象列表,然后让光标遍历这些对象并根据给定的搜索条件查询这些对象。

对sysobjects+cursor+EXECUTE的查询有效。有点像

sp__map_object 'SELECT * FROM %O where name like "bar%"', 'foo_%' 代码中有太多的bug/问题/担忧,我不愿意发布它,但我对Sybase的一位患者同胞有一定的同情

Rob Verschoor在

pjjH

289:1> ? sp__map_object (1 row affected) /* * * BE CAREFUL WHEN RUNNING THIS!!! * * See list of dire warnings in sp__map_db.sql * * Run the given command on the stored procedure for each object * matching @object_pat and replacing the first instance of %O with that * name. * * Just do this in Perl. Or refactor the sql so that it works for some sane * cross-product of users,logins, databases and objects. * * Paul Harrington * */ CREATE PROCEDURE sp__map_object @sql VARCHAR(255) = 'sp__help', @objpat VARCHAR(32) = NULL, @type VARCHAR(2) = 'U', @do_it INT = 1, @verbose INT = 0 AS BEGIN SET NOCOUNT ON DECLARE object_cursor CURSOR FOR SELECT DISTINCT name FROM sysobjects WHERE name LIKE @objpat AND type LIKE @type DECLARE @munged_sql VARCHAR(255) DECLARE @object_name varchar(64) OPEN object_cursor FETCH object_cursor INTO @object_name WHILE @@sqlstatus = 0 BEGIN IF CHARINDEX('%O', @sql) 0 SELECT @munged_sql = SUBSTRING(@sql, 1, CHARINDEX('%O', @sql) - 1) + @object_name + SUBSTRING(@sql, CHARINDEX('%O', @sql) + 2, 255) ELSE SELECT @munged_sql = @sql IF (@do_it = 0 OR @verbose = 1) BEGIN DECLARE @msg varchar(255) SELECT @msg = @munged_sql SELECT @msg END IF @do_it = 1 EXECUTE(@munged_sql) FETCH object_cursor INTO @object_name END CLOSE object_cursor DEALLOCATE CURSOR object_cursor SET NOCOUNT OFF END go