私はこれにどのようにアプローチするかよくわからないので、誰かが助けになるかもしれないアイデアを持っているかどうかを尋ねるのが最善だと思いました。
次のスキーマを使用してExchange2010メールボックスサーバーのパフォーマンスデータを格納するテーブルがSQLServerに格納されています。
CREATE TABLE [dbo].[2010_Perfmon_MBX]
(
[ID] [int] IDENTITY(1,1) NOT NULL,
[Server] [varchar](50) NULL,
[ObjectName] [varchar](100) NULL,
[CounterName] [varchar](100) NULL,
[InstanceName] [varchar](100) NULL,
[Value] [decimal](18, 3) NULL,
[DateTime] [datetime] NULL
)
また、C#で記述されたASP.NETWebサイトもあります。ユーザーがカスケード回答を選択できるようにしたいのですが、これにより、最終的に要求されたデータがGridView/Graphに返されます。
現在の私の主な課題は、エンドユーザーがすべての列から値を選択するまでデータが返されないようにする方法です。
このようにステージングしたい:
ユーザーは、データをプルするサーバーを求められます
SELECT DISTINCT(Server)
FROM 2010_Perfmon_MBX
彼らがサーバーを選ぶふりをしましょうMailboxServer.domain.com
:
SELECT DISTINCT(ObjectName)
FROM 2010_Perfmon_MBX
WHERE Server = 'MailboxServer.domain.com'
次に、サーバーに基づいて、ユーザーにMailboxServer.domain.com
ObjectNameの入力を求められます。'msexchangeis mailbox'
彼らは例えば以下を選びます:
SELECT DISTINCT(CounterName)
FROM 2010_Perfmon_MBX
WHERE Server = 'MailboxServer.domain.com'
AND ObjectName = 'msexchangeis mailbox'
次に、ユーザーはを求められCounterName
ます。彼らは選ぶ'active rpc threads'
:
SELECT DISTINCT(InstanceName)
FROM 2010_Perfmon_MBX
WHERE Server = 'MailboxServer.domain.com'
AND ObjectName = 'msexchangeis mailbox'
AND CounterName = 'active rpc threads'
最後に、彼らはを選びますInstanceName
。この例では'Database20'
。次に、完全なクエリが実行され、行われた選択に基づいてすべてのデータがプルバックされます。
SELECT *
FROM 2010_Perfmon_MBX
WHERE Server = 'MailboxServer.domain.com'
AND ObjectName = 'msexchangeis mailbox'
AND CounterName = 'active rpc threads'
AND InstanceName = 'Database20'
先に進んで選択を連鎖させることなく、選択の流れが機能することを保証する最もエレガントな方法は何ですか?
選択が動的であり、選択したサーバーのSQL Serverテーブルで使用可能なデータに基づいていることを確認する必要があるため、有効なデータのみを選択できます。
読んでくれてありがとう。