블로그 이미지
bedbmsguru

Notice

Recent Post

Recent Comment

Recent Trackback

Archive

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
  • total
  • today
  • yesterday
2011. 5. 19. 14:13 SQL SERVER
시스템에 맞는 버전의 첨부파일을 다운 받는다.
Microsoft SQL-DMO (ODBC SQLState: 42000)
70.dll DLL 또는 이 DLL이 참조하는 DLL 중 하나를 로드할 수 없습니다. 이유: 126(지정된 모듈을 찾을 수 없습니다.).
--sql 설치 경로
D:\Microsoft SQL Server\MSSQL\Binn
여기에다가 xplog70.dll 를 집어넣는다.


posted by bedbmsguru
2011. 3. 9. 16:38 SQL SERVER
CREATE IINDEX [INDEX_NAME] ON TABLE
(
    column,....
)
INCLUDE(column, ...)

-INCLUDE절에 지정된 non-key column을 noncluster index의 leaf레벨에 저장하여 covered index 수준의 성능을 낼 수 있도록 해준다.
-Where 절에 나오는 칼럼은 key-column으로 그냥 select list에만 나오는 칼럼은 non-key column으로 세팅한다.


0. include절에 나오는 칼럼은 update가 되더라도 index를 다시 정렬하지 않아도 되기때문에 DISK I/O를 줄일 수 있다.
1. Index의 크기가 900byte를 넘더라도 인덱스 생성이 가능하다.
2. 16개로 제한된 Index key column갯수의 제한을 받지 않는다.
3. non-key column 에는 text, ntext, and image 를 제외한 모든 데이타 타입이 가능하다.
posted by bedbmsguru
2011. 1. 31. 16:54 SQL SERVER
Select exec

프로시져 결과값을 select 해야할 경우에 사용할 것~

--테스트 테이블 생성
CREATE TABLE TEST1
(
  col1 int, 
  col2 varchar(500)
)

--데이타 입력
INSERT INTO TEST1 VALUES(1, 'AAA')
INSERT INTO TEST1 VALUES(2, 'BBB')
INSERT INTO TEST1 VALUES(3, 'CCC')
INSERT INTO TEST1 VALUES(4, 'DDD')
INSERT INTO TEST1 VALUES(5, 'EEE')

--테스트 프로시져 생성
CREATE PROCEDURE usp_test_proc
(
    @index As INT
)
AS
SELECT *
FROM TEST1
WHERE col1 > @index


방법1
--######### 임시 테이블을 생성해서 데이타를 넣은후 필터링 ###################
CREATE TABLE #TEMP
(
     col1 int, 
    col2 varchar(500)
 )

INSERT #TEMP EXEC usp_test_proc 3
SELECT * FROM #TEMP WHERE col2 = 'EEE'
DROP TABLE #TEMP

--#######방법2 OPENROWSET 함수를 이용한다.

--2005에서는 Ad Hoc Distributed Queries 옵션이 default로 꺼져 있으므로 켜줘야 한다.
--켜주지 않을 경우 아래와 같은 에러가 발생한다.
메시지 15281, 수준 16, 상태 1, 줄 1
구성 요소 'Ad Hoc Distributed Queries'이(가) SQL Server 보안 구성의 일부로 해제되었으므로 이 구성 요소의 문 'OpenRowset/OpenDatasource'에
대한 액세스가 차단되었습니다. 시스템 관리자는 sp_configure를 사용하여 'Ad Hoc Distributed Queries'의 사용을 활성화할 수 있습니다. 'Ad Hoc Distributed Queries'
활성화 방법은 SQL Server 온라인 설명서의 "노출 영역 구성"을 참조하십시오.

sp_configure 'show advanced options', 1;
reconfigure


sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;

sp_configure 'show advanced options', 0;
reconfigure
GO
---------------------------------------------------------------------

SELECT * FROM OPENROWSET('sqloledb', 'server=(local);trusted_connection=yes' ,'exec 디비이름.dbo.usp_test_proc 4')
posted by bedbmsguru
2010. 11. 3. 11:38 SQL SERVER

포트 지정을 , 로 할줄이야....-_-;;
아이피, Port\ Instanc이름
posted by bedbmsguru
2010. 11. 3. 11:37 SQL SERVER

sqlcmd -S 아이피 -U 아이디 -P 암호
대소문자를 구분하므로 주의해서 사용할 것
(1) 실행시옵션 (해석안되는것 + 필요없을듯한것 제외 더 있음)
 1)윈도우인증으로 로그인 하려면 -E 를 사용
 2) -l (로그인 타임아웃시간:0은 타임아웃시간 무한대) -t 쿼리실행 타임아웃시간
 3) -d 기본데이타베이스 지정
 4) C:\>SQLCMD /E /q "select * from HumanResources.Department"/d AdventureWorks
    -q 지정된 쿼리를 실행후 종료하고 sqlcmd prompt로 빠져나온다.
         -Q 지정된 쿼리를 실행후 종료하고 CMD 창까지 빠져나온다.
 5) -a 512 에서 32767까지 서버로 한번에보낼 packet사이즈를 지정한다.
    (패킷사이즈를 크게 지정할 경우 large script의 실행성능이 향상됨.)
 6) -I QUOTED_IDENTIFIER 옵션을 on으로 한다. (default 는 off)
 
 Formatting Options
 7) -s 칼럼구분자를 지정할 수 있다 (default는 공백)
 8) -w 스크린 사이즈를 지정 (default = 80)
 9) -W 출력 row 제일뒤쪽 공백을 제거
 10)-h n(정수) 컬럼의 결과를 n개씩의 그룹으로 만들어서 출력
 11) -Y n char(1...8000), nchar(1...4000), varchar(1...8000), nvarchar(1...4000), and varian 칼럼의 출력길이를 n으로 제한한다. (default = 0 :제한없음)
 12) -y large datatype varchar(max), nvarchar(max), varbinary(max), XML, user-defined types, ntext, text, image의 출력길이제한
 
 Execution Options
 13) -c 쿼리실행 command를 지정할 수 있다. (default = go)
 14) -p 성능통계 정보를 표시해준다. (option으로 1을 주면 각 통계정보를 : 으로 구분하여 보여줌 엑셀에서 볼때 편리함)
 -p 옵션의 통계정보는 DBMS에 추가적인 부담 주지 않기 때문에 load가 심한 서버에서도 사용가능하다
 File Stream and Redirection Options
 15) -i input_file[,file2...] 실행할 스크립트 파일들 파일이름에 공백이 있을 경우 ""를 사용한다.
  C:\sqlscripts>SQLCMD -i"file 1.sql","file 2.sql"
 16) -o output_file 결과를 기록할 파일
 
 Security and Scripting Options  
 17 -v 스크립트 실행전에 변수지정
 cf) 변수 지정은 sqlcmd 에서 :setvar <variable name>="<variable value>" 명령어로도 가능
 Ex)변수 사용예제
 backup.sql내용 --> BACKUP DATABASE $(db) TO DISK = "$(path)\$(db).bak"
 C:>SQLCMD ic:\backup.sql -vdb="pubs" path="c:\data"

(2)SQLCMD Commands
 1) GO  쿼리를 실행한다.  옵션으로 숫자 'n'을 줄 경우 쿼리를 n번 실행한다.
 2) :RESET statement cache삭제
  CF) SQLCMD에서 모든 sql문은  batch terminator를 만날때까지 입력된 내용은 캐싱하고 있다.
 3) :ED  현재 SQL Buffer 에서 SQLCMDEDITOR에 등록된 Editor를 실행 Default = (edit)
  이미 실행시킨 Query에서
 4) :!! Windows Command를 실행시킬 수 있다.
 5) :QUIT 현재 SQLCMD Session을 즉시 종료한다 (statement cache내용은 실행하지 않고무시한다)
 6) :Exit 괄호가 없으면 quit과 같은 동작을 한다
    :Exit() Statement Cache에 저장되어 있던 쿼리들을 실행하고 종료한다. (에러나면 에러출력후종료)
    :Exit(query)Statement Cache에 저장되어 있던 쿼리들을 실행하고 ()안의쿼리까지 실행후 종료
 7) :SETVAR 변수이름 변수값  변수할당 삭제 하고 싶으면 :SETVAR 변수이름 을 하면된다.
 8) :r "파일이름(SQL스크립트)"   외부에 있는 SQL스크립트를 불러와서 실행
    CF)파일 확장자는 중요하지 않음 sqlcmd는  sql statement가 들어있는 txt파일로 인식한다.
 9) :SERVERLIST Local에 등록되어있거나 같은 네트워크에 있는 SQL SERVER를 보여줌
 10):listvar 현재 정의 되어 있는 변수리스트를 출력한다.
 11):현재 statement cache에 저장되어 있는 내용을 출력한다.
 12):ERROR <filename>/STDERR/STDOUT - 에러결과를 지정된 file이나 stderr, stdout 으로 출력시킨다.
 13):OUT <filename>/STDERR/STDOUT - 쿼리 결과를 지정된 file이나 stderr, stdout 으로 출력시킨다.
 14):PERFTRACE <filename>/STDERR/STDOUT 성능 통계정보(-pw정)를 지정된 file이나 stderr, stdout 으로 출력시킨다.
 15):ON ERROR [exit/ignore] 실행중 에러가 발생했을 경우 어떻게 처리할 것인가를 정한다.
  Exit) 에러를 출력하고 종료한다.
  Ignore)에러를 무시하고 실행을 계속한다.에러메시지는  출력해줌.
 16):XML [ON/OFF] - 결과값에 XML 데이타가 있을때 적절한 XML형식을 지정 가능하다.
  CF)이 옵션을 on으로 할 경우 에러메시지도 XML형식으로 나온다.
 
SSMS에서 도구-->옵션-->쿼리실행-->SQL Server-->일반--> "기본적으로SQLCMD 모드로 새쿼리를 엽니다" 체크박스를 클릭하면 SSMS에서도 SQLCMD를 활용가능하다.
-CF)몇몇 지원되지 않는 명령어도 있음

posted by bedbmsguru
2010. 11. 3. 11:37 SQL SERVER

(1)MASTER

1)master 복구모드로 sql 실행
-- If the instance is the default instance:
NET START MSSQLSERVER /f /T3608
-- For a named instance:
NET START MSSQL$instancename /f /T3608

 2)master디비의 백업을 restore  한다.
 3)SQL SERVER가 자동으로 종료된다 다시 정상적으로 재시작 하면 된다.

이동:

Sql Server Configuration Manager --> 서버 -->속성-->고급 --> 시작매개변수 의 파라미터를 변경해주면 된다.

-dD:\sqldat\master.mdf; --master 디비 위치

-eD:\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Log\ERRORLOG; --에러로그

-lD:\SQLDAT\mastlog.ldf --master디비 로그위치

파라미터 변경후 실제 파일의 위치를 옮긴후 SQL SERVER 재시작

 

(2)MSDB
 1)먼저 SQL SERVER Agent를 중지한다.
 2)MSDB의 모드를 SINGLE_USER로 변경한다(alter database MSDB set single_user with ROLLBACK IMMEDIATE)
 3)MSDB 백업을 다시 로딩한다.
  RESTORE DATABASE MSDB
  FROM FILE=C:\msdb.bak
  WITH RECOVERY
 4)MSDB의 모드를 MULTI_USER로 변경한다 (alter database MSDB set MULTI_user with ROLLBACK IMMEDIATE)

 

(3)MODEL
 1)일반 USER DB처럼 RESTORE가 가능하다.  
 한가지 주의사항은 로그작업 손실이 어쩌구 저쩌구 나오는데 with replace를 붙여서 가볍게 무시해준다..(-_-V)
 restore database model from disk = 'c:\sqldat\model.bak' with replace

 

(4)tempdb
   SQL SERVER가 재시작 할때마다 재생성 하기때문에 특별히 백업은 필요없다
   기존 tempdb가 있던 디스크가 문제가 생기거나 했을경우 아래의 쿼리를 이용해 생성경로를 변경해주면 된다.


master디비를 제외한  다른 DB 들도 이동법은 tempdb와 마찬가지 이다

단 tempdb를 제외한 다른DB 들은 실제 mdf, ldf를 신규로 옮길려고 하는 위치로 이동해야한다.

   CF)SQL SERVER를 재시작 해야 적용됨
   ALTER DATABASE tempdb
          MODIFY FILE (NAME = tempdev, FILENAME = 'c:\SQLDat\tempdb.mdf');
   ALTER DATABASE tempdb
   MODIFY FILE (NAME = templog, FILENAME = 'c:\SQLDat\templog.ldf');

'SQL SERVER' 카테고리의 다른 글

SQL SERVER Named Instance에 연결하기  (0) 2010.11.03
SQLCMD에 관해서..  (0) 2010.11.03
특정 프로세스가 실행중인 쿼리 보기  (0) 2010.11.03
Blocking 체크  (0) 2010.11.03
인덱스 조각화 확인  (0) 2010.11.03
posted by bedbmsguru
2010. 11. 3. 11:36 SQL SERVER

SELECT st.* FROM sys.sysprocesses AS a
CROSS APPLY sys.dm_exec_sql_text(a.sql_handle) AS st
WHERE spid = 54

'SQL SERVER' 카테고리의 다른 글

SQLCMD에 관해서..  (0) 2010.11.03
System Database Restore OR move하는법  (0) 2010.11.03
Blocking 체크  (0) 2010.11.03
인덱스 조각화 확인  (0) 2010.11.03
UPGRADE Vs MIGRATION  (0) 2010.11.03
posted by bedbmsguru
2010. 11. 3. 11:36 SQL SERVER

SELECT  tl.request_session_id AS WaitingSessionID
       ,wt.blocking_session_id AS BlockingSessionID
       ,wt.resource_description
       ,wt.wait_type
       ,wt.wait_duration_ms
       ,DB_NAME(tl.resource_database_id) AS DatabaseName
       ,tl.resource_associated_entity_id AS WaitingAssociatedEntity
       ,tl.resource_type AS WaitingResourceType
       ,tl.request_type AS WaitingRequestType
       ,wrt.[text] AS WaitingTSql
       ,btl.request_type BlockingRequestType
       ,brt.[text] AS BlockingTsql
FROM    sys.dm_tran_locks tl
        JOIN sys.dm_os_waiting_tasks wt
        ON tl.lock_owner_address = wt.resource_address
        JOIN sys.dm_exec_requests wr
        ON wr.session_id = tl.request_session_id
        CROSS APPLY sys.dm_exec_sql_text(wr.sql_handle) AS wrt
        LEFT JOIN sys.dm_exec_requests br
        ON br.session_id = wt.blocking_session_id
        OUTER APPLY sys.dm_exec_sql_text(br.sql_handle) AS brt
        LEFT JOIN sys.dm_tran_locks AS btl
        ON br.session_id = btl.request_session_id

'SQL SERVER' 카테고리의 다른 글

System Database Restore OR move하는법  (0) 2010.11.03
특정 프로세스가 실행중인 쿼리 보기  (0) 2010.11.03
인덱스 조각화 확인  (0) 2010.11.03
UPGRADE Vs MIGRATION  (0) 2010.11.03
SQL SERVER Function  (0) 2010.11.03
posted by bedbmsguru
2010. 11. 3. 11:35 SQL SERVER

--sys.dm_db_index_physical_stats(디비ID, object_ID, indexid(null은 모든인덱스), partition_number , mode(Valid inputs are DEFAULT, NULL, LIMITED, SAMPLED, or DETAILED. The default (NULL) is LIMITED.)

select a.index_id, name, avg_fragmentation_in_percent
from sys.dm_db_index_physical_stats (DB_ID(), OBJECT_ID('테이블이름'), NULL, NULL, NULL) AS a
inner join sys.indexes AS b
 on a.object_id = b.object_id and a.index_id = b.index_id

'SQL SERVER' 카테고리의 다른 글

특정 프로세스가 실행중인 쿼리 보기  (0) 2010.11.03
Blocking 체크  (0) 2010.11.03
UPGRADE Vs MIGRATION  (0) 2010.11.03
SQL SERVER Function  (0) 2010.11.03
Log Shipping 잘 되고 있는지 체크용 쿼리  (0) 2010.11.03
posted by bedbmsguru
2010. 11. 3. 11:35 SQL SERVER

1)Migration
(장점)
- UPGRADE에 비해 좀더 세밀한 컨트롤이 가능하다.
- NEW INSTANCE 와 OLD INSTANCE를 나란히 테스트 가능하다.
- 전체 셋업 과정중에도 서비스가 가능하다.(OLD INSTANCE에서 서비스를 하기 때문에)
- NEW INSTANCE를 셋업도중 에러가 나도 크게 문제가 되지 않는다.
(단점)
- NEW INSTANCE를 설치할 서버가 추가로 필요하다.
- 같은서버에 NAMED INSTANCE로 추가 설치를 할 경우 Application 코드의 수정이 필요하다.
- NAMED INSTANCE로 설치했을경우 DEFAULT INSTANCE를 삭제한다고 해도 NAMED INSTANCE를 DEFAULT INSTANCE로 만들 수 없다.

(2) UPGRADE
(장점)
- 작은 System에서는 MIGRATION보다 속도가 빠르다.
- 추가적인 서버가 필요없다.
- Application의 수정이 필요없다.
(단점)
- UPGRADE도중  데이타나 INSTANCE에 대해 컨트롤이 거의 불가능하다.
- UPGRADE도중 DB서버가 OFFLINE이 된다.
- 모든 SQL서버 컴포넌트에 업그레이드가 좋은 방법이 되는 것은 아니다. (Ex:Analysis Service Cube 같은 경우는 Migration이 더 적절함)

posted by bedbmsguru