代码之家  ›  专栏  ›  技术社区  ›  madlan

查询多个数据库中的值

  •  0
  • madlan  · 技术社区  · 14 年前

    我使用此函数返回来自三个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
    

    编辑-选择语句示例:

    IF OBJECT_ID('TABLENAME') IS NOT NULL SELECT [Setting] FROM [TABLENAME] 
    WHERE [Section] = 'platform' and [Setting] = 'server' ELSE SELECT 'UNKNOWN';
    
    2 回复  |  直到 14 年前
        1
  •  1
  •   Community CDub    8 年前

    从已经完成的速度测试来看,使用SQL适配器(ADO.Net)是获取信息的最快方式。不过,考虑到你在.Net上,如果可能的话,我建议你使用LINQ——它更干净,使用起来更快。这是一个 stackoverflow question that might help you

    也就是说,除非你的查询量很大,否则你使用的应该是非常快的。可能您正在查询的数据库很慢(共享主机、网络延迟、执行次数、服务器上的硬件, and other issues ).

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

    SQLProfiler 是处理MSSql数据库的一个非常好的工具

        2
  •  0
  •   Abelardo Cecena    14 年前

    看一看 SQL Server Management Objects (SMO) . 它可以帮助你做你需要的事情。希望能帮上忙,