--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)

1.SELECT * INTO사용법

   SELECT  INTO 구문은 원본은 있고 대상 테이블은 새롭게 생성하려 할 경우 사용합니다.

   TABLE A에서 모든 데이터를 가져와 A_COPY라는 테이블을 생성하여 데이터를 INSERT하고 싶습니다.

   물론 A_COPY라는 테이블은 현재 만들어져있지 않습니다.

 

   SELECT * INTO A_COPY FROM A

 

   위와 같이 하면 A테이블과 같은 컬럼과 데이터를 가지는 A_COPY라는 테이블이 생성됩니다.

   그럼 A테이블의 특정 컬럼만 가져오려면?

 

   SELECT * INTO A_COPY

   FROM (

              SELECT COL1,COL2,COL3.... FROM A 

             ) AS TEMP_TABLE

   위와 같이 하면 A테이블의 특정 컬럼만 가져와서 A_COPY라는 테이블을 생성하여 데이터를 INSERT합니다.

 

2.INSERT INTO SELECT 사용법

   INSERT INTO 구문은 원본과 대상테이블이 모두 있을 경우 사용합니다.

   TABLE A에서 모든 데이터를 가져와 B라는 테이블에 INSERT 하고 싶습니다.

  

   INSERT INTO B SELECT * FROM A

   위에서 TABLE A와 TABLE B는 스키마가 동일해야 합니다.

 

   만일 A보다 컬럼수가 적을 경우에는

   INSERT INTO B SELECT COL1,COL2,COL3 FROM A

   와 같이 사용할 수 있습니다.

출처 : http://smlim.tistory.com/189



간혹 이런 경우가 있다 칼럼명을 알고 있는데 테이블 명을 모를때 

이런 경우 테이블 명을 찾을 수 있는 쿼리문이 있다

select OBJECT_NAME(id) from sys.syscolumns where name='컬럼명'

+ Recent posts