'dbcc inputbuffer'에 해당되는 글 2건
- 2010.07.09 JDBC 드라이버에서 날리는 쿼리 확인 - SQL Server
- 2010.07.04 데이터베이스 문제점 파악 방법
- JDBC 드라이버에서 날리는 쿼리 확인 - SQL Server
- 日常茶飯事
- 2010. 7. 9. 05:24
JDBC 프로그램에서 쿼리를 날렸을 때 DBCC INPUTBUFFER spid 의 결과
- Profiler를 이용하면 쿼리와 매개변수까지 확인 가능함.
- sqljdbc.jar - 569KB (583,286 바이트) 사용, SQL Server 2005
DriverManager.getConnection()
Connection#setAutoCommit(false)
Statement#executeQuery()
PreparedStatement#executeQuery()
CallableStatement#executeQuery()
SYSPROCESSES에서 program_name을 확인할 수 없음.
- jtds-1.2.2 사용, SQL Server 2005
DriverManager.getConnection()
Connection#setAutoCommit(false)
Statement#executeQuery()
PreparedStatement#executeQuery()
CallableStatement#executeQuery()
SYSPROCESSES에서 program_name이 jTDS로 확인됨.
- 연결된 서버를 통한 4파트 쿼리나 Openquery도 위와 동일함.
모두 Language Event 이다.
- auto commit이 false면 opentran 1, 그러나 락은 안보임
- sqljdbc.jar - 569KB (583,286 바이트) 사용, SQL Server 2000
커넥션 붙는 부분 위와 동일
CallableStatement, PreparedStatement#executeQuery()
- jtds-1.2.2 사용, SQL Server 2000
CallableStatement#executeQuery()
PreparedStatement#executeQuery()
- 2005에서 실행된 쿼리를 볼 때 이 쿼리를 이용한다.
- 연결된 서버
처음 접속한 서버(2005)는 일반적인 커넥션과 동일하고, 연결된 원격의 서버(2000)에서 확인해보면 다음과 같은 특징을 가진다.
sp_who
sysprocesses에서 hostname이 DBS2005 이고 program_name이 Microsoft SQL Server 이다.
dbcc inputbuffer (58)
- Profiler를 이용하면 쿼리와 매개변수까지 확인 가능함.
- sqljdbc.jar - 569KB (583,286 바이트) 사용, SQL Server 2005
DriverManager.getConnection()
Language Event 0 set transaction isolation level read committed set implicit_transactions off
Connection#setAutoCommit(false)
Language Event 0 set implicit_transactions on
Statement#executeQuery()
Language Event 0 SELECT top 2 * FROM TB_SAMPLE
PreparedStatement#executeQuery()
Language Event 0 set transaction isolation level read committed set implicit_transactions off //실행시킨 쿼리문을 확인할 수 없음, getConnection() 호출시 남아 있던 문장
CallableStatement#executeQuery()
//상동
SYSPROCESSES에서 program_name을 확인할 수 없음.
- jtds-1.2.2 사용, SQL Server 2005
DriverManager.getConnection()
Language Event 0 SELECT @@MAX_PRECISION SET TRANSACTION ISOLATION LEVEL READ COMMITTED SET IMPLICIT_TRANSACTIONS OFF SET QUOTED_IDENTIFIER ON SET TEXTSIZE 2147483647
Connection#setAutoCommit(false)
Language Event 0 SET IMPLICIT_TRANSACTIONS ON
Statement#executeQuery()
Language Event 0 SELECT top 2 * FROM TB_SAMPLE
PreparedStatement#executeQuery()
Language Event 0 (@P0 nvarchar(4000))SELECT top 2 * FROM TB_SAMPLE WHERE key = @P0
CallableStatement#executeQuery()
RPC Event 0 DB123.dbo.pr_test;1
SYSPROCESSES에서 program_name이 jTDS로 확인됨.
- 연결된 서버를 통한 4파트 쿼리나 Openquery도 위와 동일함.
모두 Language Event 이다.
- auto commit이 false면 opentran 1, 그러나 락은 안보임
- sqljdbc.jar - 569KB (583,286 바이트) 사용, SQL Server 2000
커넥션 붙는 부분 위와 동일
CallableStatement, PreparedStatement#executeQuery()
RPC Event 0 sp_prepexec;1
- jtds-1.2.2 사용, SQL Server 2000
CallableStatement#executeQuery()
RPC Event 0 PR_test;1
PreparedStatement#executeQuery()
RPC Event 0 sp_execute;1
- 2005에서 실행된 쿼리를 볼 때 이 쿼리를 이용한다.
- 연결된 서버
처음 접속한 서버(2005)는 일반적인 커넥션과 동일하고, 연결된 원격의 서버(2000)에서 확인해보면 다음과 같은 특징을 가진다.
sp_who
spid ecid status loginame hostname blk dbname
58 0 dormant test_user DBS2005 0 NULL
58 0 dormant test_user DBS2005 0 NULL
sysprocesses에서 hostname이 DBS2005 이고 program_name이 Microsoft SQL Server 이다.
dbcc inputbuffer (58)
RPC Event 0 sp_reset_connection;1
- 데이터베이스 문제점 파악 방법
- 日常茶飯事
- 2010. 7. 4. 11:40
어떤 계정으로
어느 시스템에서
어느 데이터베이스를 사용했을때
어떤 프로그램을 통해서
어떤 쿼리를 실행시켰을때
상황이 어떠하며
에러가 발생했는지를 확인하는 것이 중요하다.
SQL Server는 Profiler를 이용하는 것이 가장 좋다.
사례1) SQL Server 에서 락이 발생
app_user 로 로그인해서 : sp_who
dev_server 에서 쿼리를 실행함. : sp_who
ERP 데이터베이스를 사용 : sp_who
알 수 없는 쿼리 : dbcc inputbuffer(spid), 쿼리 확인
X Lock 을 걸고, 다른 프로세스에서 SELECT 를 하는데 락이 걸림 : sp_lock
[todo] 오라클에서는?
어느 시스템에서
어느 데이터베이스를 사용했을때
어떤 프로그램을 통해서
어떤 쿼리를 실행시켰을때
상황이 어떠하며
에러가 발생했는지를 확인하는 것이 중요하다.
SQL Server는 Profiler를 이용하는 것이 가장 좋다.
사례1) SQL Server 에서 락이 발생
app_user 로 로그인해서 : sp_who
dev_server 에서 쿼리를 실행함. : sp_who
ERP 데이터베이스를 사용 : sp_who
알 수 없는 쿼리 : dbcc inputbuffer(spid), 쿼리 확인
X Lock 을 걸고, 다른 프로세스에서 SELECT 를 하는데 락이 걸림 : sp_lock
[todo] 오라클에서는?
Recent comment