COPY & PASTE 로 간편하게 사용할 수 있는 SQL Server Trobleshooting 에 필요한 쿼리들을 정리하려고 합니다. 다소 심플하며 성의없어(?) 보이는 포스팅이 이어질지 모르겠습니다만 이 모든 것이 이~편한 세상을 위한 것임으로 ... ㅋㅋㅋ 

 

 

sys.dm_exec_requests

 

SQL Server 내에서 실행 중인 각 요청에 대해 현재 처리 상태를 확인합니다. 예를 들어, 대용량 DB CHECKDB 하면서 소요 예상 시간이 궁금할 , 현재 쿼리 요청에 대한 작업 상태를 확인할 , 유용하게 적용할 있습니다. 

 

아래 예제는 Session ID 51에 대한 진행되는 명령어, 실행 상태, 진행 작업의 백분율을 확인할 수 있습니다.

이 때, Session ID 51에서는 DBCC CHECKDB 를 수행하고 있는 상태입니다.

SELECT session_id, command, status, percent_complete FROM sys.dm_exec_requests 

WHERE session_id = '51';

 

 

[실행결과]

 

session_id     command                    status                percent_complete

----------------------------------------------------------------------------------------------------------

51               DBCC TABLE CHECK      runnable            84.04607

(1개 행 적용됨)

 

 

[참고자료]

sys.dm_exec_requests

http://technet.microsoft.com/ko-kr/library/ms177648(SQL.90).aspx

 

원본 위치 <http://laigo.kr/111

--1. 블러킹 정보 확인
SELECT * FROM SYS.sysprocesses WHERE blocked > 0

SP_WHO
SP_WHO2

--2. lock 세부 정보
sp_lock

select *
from sys.dm_tran_locks


--3. 실행쿼리 확인
DBCC INPUTBUFFER(58)


--4.KILL

KILL 58


/*
BEGIN

IF OBJECT_ID('UNILITE.LOCK_TEST') IS NOT NULL
DROP TABLE UNILITE.LOCK_TEST

CREATE TABLE UNILITE.LOCK_TEST
(
ID INT ,
ITEM VARCHAR(20),
QTY INT
)


BEGIN TRAN


INSERT INTO LOCK_TEST (ID, ITEM, QTY)
VALUES(1, 'APPLE',20)
--ROLLBACK
--COMMIT

END


BEGIN

SELECT *
FROM LOCK_TEST

END


출처 : http://mrdingku.tistory.com/41


앞의 글(SQL Server Management Studio를 사용해서 연결된 서버를 등록하기)을 따라 연결된 서버를 등록했다


이제 SQL Server에서 연결된 서버의 Table을 OpenQuery를 이용하여 조회하고 등록하고 수정하고 삭제해보겠다.


## Select

1
SELECT * FROM OPENQUERY(L_TESTDB, 'SELECT * FROM LinkedServerTestTable');


## Insert

1
INSERT OPENQUERY(L_TESTDB, 'SELECT NO, NAME FROM LinkedServerTestTable ') VALUES (1, '홍길동');


## Update

1
UPDATE OPENQUERY(L_TESTDB, 'SELECT NAME FROM LinkedServerTestTable WHERE NO = 1') SET NAME = '임꺽정';


## Delete

1
DELETE FROM OPENQUERY(L_TESTDB, 'SELECT NO FROM LinkedServerTestTable WHERE NO = 1');


어렵지않다. 찾으면 쉽게 알 수 있다.

공부하자~~!!!!


########## 추가 ##########

프로시저에서 openquery를 이용하여 update하는데, where절에 NO = @P_NO 파라미터를 넣었더니 바로 에러가 나더라는.....

그래서 확인해보니 openquery에는 string 만들어가야 한다는 사실을 알게 되었다.. 그놈 참... 까다롭네그려... ㅡㅡ;;;


그래서


1
2
3
4
5
@_QUERY = '
UPDATE OPENQUERY(L_TESTDB, 'SELECT NAME FROM LinkedServerTestTable WHERE NO = '+@SMS_SEQ+'')
      SET NAME = '''+@NAME+'' '
 
Execute sp_executesql  @_QUERY, @_PARAMS


주의사항 : 파라미터 부분에 작은 따옴표 " ' "를 넣을때 특수문자여서 하나더 넣어야한다는거 다들 아시지요?? 

@SMS_SEQ가 스트링일 경우, '''''+@SMS_SEQ+''''' 요렇게...

This is very common request recently – How to import CSV file into SQL Server? How to load CSV file into SQL Server Database Table? How to load comma delimited file into SQL Server? Let us see the solution in quick steps.

CSV stands for Comma Separated Values, sometimes also called Comma Delimited Values.

Create TestTable

USE TestData
GO
CREATE TABLE CSVTest
(ID INT,
FirstName VARCHAR(40),
LastName VARCHAR(40),
BirthDate SMALLDATETIME)
GO

Create CSV file in drive C: with name csvtest.txt with following content. The location of the file is C:\csvtest.txt

1,James,Smith,19750101

2,Meggie,Smith,19790122

3,Robert,Smith,20071101

4,Alex,Smith,20040202

Now run following script to load all the data from CSV to database table. If there is any error in any row it will be not inserted but other rows will be inserted.

BULK
INSERT 
CSVTest
FROM 'c:\csvtest.txt'
WITH
(
FIELDTERMINATOR ',',
ROWTERMINATOR '\n'
)
GO
--Check the content of the table.
SELECT *
FROM CSVTest
GO
--Drop the table to clean up database.
SELECT *
FROM CSVTest
GO

Reference : Pinal Dave (http://blog.SQLAuthority.com)

+ Recent posts