저장 프로 시저 결과 집합을 임시 테이블에 삽입하고 임시 테이블을 쿼리합니다.

Aug 16 2020

다음과 같은 저장된 proc이 있습니다.

  1. 시스템 저장 프로 시저 (sp_monitorconfig)를 실행하고 결과 집합을 임시 테이블에 저장합니다.
  2. 이 임시 테이블에서 선택하고 2 개의 사용자 지정 열 (SOURCESERVER 및 CollectionTime)을 추가합니다.
  3. 이 최종 결과 세트는 jdbc 작업을 통해 Logstash로 수집됩니다.

현재 SAP ASE 16 (sybase)을 사용하고 있으며 키워드 'exec'에서 잘못된 구문 오류가 발생 합니다. 저장된 proc에 접두사를 붙여야하는지 또는 무엇을해야하는지 잘 모르겠지만 현재는 당황스럽고 도움을 주시면 감사하겠습니다.

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

감사!

답변

markp-fuso Aug 17 2020 at 00:28

연산자가 결과를 삽입 할 테이블을 지정할 수 있도록 sp_monitorconfig하는 선택적 입력 매개 변수 ( @result_tbl_name) 가있는 것을 잊었습니다 .

sp_monitorconfig 에 대한 설명서에서 예제 # 8 ...

먼저 결과를 보관할 테이블을 만듭니다. 테이블 이름은 다를 수 있지만 정의 된대로 열 이름 / 데이터 유형을 유지하는 것이 좋습니다.

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))

몇 가지 메트릭을 캡처하려면 다음을 수행하십시오.

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

디스플레이 메트릭 :

-- 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