我不太确定如何解决这个问题,所以认为最好问一下,看看是否有人有任何可能有帮助的想法。
我有一个存储在 SQL Server 中的表,它使用此架构存储 Exchange 2010 邮箱服务器性能数据:
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.NET 网站。我想允许用户选择级联答案,最终将请求的数据返回到 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 表中的可用数据,因此只能选择有效数据。
谢谢阅读。