是否有任何Groovy或Java代码在30分钟的时间间隔内检查microsoft sql中的服务器可达性3次
能否请您使用Groovy或Java代码帮助检查microsoft sql中的服务器可达性,在30分钟的时间间隔内进行3次尝试。我已经开发了一个在msql中执行查询的代码 但如果服务器不可访问,我需要检查故障情况,在30分钟的间隔内尝试3次 我已经分享了用于连接Sql server并运行查询的示例groovy代码是否有任何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
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")
}
}
}