查询多个数据库中的值

时间:2010-10-16 14:00:25

标签: vb.net

我正在使用此函数从三个SQL实例(在同一服务器上)的多个数据库中返回一个值。我正在循环一个DataGridView,它列出了三个SQL实例之一的所有数据库。

有更快的方法吗?使用这种方法很慢。

Function DatabaseStatus(ByVal SQLServer As String, ByVal Database As String)
    Dim myConn As New SqlConnection("Server=" & SQLServer & ";User Id=USER;Password=PASSWORD;Database=" & Database & ";")
    Dim Status As String = ""
    If myConn.State = ConnectionState.Closed Then
        myConn.Open()
    End If
    Dim query As String = "SELECT STATEMENT;"
    Dim myCommand As New SqlCommand(query, myConn)
    Try
      If myCommand.ExecuteScalar().ToString.ToUpper = "OK" Then
            Status = "Ready"
        End If
    Catch ex As Exception
        Status = "Unknown"
    Finally
        myConn.Dispose()
    End Try
    Return Status
End Function

编辑 - SELECT语句示例:

IF OBJECT_ID('TABLENAME') IS NOT NULL SELECT [Setting] FROM [TABLENAME] 
WHERE [Section] = 'platform' and [Setting] = 'server' ELSE SELECT 'UNKNOWN';

2 个答案:

答案 0 :(得分:1)

通过已完成的速度测试,使用SQL Adapters(ADO.Net)是获取信息的最快方法。但是,考虑到你在.Net上,我建议如果可能的话使用LINQ - 它更干净,更快捷。这是一个stackoverflow question that might help you

话虽如此,除非您的查询量很大,否则您所使用的内容应该非常快。您查询的数据库可能很慢(共享主机,网络延迟,执行次数,服务器上的硬件,and other issues)。

我建议为您尝试访问的查询计时一个请求,以获得执行它所需的一般指标。也可能是你的查询非常复杂,有很多连接等等。

另外,AnjLab的SQLProfiler是处理MSSql数据库内容的非常好的工具

答案 1 :(得分:0)

看看SQL Server Management Objects (SMO)。它可以帮助您做您需要的和更多。希望有所帮助,