BLOG ARTICLE MSSQL | 4 ARTICLE FOUND

  1. 2011.05.18 OPENQUERY
  2. 2011.03.08 SP 실행 권한 문제
  3. 2011.03.02 MSSQL 단축키
  4. 2011.02.24 MSSQL SELECT절에서 두번째로 높은 값 찾기

OPENQUERY

IT/MS-SQL 2011. 5. 18. 16:19

예제)

SET @sql = N'SELECT * FROM OPENQUERY(['+@InstanceName+'],
''SELECT DISTINCT  D.referenced_major_id,D.object_id
 FROM ['+@DatabaseName+'].sys.objects AS O
 JOIN ['+@DatabaseName+'].sys.sql_dependencies AS D ON O.object_id=D.referenced_major_id
 WHERE O.[TYPE] in (''''IF'''',''''P'''',''''FN'''',''''TF'''')'



지정한 연결된 서버에서 지정한 통과 쿼리를 실행합니다. 이 서버는 OLE DB 데이터 원본입니다. OPENQUERY는 테이블 이름처럼 쿼리의 FROM 절에서 참조될 수 있습니다. 또한 OPENQUERY는 INSERT, UPDATE 또는 DELETE 문의 대상 테이블로 참조될 수도 있습니다. 이것은 OLE DB 공급자 기능에 종속됩니다. 쿼리는 여러 결과 집합을 반환할 수 있지만 OPENQUERY는 첫 번째 것만 반환합니다.

구문

OPENQUERY ( linked_server ,'query' )

인수

linked_server

연결된 서버의 이름을 나타내는 식별자입니다.

' query '

연결된 서버에서 실행된 쿼리 문자열입니다. 문자열의 최대 길이는 8KB입니다.

주의

OPENQUERY는 변수를 인수로 받아들이지 않습니다.

SQL Server 2000 이상 버전에서는 연결된 서버에서 확장 저장 프로시저를 실행하는 데 OPENQUERY를 사용할 수 없습니다. 그러나 확장 저장 프로시저는 네 부분으로 된 이름을 사용하여 연결된 서버에서 실행할 수 있습니다. 예를 들면 다음과 같습니다.

EXEC SeattleSales.master.dbo.xp_msver

사용 권한

모든 사용자가 OPENQUERY를 실행할 수 있습니다. 원격 서버 연결에 사용되는 사용 권한은 연결된 서버에 대해 정의된 설정에서 가져옵니다.

예)

1. SELECT 통과 쿼리 실행

다음 예에서는 Microsoft OLE DB Provider for Oracle을 사용하여 Oracle 데이터베이스에 대해 OracleSvr이라는 연결된 서버를 만듭니다. 그런 다음 이 연결된 서버에 대해 SELECT 통과 쿼리를 사용합니다.

참고:
이 예에서는 ORCLDB라는 Oracle 데이터베이스 별칭이 생성되어 있다고 가정합니다.

EXEC sp_addlinkedserver 'OracleSvr', 
   'Oracle 7.3', 
   'MSDAORA', 
   'ORCLDB'
GO
SELECT *
FROM OPENQUERY(OracleSvr, 'SELECT name, id FROM joe.titles') 
GO

2. UPDATE 통과 쿼리 실행

다음 예에서는 예 1에서 만든 연결된 서버에 대해 UPDATE 통과 쿼리를 사용합니다.

UPDATE OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101') 
SET name = 'ADifferentName';

3. INSERT 통과 쿼리 실행

다음 예에서는 예 1에서 만든 연결된 서버에 대해 INSERT 통과 쿼리를 사용합니다.

INSERT OPENQUERY (OracleSvr, 'SELECT name FROM joe.titles')
VALUES ('NewTitle');

4. DELETE 통과 쿼리 실행

다음 예에서는 DELETE 통과 쿼리를 사용하여 예 3에서 삽입된 행을 삭제합니다.


'IT > MS-SQL' 카테고리의 다른 글

결과에 영향을 주는 SET 옵션  (0) 2011.05.17
SP 실행 권한 문제  (0) 2011.03.08
MSSQL 단축키  (0) 2011.03.02
내부 프로시저 실행시킬 때 EXECUTE 주의점  (0) 2011.02.28
MSSQL SELECT절에서 두번째로 높은 값 찾기  (0) 2011.02.24
AND


SP를 실행하는데 다음과 같은 에러가 발생할 경우

229\rThe EXECUTE permission was denied .......
OR
서버: 메시지 229, 수준 14, 상태 5 프로시저 xp_mapdown_bitmap, 선 45
EXECUTE 권한이 개체 'xp_mapdown_bitmap', '마스터' 데이터베이스, 소유자 'dbo' 거부되었습니다
.

<Solution>
SP 실행 권한 없기 때문에 생기는 문제.
쿼리 분석기를 사용하여 수동으로 부여 공개 권한을 다음과 같이 실행:

USE master
GO
GRANT EXECUTE ON xp_mapdown_bitmap TO public
GO

'IT > MS-SQL' 카테고리의 다른 글

OPENQUERY  (0) 2011.05.18
결과에 영향을 주는 SET 옵션  (0) 2011.05.17
MSSQL 단축키  (0) 2011.03.02
내부 프로시저 실행시킬 때 EXECUTE 주의점  (0) 2011.02.28
MSSQL SELECT절에서 두번째로 높은 값 찾기  (0) 2011.02.24
AND

MSSQL 단축키

IT/MS-SQL 2011. 3. 2. 13:37

[쿼리]
- 실행: Ctrl+E 또는 F5
- 실행 취소: Alt+Break
- 쿼리 구문 분석, 검사: Ctrl+F5

[DB]
- DB 연결: Ctrl+O
- DB 연결 끊기 및 하위 창 닫기: Ctrl+F4
- DB 개체 정보: Alt+F1
- DB 선택: Ctrl+U

[편집]
- 창 내용 지우기: Ctrl+Shift+Del

- 주석 달기(블럭): Ctrl+Shift+C
- 주석 제거(블럭): Ctrl+Shift+R

- 복사(블럭): Ctrl+Ins 또는 Ctrl+C
- 잘라내기(블럭): Shift+Del 또는 Ctrl+X
- 붙여넣기(블럭): Shift+Insert 또는 Ctrl+V

- 줄 내용 삭제: Ctrl+Del
- 줄 삭제: Ctrl+Y

- 찾기: Ctrl+F
- 다음 찾기: F3
- 줄 번호로 이동: Ctrl+G

- 들여쓰기(블럭): Tab
- 내어쓰기(블럭): Shift+Tab

- 소문자로 변환(블럭): Ctrl+Shift+L
- 대문자로 변환(블럭): Ctrl+Shift+U

- 바꾸기: Ctrl+H
- 모두 선택: Ctrl+A
- 실행 취소: Ctrl+Z

[창]
- 쿼리와 결과 창 사이 전환: F6 또는 Shift+F6
- 창 선택기: Ctrl+W
- 새 쿼리 창 열기: Ctrl+N
- 창 내용 저장: Ctrl+S

- 개체 브라우저 표시(토글): F8
- 개체 검색: F4

[결과]
- 결과 창 표시(토글): Ctrl+R

- 쿼리 실행 후, 표 형태로 결과 표시: Ctrl+D
- 쿼리 실행 후, 텍스트 형식으로 결과 표시: Ctrl+T
- 쿼리 실행 후, 파일로 결과 저장: Ctrl+Shift+F

- 쿼리 실행 후, 실행 계획 표시(토글): Ctrl+K
- 쿼리 실행 후, 클라이언트 통계 표시(토글): Ctrl+Shift+S
- 서버 추적 표시(토글): Ctrl+Shift+T

- 결과 창 크기 조절: Ctrl+B

[튜닝]
- 예상 실행 계획 표시: Ctrl+L
- 인덱스 튜닝 마법사: Ctrl+I

[템플릿]
- 템플릿 삽입: Ctrl+Shift+Insert
- 템플릿 매개 변수 바꾸기: Ctrl+Shift+M

[책갈피]
- 모든 책갈피 지우기: Ctrl+Shift+F2
- 책갈피 삽입, 제거(토글): Ctrl+F2
- 다음 책갈피로 이동: F2
- 이전 책갈피로 이동: Shift+F2

[도움말]
- QA 도움말: F1
- 선택한 T-SQL 문에 대한 도움말: Shift+F1

[기타]
- 옵션: Ctrl+Shift+O
- 인쇄: Ctrl+P

AND


SELECT MAX([Version])
FROM DeployDtl AS a JOIN DeployLog AS b ON a.DeployID = b.DeployID
WHERE a.ObjectName = @ObjectName 
            AND a.[Version] < (SELECT MAX(Version) FROM DeployDtl
WHERE DeployID = @DeployID AND ObjectName = @ObjectName)
 

'IT > MS-SQL' 카테고리의 다른 글

SP 실행 권한 문제  (0) 2011.03.08
MSSQL 단축키  (0) 2011.03.02
내부 프로시저 실행시킬 때 EXECUTE 주의점  (0) 2011.02.28
MSSQL Cursor in Stored Procedure  (0) 2011.02.22
MSSQL 특정 단어가 포함된 프로시저 찾기  (0) 2011.02.22
AND