是否有任何Groovy或Java代码在30分钟的时间间隔内检查microsoft sql中的服务器可达性3次

是否有任何Groovy或Java代码在30分钟的时间间隔内检查microsoft sql中的服务器可达性3次,java,sql-server,groovy,mssql-jdbc,groovy-console,Java,Sql Server,Groovy,Mssql Jdbc,Groovy Console,能否请您使用Groovy或Java代码帮助检查microsoft sql中的服务器可达性,在30分钟的时间间隔内进行3次尝试。我已经开发了一个在msql中执行查询的代码 但如果服务器不可访问,我需要检查故障情况,在30分钟的间隔内尝试3次 我已经分享了用于连接Sql server并运行查询的示例groovy代码 def username="abcc" def password="sdsadsdsad" def result="" def

能否请您使用Groovy或Java代码帮助检查microsoft sql中的服务器可达性,在30分钟的时间间隔内进行3次尝试。我已经开发了一个在msql中执行查询的代码

但如果服务器不可访问,我需要检查故障情况,在30分钟的间隔内尝试3次

我已经分享了用于连接Sql server并运行查询的示例groovy代码

def username="abcc"
def password="sdsadsdsad"
def result=""
def driver = Class.forName('com.microsoft.sqlserver.jdbc.SQLServerDriver').newInstance()
def props = new Properties()
props.setProperty("user", username)
props.setProperty("password", password) 
def conn=driver.connect("jdbc:sqlserver://dbservername:port;databaseName=datatablename;integratedSecurity=true;authenticationScheme=NTLM", props)
def sql = new groovy.sql.Sql(conn)
def query="select top(10) taskid from aspn.task_history"
sql.query(query)
{ resultSet ->
while (resultSet.next())
{
  println resultSet.getString("taskid")
}
}
conn.close()

我还没有执行这段代码,所以它可能需要一些调整,但我希望它能作为一个起点有所帮助。
def username = "abcc"
def password = "sdsadsdsad"
def result = ""
def driver = Class.forName('com.microsoft.sqlserver.jdbc.SQLServerDriver').newInstance()
def props = new Properties()
props.setProperty("user", username)
props.setProperty("password", password)

def withReconnect = { connect, action ->
  def tryConnect = {
    try {
      println 'Connecting...'
      connect().withCloseable { conn ->
         action(conn)
      }
      return true // all OK
    // use the type of Exception that happens when connection fails below
    } catch (ConnectionException e) {
      e.printStackTrace()
    }
    return false // FAIL
  }
  // try a few times
  for (def i in (1..3)) {
    if (i != 1) { // sleep only if not first time
      println 'Connection failed, will try again in 10 minutes...'
      sleep 10 * 60 * 1000
    }
    def ok = tryConnect()
    if (ok)
    {
      println 'Successfully executed query'
      return // end the script
    }
  }

  // if we get here, we did not have success
  throw new RuntimeException('Failed too many times, aborting...')
}

// define how to connect
def connect = {
  driver.connect(
    "jdbc:sqlserver://dbservername:port;databaseName=datatablename;integratedSecurity=true;authenticationScheme=NTLM",
  props)
}

// go!
withReconnect(connect) { conn ->
  def sql = new groovy.sql.Sql(conn)
  def query="select top(10) taskid from aspn.task_history"
  sql.query(query) { resultSet ->
    while (resultSet.next())
    {
      println resultSet.getString("taskid")
    }
  }
}