0

DB内でいくつかの文字列を見つける必要がある場合がありますが、通常はホスト名またはIPアドレスです。

アクセスできるすべてのSybasedbオブジェクト(または少なくともすべてのテーブル)で文字列を検索するスクリプトはありますか。

4

2 に答える 2

1

sysobjects+カーソル+EXECUTEのクエリは機能します。ちょっとちょっと。

sp__map_object'SELECT * FROM%O where name like "bar%"'、'foo_%'

コードには非常に多くのバグ/問題/心配があり、投稿するのは気が進まないのですが、Sybaseの仲間の被害者にはある程度同情しています。

Rob Verschoorは、 http: //www.sypron.nl/new_ssp_dwn.htmlに多数の優れたストアドプロシージャを持っています。

pjjH

289:1>?sp__map_object
(1行が影響を受けます)
/ *
 *
 *これを実行するときは注意してください!!!
 *
 *sp__map_db.sqlの悲惨な警告のリストを参照してください
 *
 *各オブジェクトのストアドプロシージャで指定されたコマンドを実行します
 * @object_patを照合し、%Oの最初のインスタンスをそれで置き換えます
 * 名前。
 *
 *これはPerlで行うだけです。または、SQLをリファクタリングして、正常に機能するようにします
 *ユーザー、ログイン、データベース、オブジェクトの外積。
 *
 *ポール・ハリントン
 *
 * /
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
なので
始める
  カウントをオンに設定
  DECLARE object_cursor CURSOR
  にとって
    SELECTDISTINCT名
    FROM sysobjects
    WHERE名LIKE@objpat
      ANDタイプLIKE@type
  DECLARE @munged_sql VARCHAR(255)

  DECLARE @object_name varchar(64)
  OPEN object_cursor
  FETCH object_cursor INTO @object_name
  WHILE @@ sqlstatus = 0
  始める
    IF CHARINDEX('%O'、@sql)0
    SELECT @munged_sql = SUBSTRING(@sql、1、CHARINDEX('%O'、@sql)-1)+
                  @object_name +
                  SUBSTRING(@sql、CHARINDEX('%O'、@sql)+ 2、255)
    そうしないと
      SELECT @munged_sql = @sql

    IF(@do_it=0または@verbose=1)
    始める
       DECLARE @msg varchar(255)
       SELECT @msg = @munged_sql
       SELECT @msg
    終わり

    IF @do_it = 1
        EXECUTE(@munged_sql)
    FETCH object_cursor INTO @object_name
  終わり
  object_cursorを閉じる
  DEALLOCATE CURSOR object_cursor
  カウントオフを設定
終わり

行く
于 2009-05-28T21:36:56.427 に答える
0

私がネイティブに知っていることはありません。システムテーブルをクエリしてオブジェクトのリストを取得するプロシージャをロールし、カーソルを通過させて、指定された検索条件についてそれらのオブジェクトをクエリすることができます。

于 2009-05-12T22:32:35.377 に答える