Depolanan yordam sonuç kümesini Temp tablosuna ve sorgu temp tablosuna ekleyin

Aug 16 2020

Aşağıdakileri yapmaya çalışan depolanmış proc'um var:

  1. Sistem saklı yordamını (sp_monitorconfig) çalıştırın ve sonuç kümesini geçici bir tabloya yerleştirin.
  2. Bu geçici tablodan SEÇİN ve 2 özel sütun ekleyin (SOURCESERVER ve CollectionTime)
  3. Bu nihai sonuç kümesi, jdbc işi aracılığıyla Logstash'e aktarılacaktır.

Şu anda SAP ASE 16 (sybase) kullanıyorum ve 'exec' anahtar kelimesinde yanlış sözdizimi hatası alıyorum . Depolanan işlemin önekini almam gerekip gerekmediğinden emin değilim, ancak şu anda şaşkınım ve herhangi bir yardım için minnettarım.

USE db
GO
    CREATE PROCEDURE sp_active_con_ratio.sql AS
    DECLARE @servername varchar(32) DECLARE @collecttime DATETIME DECLARE @procparam varchar(32)
select
    @servername = @@servername
select
    @collecttime = getdate()
select
    @procparam = 'number of user connections' CREATE TABLE #TempUserConnections
    (
        TempName varchar(35),
        FreeConnections int,
        ActiveConnections int,
        PercentActive char(6),
        MaxUsed int,
        Reuse_cnt int,
        Instance_Name varchar(30) NULL
    )
INSERT INTO
    #TempUserConnections (TempName, FreeConnections, ActiveConnections, PercentActive, MaxUsed, Reuse_cnt, Instance_Name)
    exec sp_monitorconfig @procparam  **ERROR HERE**
SELECT
    @servername AS 'SOURCESERVER',
    FreeConnections,
    ActiveConnections,
    PercentActive,
    MaxUsed,
    @collecttime AS 'CollectionTime'
FROM
    #TempUserConnections
    DROP TABLE #TempUserConnections
    RETURN
GO

Teşekkürler!

Yanıtlar

markp-fuso Aug 17 2020 at 00:28

Operatörün sonuçların eklenmesi gereken bir tablo atamasına izin veren sp_monitorconfigisteğe bağlı bir girdi parametresine ( @result_tbl_name) sahip olduğunu unutmuştum .

Sp_monitorconfig'deki dokümantasyondan , Örnek # 8 ...

Önce sonuçları tutmak için tabloyu oluşturun; tablo adı değişebilirken, sütun adlarını / veri türlerini tanımlandığı gibi tutmak isteyeceksiniz:

create table sample_table
(Name            varchar(35),
 Config_val      int,
 System_val      int,
 Total_val       int,
 Num_free        int,
 Num_active      int,
 Pct_act         char(6),
 Max_Used        int,
 Reuse_cnt       int,
 Date            varchar(30),
 Instance_Name   varchar(35))

Birkaç ölçümü yakalamak için:

exec sp_monitorconfig "locks",            sample_table
exec sp_monitorconfig "number of alarms", sample_table

Metrikleri görüntüle:

-- select * from sample_table
exec sp_autoformat sample_data
go
 sp_autoformat sample_table
2> go
 Name             Config_val System_val Total_val Num_free Num_active Pct_act Max_Used Reuse_cnt Date                Instance_Name
 ---------------- ---------- ---------- --------- -------- ---------- ------- -------- --------- ------------------- -------------
 number of locks       10000        942     10000     9717        283   2.83       308         0 Aug 16 2020 12:26PM              
 number of alarms        400          0       400      386         14   3.50        14         0 Aug 16 2020 12:26PM