(MSSQL) 이번 주 월요일, 다음 주 월요일 구하기

IT/Programming/MSSQL 2016. 1. 18. 12:30

 DECLARE @now datetime;
 DECLARE @next_week_monday_00 datetime
 DECLARE @this_week_monday_00 datetime

 SET @now = '2016-01-17'
 IF 1 = DATEPART(WEEKDAY, @now)
  SET @this_week_monday_00 = DATEADD(DAY, DATEDIFF(DAY, 0, DATEADD(DAY, -6, @now)), 0)
 ELSE
  SET @this_week_monday_00 = DATEADD(DAY, DATEDIFF(DAY, 0, DATEADD(DAY, DATEPART(WEEKDAY, @now) * -1 + 2, @now)), 0)
 SET @next_week_monday_00 = DATEADD(DAY, 7, @this_week_monday_00) 

 

설정

트랙백

댓글

(MSSQL) 모든 테이블 인덱스 재생성 쿼리

IT/Programming/MSSQL 2016. 1. 17. 18:45

DECLARE @i int, @sql varchar(1000)
DECLARE @tablename varchar(1000),@ownerName  varchar(1000)

SET @i = 1

DECLARE DB_Cursor CURSOR FOR
 SELECT TABLE_SCHEMA, TABLE_NAME FROM INFORMATION_SCHEMA.TABLES  WHERE TABLE_TYPE = 'BASE TABLE' ORDER BY TABLE_SCHEMA, TABLE_NAME
OPEN DB_Cursor

FETCH NEXT FROM DB_Cursor
INTO @ownerName, @tablename
WHILE @@FETCH_STATUS = 0
BEGIN

 SET @sql = 'ALTER INDEX ALL ON ' + @ownerName + '.' + @tablename + ' REBUILD WITH (PAD_INDEX = ON, FILLFACTOR = 90) '
 EXEC (@sql)

 PRINT CONVERT(VARCHAR, @i) + '__' + @ownerName + '.' + @tablename + '............ OK'
 SET @i = @i + 1

 FETCH NEXT FROM DB_Cursor
 INTO @ownerName, @tablename

END

CLOSE DB_Cursor
DEALLOCATE DB_Cursor

 

출처: http://text.zpne.net/6

설정

트랙백

댓글

(MSSQL) 현재 데이터베이스에 사용자 그룹 또는 역할 이(가) 이미 있습니다

IT/Programming/MSSQL 2015. 6. 25. 17:40

보통 이러한 오류는 MSSQL 에서 데이터베이스 파일(mdf, ldf) 를 연결/복원을 하고, 명령을 실행하려 할 때 발생한다.

 

데이터베이스를 연결/복원한 후, 데이터베이스를 올바르게 구동시키기 위해 기존 데이터베이스에서 사용하던 유저를 생성하여 명령을 실행시켰을 때

 

현재 데이터베이스에 사용자 그룹 또는 역할  <유저 이름> 이(가) 이미 있습니다

 

와 같은 오류가 발생한다. 유저가 이미 있다니? 이게 무슨 말일까?

 

이는 기존의 데이터베이스에 존재하는 유저의 이름과 새로 생성한 유저의 이름은 같지만 서로의 고유 번호인 SID(보안 ID)가 서로 달라서 생기는 문제다. 이름은 같지만 보안 ID가 달라 다른 유저로 인식하는데, 새로 생성한 유저로 명령을 실행하려니 기존에 똑같은 이름의 유저가 존재하여 위와 같은 오류를 발생시키는 것이다.

 

이를 해결하기 위해서는 유저를 매핑하는 프로시저인 sp_change_users_login 프로시저 또는 ALTER USER 명령을 사용하면 된다. 이 명령을 사용하게 되면 기존 데이터베이스 사용자를 SQL Server 로그인에 매핑하게 된다.

 

기존 데이터베이스에 존재하는 유저의 ID가 TestUser, 데이터베이스 세팅을 위해서 새로 생성한 유저의 ID도 TestUser일 경우 쿼리는 다음과 같다.

EXEC sp_change_users_login 'update_one', 'TestUser', 'TestUser'

또는

ALTER USER TestUser WITH LOGIN = TestUser

 

물론, 기존의 데이터베이스가 여러개 존재할 경우, 기존의 각 데이터베이스에 등록된 유저 정보를 모두 매핑해야하므로 각 데이터베이스마다 모두 위의 명령을 한차례씩 실행시켜주어야 한다.

 

MSDN에 따르면, SQL Server 2014 까지는 sp_change_users_login 프로시저가 지원되고 있지만 이 프로시저는 언젠가 삭제될 예정이라고 한다. 이 명령을 사용하고 있는 응용 프로그램이 있다면 위에 기술한 ALTER USER 명령을 사용하는 것을 권고한다.

 

참고 : https://msdn.microsoft.com/ko-kr/library/ms174378(v=sql.120).aspx

 

설정

트랙백

댓글

[CMake] Could NOT find OpenSSL

IT/Programming/Solution/Tip 2015. 6. 11. 12:32

CMake를 사용할 때, OpenSSL이 설치가 되어있음에도 불구하고

 

Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_LIBRARIES  OPENSSL_INCLUDE_DIR)

 

위와 같은 오류가 발생하는 경우가 있다. 에러메시지를 보면 OPENSSL_ROOT_DIR, OPENSSL_LIBRARIES, OPENSSL_INCLUDE_DIR 변수를 찾을 수 없다고 한다. cmake 를 실행할 때 해당 변수를 수동으로 설정하여 넘겨주면 된다.

 

-D 옵션을 사용하여 넘겨줄 수 있다.

 

이를테면 다음과 같다.

 

 cmake -D build=debug -D bit=64 -D OPENSSL_INCLUDE_DIR /usr/local/ssl/include/openssl/ -D OPENSSL_ROOT_DIR=/usr/local/ssl -D OPENSSL_LIBRARIES=/usr/local/ssl/lib/ CMakeLists.txt

 

물론 사용자가 어떻게 설치하였느냐에 따라 경로는 바뀔 수 있으므로, 본인이 OpenSSL을 설치하였는지를 다시 한 번 확인하고, 설치하였다면 pkg-config 또는 find 등을 사용하여 경로를 찾아보도록 하자.

 

* 패키지 설치로도 이 문제를 해결할 수 있다.

Ubuntu의 경우 : apt-get install libssl-dev

CentOS의 경우 : yum install openssl-devel

설정

트랙백

댓글

E492: Not an editor command: SrcExpl

IT/Programming/Solution/Tip 2015. 6. 3. 18:57

Vim 에서 Vundle이나 수동으로 SrcExpl 플러그인을 설치했을 때, 올바르게 설치하고 설정하였음에도 불구하고 E492: Not an editor command: SrcExpl 와 같은 오류가 발생하는 경우가 있다.


이런 경우, 해당 플러그인 디렉터리에 가서 파일들이 올바르게 존재하는지를 확인해야 한다.

 



Source Explorer 플러그인은 SrcExpl 로 이름이 바뀌어서, Vundle의 BundleSearch 또는 PluginSearch 로 검색이 되지 않는다.

(2015년 06월 기준으로, 아직까지도 Vundle에서는 예전 Source Explorer 으로 검색된다.)

 

SrcExpl 의 공식 페이지는 https://github.com/wesleyche/SrcExpl 이다.

다음의 명령을 입력하여 최신 SrcExpl 플러그인을 내려받도록 하자.

 

git clone https://github.com/wesleyche/SrcExpl ./Plugins/SrcExpl/

 

필자는 현재 디렉터리의 Plugins/SrcExpl 디렉터리에 설치할 생각이어서 위와 같이 입력하였다. 경로는 알맞게 수정하길 바란다.

 

이후에, 일반적인 플러그인 설치과정 처럼 vimrc 파일에 플러그인 명을 추가하여 플러그인으로 인식되게 하면 된다.

Plugin SrcExpl

 

필자는 플러그인 명(디렉터리 명) 을 SrcExpl 로 하였기에 SrcExpl 로 하였으니 플러그인을 설치한 디렉토리 명에 따라 알맞게 수정하길 바란다.

 

적용을 마친 후, vim에서 :SrcExpl 또는 :SrcExplToggle 을 입력하여 SrcExpl이 올바르게 작동하는지 확인하도록 하자.

 

 

설정

트랙백

댓글