0

上司から投げかけられた問題に再び直面しています..

複数の MSSQL サーバーに接続して、次のクエリを連続して実行する小さな Windows ベースのアプリケーションを作成しました。

DECLARE @Orderby AS VARCHAR(50)
SET @Orderby = 'reserved_MB desc'
SET nocount ON
SET ansi_warnings OFF
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

CREATE TABLE #S
(
  [name] VARCHAR(50) NULL ,
  [rows] VARCHAR(50) NULL ,
  [reserved] VARCHAR(50) NULL ,
  [data] VARCHAR(50) NULL ,
  [index_size] VARCHAR(50) NULL ,
  [unused] VARCHAR(50) NULL
)

-- Create a cursor to loop through the user tables
DECLARE @name VARCHAR(50)
DECLARE c_tables CURSOR
FOR
    SELECT  name
    FROM    sysobjects
    WHERE   xtype = 'U'

OPEN c_tables
FETCH NEXT FROM c_tables
INTO @name

WHILE @@fetch_status = 0 
    BEGIN
    INSERT INTO #S
            EXEC sp_spaceUsed @name
    FETCH NEXT FROM c_tables    INTO @name
END

CLOSE c_tables
DEALLOCATE c_tables

SELECT  [dSampleDate] = GETDATE(),
    [name] ,
    [rows] ,
    reserved_MB ,
    data_MB ,
    [index_MB] ,
    unused_MB
INTO    #T
FROM    ( SELECT    [name] ,
                [rows] = CAST([rows] AS INT) ,
                reserved_MB = CAST(REPLACE(reserved, 'KB', '') AS INT)
                / 1000 ,
                data_MB = CAST(REPLACE(data, 'KB', '') AS INT) / 1000 ,
                [index_MB] = CAST(REPLACE(index_size, 'KB', '') AS INT)
                / 1000 ,
                unused_MB = CAST(REPLACE(unused, 'KB', '') AS INT) / 1000
      FROM      #S
    ) AS XX
ORDER BY reserved_MB DESC 

DROP TABLE #S
DROP TABLE #T

これは正常に実行され、次のコマンドでリーダー内のローカル データベースに挿入されます。

INSERT INTO [DBGrowth] (sName, sTableName, iRows, iReservedMB, iDataMB, iIndexMB, iUnusedMB) VALUES('" & sDbName & "', '" & RDR2.Item("name") & "', '" & RDR2.Item("rows") & "', '" & RDR2.Item("reserved_MB") & "', '" & RDR2.Item("data_MB") & "', '" & RDR2.Item("index_MB") & "', '" & RDR2.Item("unused_MB") & "')

私はすべてがうまく機能するようになりましたが、次のことに戸惑うことはありません..彼は、行の増加、データファイルの増加、およびインデックスファイルの増加に関する毎日のレポートを生成することを望んでいます。まだ解決策を見つけることができません。アプリケーションを作成した言語は Visual Basic .NET で、MSSQL Server 2008 を使用しています。

T-SQL または Visual Studio (アプリケーション ベース) で結果を生成するためのアイデアとヒントが役立ちます。

誰かが私を正しい方向に向けることができれば、それは大歓迎です。

よろしく、ロバート。

4

1 に答える 1

0

上記の T-SQL は、適切な出発点となります。上記の SQL を毎日実行して DBGrowth を生成する SQL Server エージェントをいつでも作成できます。これにより、見ているさまざまなアイテムの履歴ビューが表示されます。次に、この DBGrowth テーブルにクエリを実行して、概要情報を提供することができます。

于 2013-06-18T12:24:49.227 に答える