블로그 이미지
010-9967-0955 보미아빠

카테고리

보미아빠, 석이 (500)
밥벌이 (16)
싸이클 (1)
일상 (1)
Total
Today
Yesterday

달력

« » 2015.4
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

공지사항

최근에 올라온 글

 

-- sysprep 하기전

-- linked server 가 있는 경우
-- windows 의 sid 가 변경된 경우 master key 를 백업 후 복원
BACKUP SERVICE MASTER KEY TO FILE = 'C:\service_master.key' ENCRYPTION BY PASSWORD = 'P@ssw0rd'

 

-- sysprep 후

-- 복원
RESTORE SERVICE MASTER KEY FROM FILE = 'C:\service_master.key' DECRYPTION BY PASSWORD = 'P@ssw0rd' FORCE

 

 

services.msc 에서 sql insname 확인

 

-- mssql$insname  -> mssqlserver

 

-- default

net stop mssqlserver

net start mssqlserver

 

-- instance

net stop mssql$insname

net start mssql$insname /m /f /T3608

 

-- default  

sqlcmd -S. -A

 

-- instance

sqlcmd -S.\insname -A

 

create login newhostname\Administrator from windows with default_database=master

go

alter server role sysadmin add member newhostname\Administrator

go

 

grant connect sql to newhostname\Administrator

go

alter login newhostname\Administrator enable

go

 

select srvname from master.dbo.sysservers where srvid = 0

go

 

-- default

exec sp_dropserver 'oldinstancename'

go
exec sp_addserver 'newinstancename', local

go

 

-- instance

exec sp_dropserver 'oldhostname\oldinstancename'

go
exec sp_addserver 'newhostname\newinstancename', local

go

 

Posted by 보미아빠
, |

기존에 메모리가 약 10GB 이고 SATA 로 구성된 하드가 5개 달려있는데 데이터가 2TB 정도 되는 OLTP 서버가 있고 읽기가 매우 빈번한 환경이 있다고 생각해보자 ! 그런데, 우리는 SQL Server 2014 다 ! 이러면 SSD 한장 꼽으면 아무런 어플리케이션 변경없이 (5배? 디스크 최대 IOPS Vs. SSD IOPS 와 많은 메모리로 인해 데이터를 디스크와 메모리로 올리고 내리고 하는 과정을 제거할 수 있으므로)정도 성능 향상을 시킬수 있다.

 

기존 시나리오가 입력만 많다면 SQL Server 2014의 BPE (Buffer Pool Extention)로 효과가 없을 것이다 (쓰기가 빈번하다면 LDF 를 반드시 SSD에 두는게 유리하다. WAL(Write-Ahead Logging) 이므로 Non-volatile 디바이스에 반드시 써야 하므로). 반면, select 의 경우는 Disk 에서 한번은 느리게 읽어오겠지만 (미리 강제로 warm-up 시키는 방법도 쓸 수 있으니 뭐 별 상관없어 보인다.) 그 후는 조금 느린 메모리가 많은 시스템을 상상하면 된다. 처리 대상 대이터의 99% 가 약 100GB 정도에 존재한다면 아주 좋은 시나리오가 될것같다.  생각해보라 우리는 10GB의 물리 메모리만 있는데, 이 데이터 계속적인 페이징 아웃이 일어나면서 데이터를 읽어야 하고 이는 모두 disk i/o 가 된다. 그런데, 이것이 모두 ssd 100GB를 메모리로 인식시켜 캐시 되어주니 얼마나 이롭겠는가? 이를 가르켜 disk i/o 를 ssd로 효과적으로 오프로드 했다라고 표현한다. 그래 이것은 어떻게 하면 비용 효율적인 서버를 구성하느냐의 문제인 것이다. 모두 SSD 로 구성된 데이터베이스와 적당한 메모리를 장착한 서버가 훨씬 빠르지만! 비용을 줄이고 성능을 극대화 할 수 있는 시나리오로 보는것이 맞다. 

 

DW의 경우 대부분이 순차읽기이고 순차쓰기가 발생하고 읽었던 데이터를 재사용하는 경우가 거의 없을 수 있다. (쿼리하는 데이터가 다르다면) 위 OLTP 시나리오와 같이 효과적이지 않을 수 있다. 그러나, 뭐 읽어야 하는 데이터가 매번 최근 데이터이고, 우리는 전체를 SSD 로 넣을 능력도 안되고, 매번 쿼리하는 데이터의 99%가 100GB 미만이다. 이러면 100GB 정도 SSD 로 BPE 기능을 써 구성하면 나는 효과가 있을 듯 하다. 물론 첫 번째는 좀 느리겠지만 뒷 쿼리들은 빨라질꺼다. 아래 링크는 똘똘한 아저씨들이 글을 잘 적어놓았으니 읽어보길 바란다. 만든이들은 DW 쿼리에 BPE를 권고하진 않는다.

 

하고싶은 이야기는 모두다 좋은게 없고 모두다 나쁜 경우는 없다. 적절하게 아키텍처를 이해하고 구성하면 비용 효율적으로 시스템을 구성 할 수 있다는 것이다. 뭐 계속 좋은 기능은 나오지..... 가격이........ ㅜ.ㅜ ......자꾸 비싸지니 자꾸 없어지고 결국은 어떤 서비스에서도 안쓸려고 한다. DBMS를 잘못 선택한거 아닌가 하는 생각이 자꾸드네....

 

 

https://msdn.microsoft.com/ko-kr/library/dn133176.aspx

http://blogs.technet.com/b/dataplatforminsider/archive/2013/07/25/buffer-pool-extension-to-ssds-in-sql-server-2014.aspx

https://msdn.microsoft.com/en-us/library/cc645993.aspx

 

The buffer pool extension size can be up to 32 times the value of max_server_memory for Enterprise editions, and up to 4 times for Standard edition.

 

 

 

 

 

 

Posted by 보미아빠
, |

http://www.sqlport.com/sql-server/content/undocumented

Posted by 보미아빠
, |
https://support.microsoft.com/en-us/kb/78363

 

Posted by 보미아빠
, |

Association Rule 

복수의 현상이 동시에 발생할 가능성이 높음을 찾는것

결국 동시에 발생하는 현상을 분석한다. 

맥주 기저기, 와인 바비큐 그릴 등 바스켓 분석이 대표적이다. 


Sequence 

어떤 현상이 일어나면 다음에 다른 현상이 일어날것

분석시 시계열 데이터나 주문번호 같은것이 필요하다. 


Cluster 

복수의 속성을 갖는 집단의 구성요소를 비슷한 속성을 갖는 그룹(cluster)으로 나누기위한 방법

카테고리를 찾는것

예전에 산수시간에 배운 우상단을 1사분면이라고 보고 counterclockwise 로 돌면서 2,3,4 분면을 나누어 보는것이다. 

예를들면 시간배분을 결정할때 긴급함을 가로축으로 두고 중요함을 세로축으로 두어 일의 중요도와 시급성을 나누어 효율적으로 일 처리를 위한 것이다. 이를 세그멘테이션이라고 부르고 가까운것을 묶어 클러스터에 의한 세그멘테이션을 나눌 수 있다. 


Decision Tree 

특정 상황이 발생할지를 조사해 발생결과에 대해 영향을 미치게 하는 속성의 영향도와 상호 관련성을 시각화

주요한 영향원을 분석한다. 고객의 속성별로 상품에대한 구입확율을 구한다고 가정하면, 남여 구분, 자녀유무 구분, 차량 보유여부 등을 구분해 어떤사람이 이 상품을 많이 구매한다라고 결정하고, 그 주요 원인을 분석하는 것을 말한다. 





 


Posted by 보미아빠
, |

64bit sql server 에 excel 2013을 링크드 서버나 직접쿼리를 할 때 

일단 드라이버를 깔아야 한다. http://www.microsoft.com/en-us/download/details.aspx?id=13255


그런 후, 드라이버의 inprocess 설정을 한다. 

USE [master]

GO

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1

GO

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1

GO


계정설정 

혹시 NT Service\MSSQL$SQL2012 이런식으로 되어 있으면 -> 로컬시스템으로 바꾼다. ㅠ.,ㅠ

아니면 해당 폴더에 위 계정이 액세스 가능하게 하면 될 듯 하다. appdata\local\temp 역시 권한이 필요한듯 

이런거 다 귀찮으면 로컬 시스템으로 변경~


NT Service\MSSQL$SQL2012 였을때 에러 메시지 

연결된 서버 "(null)"의 OLE DB 공급자 "Microsoft.ACE.OLEDB.12.0"이(가) 메시지 "지정되지 않은 오류입니다."을(를) 반환했습니다.

메시지 7303, 수준 16, 상태 1, 줄 31

연결된 서버 "(null)"에 대한 OLE DB 공급자 "Microsoft.ACE.OLEDB.12.0"의 데이터 원본 개체를 초기화할 수 없습니다.


링크드 서버 연결 명령어 

/****** Object:  LinkedServer [bb]    Script Date: 2015-04-23 오전 11:08:34 ******/

EXEC master.dbo.sp_addlinkedserver @server = N'bb', @srvproduct=N'ACE', @provider=N'Microsoft.ACE.OLEDB.12.0', @datasrc=N'c:\sqltag\Book1.xlsx', @provstr=N'Excel 12.0; HDR=Yes'

 /* For security reasons the linked server remote logins password is changed with ######## */

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'bb',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL

GO


인프로세스 쿼리 방법 

SELECT * FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0', 'Data Source=c:\sqltag\Book1.xlsx;Extended Properties=Excel 12.0')...[Sheet1$]


SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0; HDR=YES; IMEX=1; Database=F:\cmdb\fault티켓\Book1.xlsx', 'SELECT * FROM [Sheet1$]')


SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0; 

HDR=YES; IMEX=1; Database=\\127.0.0.1\f$\cmdb\fault티켓\FQ261_2011.xlsx', 'SELECT * FROM [sheet1$]')


SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0; 
HDR=NO; IMEX=1; Database=c:\sqltag\Book1.xlsx', 'SELECT * FROM [Sheet1$]')

SELECT * FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0', 'Data Source=\\127.0.0.1\c$\sqltag\Book1.xlsx;Extended Properties=EXCEL 12.0')...[Sheet1$] ;


-- 읽어보기 귀찮다.

-- 스타트 계정 로컬시스템으로 변경 후
exec sp_configure 'Ad Hoc Distributed Queries', 1
reconfigure with override

USE [master]
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1
GO

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0; HDR=YES; IMEX=1; Database=C:\event\faultPrco_2010q1.xls', 'SELECT * FROM [data$]')

Posted by 보미아빠
, |

http://www.practicalsqldba.com/2012/03/caveats-of-control-server-permission.html

재미있는 시나리오군...뭐 어짜피 control server 권한이 있다는건.....대단히 큰 권한이긴 하지....


DENY IMPERSONATE ON LOGIN::sa TO [controlserverlogin]

Sql2014에서.impersonate any login ... 

Posted by 보미아빠
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함