1
私はMSSQLについてテストしています。 "接続後に作成されたセッション情報を長くする方法は?"jdbc接続からクライアントIPポートを知る方法
したがって、MSSQL JDBCとの接続を試み、クライアントIpとポートを使用してsys.dm_exec_sessionとsys.dm_exec_connectionを選択してください。
しかし、クライアントIpとポートをJDBC接続から取得する方法はありません。
ソケットを使用してJDBC接続を作成することはできますか?
私のテストコードを表示します。
try {
DriverManager.registerDriver(
new com.microsoft.sqlserver.jdbc.SQLServerDriver());
DriverManager.setLoginTimeout(10);
} catch (Exception ex) {
System.out.println("Fail to register sqlserver driver.");
return;
}
String url = "jdbc:sqlserver://";
String ip = "10.1.1.1";
String port = "1433";
String catalog = "master";
String user = "jtlee";
String pwd = "123456789";
url = url + ip + ":" + port + ";databasename=" + catalog;
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
long startTime = System.nanoTime();
conn = DriverManager.getConnection(url, user, pwd);
pstmt = conn.prepareStatement(
"SELECT "
+ " count(*) "
+ "FROM "
+ " sys.dm_exec_connections connections,"
+ " sys.dm_exec_sessions sessions "
+ "WHERE "
+ " connections.session_id = sessions.session_id "
+ " and connections.client_net_address= ? "
+ " and connections.client_tcp_port= ? ");
/* I need this information... */
String clientIp;
int clientPort;
pstmt.setString(1, clientIp);
pstmt.setInt(2, clientPort);
rs = pstmt.executeQuery();
if (rs.next()) {
...
私の奇妙な英語を読んでくれてありがとう。