글
(MSSQL) 이번 주 월요일, 다음 주 월요일 구하기
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)
'IT/Programming > MSSQL' 카테고리의 다른 글
(MSSQL) BACKUP LOG cannot be performed because there is no current database backup (1) | 2016.04.27 |
---|---|
(MSSQL) 모든 테이블 인덱스 재생성 쿼리 (0) | 2016.01.17 |
(MSSQL) 현재 데이터베이스에 사용자 그룹 또는 역할 이(가) 이미 있습니다 (1) | 2015.06.25 |
유용한 DMV (0) | 2015.05.12 |
로그 테이블 설계 원칙 (0) | 2015.02.25 |
글
(MSSQL) 모든 테이블 인덱스 재생성 쿼리
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
'IT/Programming > MSSQL' 카테고리의 다른 글
(MSSQL) BACKUP LOG cannot be performed because there is no current database backup (1) | 2016.04.27 |
---|---|
(MSSQL) 이번 주 월요일, 다음 주 월요일 구하기 (0) | 2016.01.18 |
(MSSQL) 현재 데이터베이스에 사용자 그룹 또는 역할 이(가) 이미 있습니다 (1) | 2015.06.25 |
유용한 DMV (0) | 2015.05.12 |
로그 테이블 설계 원칙 (0) | 2015.02.25 |
글
(MSSQL) 현재 데이터베이스에 사용자 그룹 또는 역할 이(가) 이미 있습니다
보통 이러한 오류는 MSSQL 에서 데이터베이스 파일(mdf, ldf) 를 연결/복원을 하고, 명령을 실행하려 할 때 발생한다.
데이터베이스를 연결/복원한 후, 데이터베이스를 올바르게 구동시키기 위해 기존 데이터베이스에서 사용하던 유저를 생성하여 명령을 실행시켰을 때
와 같은 오류가 발생한다. 유저가 이미 있다니? 이게 무슨 말일까?
이는 기존의 데이터베이스에 존재하는 유저의 이름과 새로 생성한 유저의 이름은 같지만 서로의 고유 번호인 SID(보안 ID)가 서로 달라서 생기는 문제다. 이름은 같지만 보안 ID가 달라 다른 유저로 인식하는데, 새로 생성한 유저로 명령을 실행하려니 기존에 똑같은 이름의 유저가 존재하여 위와 같은 오류를 발생시키는 것이다.
이를 해결하기 위해서는 유저를 매핑하는 프로시저인 sp_change_users_login 프로시저 또는 ALTER USER 명령을 사용하면 된다. 이 명령을 사용하게 되면 기존 데이터베이스 사용자를 SQL Server 로그인에 매핑하게 된다.
기존 데이터베이스에 존재하는 유저의 ID가 TestUser, 데이터베이스 세팅을 위해서 새로 생성한 유저의 ID도 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
'IT/Programming > MSSQL' 카테고리의 다른 글
(MSSQL) BACKUP LOG cannot be performed because there is no current database backup (1) | 2016.04.27 |
---|---|
(MSSQL) 이번 주 월요일, 다음 주 월요일 구하기 (0) | 2016.01.18 |
(MSSQL) 모든 테이블 인덱스 재생성 쿼리 (0) | 2016.01.17 |
유용한 DMV (0) | 2015.05.12 |
로그 테이블 설계 원칙 (0) | 2015.02.25 |
글
[CMake] Could NOT find OpenSSL
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
'IT/Programming > Solution/Tip' 카테고리의 다른 글
KDevelop apt-get 패키지 설치 (0) | 2016.02.22 |
---|---|
KDevelop 소스 설치 (0) | 2016.02.22 |
E492: Not an editor command: SrcExpl (1) | 2015.06.03 |
WASD 키와 방향키가 서로 바뀌었을 때 (51) | 2015.03.08 |
(Javascript) getElementsByName() 이 작동하지 않을 때 (1) | 2014.11.04 |
글
E492: Not an editor command: SrcExpl
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이 올바르게 작동하는지 확인하도록 하자.
'IT/Programming > Solution/Tip' 카테고리의 다른 글
KDevelop 소스 설치 (0) | 2016.02.22 |
---|---|
[CMake] Could NOT find OpenSSL (0) | 2015.06.11 |
WASD 키와 방향키가 서로 바뀌었을 때 (51) | 2015.03.08 |
(Javascript) getElementsByName() 이 작동하지 않을 때 (1) | 2014.11.04 |
FTP PORT 명령 (0) | 2014.10.30 |