라벨이 DB인 게시물 표시

오라클 ODBC 32/64비트 플랫폼 선택

ODBC 드라이버 설치할 때 64비트 OS에 64비트와 32비트 드라이버 모두 설치 가능하다. ODBC를 사용할 어플리케이션과 동일한 비트를 설치해야한다. 예를 들어, 파이썬 64비트에서 사용할 것이라면, 64비트 ODBC 드라이버를 설치해야한다.

MSSQL 백업 세트 만료 기한

MSSQL 백업 설정 옵션 중, "백업 세트 만료 기한"이란, 동일 백업파일을 덮어써서 백업이 손실되지 않도록 하는 옵션이다. 즉, 만료기한이 5일이면, 백업시점 이후 5일 이내에는, 그 백업파일에 with init 옵션으로 백업할 수 없다.

MSSQL SP에서 외부 DLL 사용하는 방법 (CLR 확장저장프로시저)

MSSQL SP에서 외부 DLL 사용하는 방법 (CLR 확장저장프로시저) 1.사전작업(CLR환경을사용하도록설정합니다.) EXEC sp_configure 'show advanced options', 1 GO RECONFIGURE GO EXEC sp_configure 'clr enabled', 1 GO RECONFIGURE GO 2. Visual Studio에서 dll 생성 - 클래스라이브러리 3. 클래스를 생성한다. 4. namespace는 삭제한다. 5. class를 public으로 만든다. 6. static으로 Function이 될 메서드를 생성한다. 8. 생성된 DLL을 SQL server의 특정 위치에 복사 9. 어셈블리를 만든다. -- DROP ASSEMBLY Encrypt create assembly Encrypt from 'c:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Binn\ClassLibrary1.dll' 10. Function을 만든다. --DROP FUNCTION dbo.fnEncrypt --DROP FUNCTION dbo.fnDecrypt --EXTERNAL NAME <method_specifier> assembly_name.class_name.method_name CREATE FUNCTION fnEncrypt(@value nvarchar(max)) RETURNS nvarchar(max) AS EXTERNAL NAME Encrypt.csStringEncrypter.Encrypt GO CREATE FUNCTION fnDecrypt(@value nvarchar(max)) RETURNS nvarchar(max) AS EXTERNAL NAME Encrypt.csStringEncrypter.Decrypt GO 11. Test select dbo.fnEncrypt('9901011122334...

MSSQL 2008 계정(권한) 관리 개념 정리

[MSSQL 2008 계정(권한) 관리 개념 정리] 기본적으로 데이터베이스 전체 범위의 계정 '로그인' (보안>로그인) 각 데이터베이스의 안에 '사용자' (데이터베이스 선택>보안>사용자) 이렇게 이중 구조로 되어있다. 로그인 생성 시 '데이터베이스 사용자' 매핑을 해주면, 그 매핑된 데이터베이스에 사용자가 자동으로 생성된다. 단, '로그인'을 삭제해도 '사용자'가 삭제되지는 않는다. '로그인'은 '서버 역할' (public, sysadmin 등) 의 멤버로 들어갈 수 있고, '사용자'는 '데이터베이스 역할' (ab_datareader, db_owner 등) 의 멤버로 들어갈 수 있다. 모든 로그인은 public 서버 역할의 멤버로 들어가며 제외될 수 없다. 로그인 생성 시 데이터베이스 사용자 매핑과, 데이터베이스 역할에 멤버로 추가할 수 있다. 사용자는 스키마를 소유하고, 스키마가 개체들을 소유한다. 기본적으로 dbo 스키마를 소유하도록 설정된다. db_owner 라는 이름의 스키마와 다름. dbo 라는 이름의 사용자와 헷갈리지 않도록 주의. 테이블 이름 앞에 붙어있는 dbo 가 바로 dbo 스키마를 뜻한다.

MSSQL 특정 뷰 권한주기

MSSQL 2008 특정 뷰 권한주기 데이터베이스 사용자 속성 > 보안개체 > 테이블, 뷰 등 대상 선택 > 삽입/수정/삭제 등 권한 설정 > 컬럼 단위로 설정 가능 메시지 229, 수준 14, 상태 5, 줄 2 개체 '*****', 데이터베이스 '****', 스키마 'dbo'에 대한 SELECT 권한이 거부되었습니다. [해결] 뷰 선택 권한을 주었어도, 그 뷰에서 참조하는 개체에 대한 선택 권한이 없으면 위와 같은 메시지가 나온다. dbo 스키마에 선택 권한을 주면 가능하지만, 더 세밀하게 테이블 단위 혹은 컬럼 단위로 권한 부여가 가능하다.

MSSQL 스키마를 소유한 사용자는 삭제할 수 없다.

제목: Microsoft SQL Server Management Studio ------------------------------ 사용자 '****'에 대한 삭제이(가) 실패했습니다.  (Microsoft.SqlServer.Smo) 도움말을 보려면 다음을 클릭하십시오: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=11.0.5058.0+((SQL11_PCU_Main).140514-1820+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=삭제+User&LinkId=20476 ------------------------------ 추가 정보: Transact-SQL 문 또는 일괄 처리를 실행하는 동안 예외가 발생했습니다. (Microsoft.SqlServer.ConnectionInfo) ------------------------------ 데이터베이스 보안 주체는 데이터베이스의 스키마을(를) 소유하며 삭제할 수 없습니다. (Microsoft SQL Server, 오류: 15138) 도움말을 보려면 다음을 클릭하십시오: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=10.50.1600&EvtSrc=MSSQLServer&EvtID=15138&LinkId=20476 [해결] 사용자 삭제 시 위와 같은 메시지가 나오는 경우 해결방법! 스키마를 소유한 사용자는 삭제할 수 없다. 스키마 속성에서 스키마 소유자를 바꾸고 삭제하면 된다. 기본적으로 생성된 스키마는 동일한 이름의 데이터베이스 역할이 소유자이다. 예) db_datareader, db_owner...

MSSQL 단일사용자 모드 해제

-- 단일사용자 해제 sp_who2 kill 117 USE master GO EXEC sp_dboption 'ITS', 'single user', 'FALSE' --sp_dboption 'DB명', '옵션', '값'

ms sql 지정한 키가 사전에 없습니다. 해결방법

ms sql 2012에서 아래와 같은 메시지가 나오는 경우가 있다. 제목: mscorlib ------------------------------ 지정한 키가 사전에 없습니다. ------------------------------ 해결방법 : SP1 설치

MSSQL->ORACLE 연결 TNS 에러

제목: Microsoft SQL Server Management Studio ------------------------------ 연결된 서버에 대한 연결 테스트에 실패했습니다. ------------------------------ 추가 정보: Transact-SQL 문 또는 일괄 처리를 실행하는 동안 예외가 발생했습니다. (Microsoft.SqlServer.ConnectionInfo) ------------------------------ 연결된 서버 "****"에 대한 OLE DB 공급자 "OraOLEDB.Oracle"의 데이터 원본 개체를 초기화할 수 없습니다. 연결된 서버 "****"의 OLE DB 공급자 "OraOLEDB.Oracle"이(가) 메시지 "ORA-12154: TNS:could not resolve the connect identifier specified"을(를) 반환했습니다. (Microsoft SQL Server, 오류: 7303) 도움말을 보려면 다음을 클릭하십시오: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=10.50.1600&EvtSrc=MSSQLServer&EvtID=7303&LinkId=20476 ------------------------------ 단추: 확인 ------------------------------ 해결 >>> tnsnames.ora 파일에 문제가 있다. MSSQL이 설치된 서버에 오라클 클라이언트 설치 경로 D:\oracle\product\10.2.0\client_1\NETWORK\ADMIN 여기 폴더에 tnsnames.ora 파일을 아래처럼 수정해준다. 연결이름=   (DESCRIPTION=     (ADDRESS=       (PROTOCOL=TCP) ...

Count rows for all tables 모든 테이블의 행 수 카운트

-- Count rows for all tables 모든 테이블의 행 수 카운트 SP_MSForEachTable 를 사용하면 간단하게 할 수 있다. CREATE TABLE #counts (     table_name varchar(255),     row_count int ) EXEC sp_MSForEachTable @command1='INSERT #counts (table_name, row_count) SELECT ''?'', COUNT(*) FROM ?' SELECT table_name, row_count FROM #counts ORDER BY table_name, row_count DESC DROP TABLE #counts --Ref from stack overflow.

QUOTED_IDENTIFIER

배치스케줄이 아래의 에러를 뱉으며 동작하지 않는다. 다음 사용자로 실행되었습니다: NT AUTHORITY\SYSTEM. 다음 SET 옵션의 설정이 잘못되어 DELETE이(가) 실패했습니다. 'QUOTED_IDENTIFIER'. SET 옵션을 인덱싱된 뷰 및/또는 계산 열에 대한 인덱스 및/또는 필터링된 인덱스 및/또는 쿼리 알림 및/또는 XML 데이터 형식 메서드 및/또는 공간 인덱스 작업과(와) 함께 사용할 수 있는지 확인하십시오. [SQLSTATE 42000] (오류 1934).  단계가 실패했습니다. SET QUOTED_IDENTIFIER ON 설정을 넣으면 된다! Identifier(식별자)를 "큰따옴표" 안에 넣으면 쓸 수 있다는 설정인데, OFF되어있다한들 이게 왜 문제가 된건지??

누가 나를 참조하는지

누가 나를 참조하는지 sp_fkeys TABLE_NAME TABLE_NAME 은 참조 당하는 테이블을 써준다. 그럼 FK가 있는 테이블 리스트가 나온다.

sql delete from nested select

sql delete from nested select join해서 delete할 대상을 구하기 위해 nested query를 사용할 때 주의해야한다. declare @t1 table (n int) insert @t1 values(1) insert @t1 values(2) insert @t1 values(3) declare @t2 table (n int) insert @t2 values(1) insert @t2 values(2) insert @t2 values(3) --이렇게 하면 의도대로 3만 지워질까? delete @t1 from (    select *    from @t1   ) x where x.n=3 --이렇게 하면? delete @t2 from (    select *    from @t2    where n=3   ) x select * from @t1 select * from @t2 --result:Nothing...! --아무것도없다!

sql non overlapping random number

sql non overlapping random number 중복되지 않는 랜덤 값으로 채우기 ex) Fill random number from 0 to 15 declare @t int = 0 declare @tt table (n int) while( (select count(n) from @tt) < 15) begin  set @t = floor(rand()*15) --Generate 0~15  if @t not in (select n from @tt)  begin   insert into @tt values(@t)  end end select n from @tt

MySQL ODBC 연결 에러

Connection Failed [MySQL][ODBC 5.3(a) Driver]Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled): 예전 버전 드라이버로 연결하니까 잘 된다. mysql-connector-odbc-3.51.30-winx64

증분백업과 차등백업의 차이

둘 다 전체백업 이후 변화된 부분만을 백업하는 것은 동일하다. [전체][증분1][증분2][증분3] 증분2는 증분1 이후 변화된 부분만 증분3은 증분2 이후 변화된 부분만을 기록한다. 그래서 복원 시 중간의 증분백업분들이 모두 필요하며, 손상 시 복원 불가. [전체][차등1][차등2][차등3] 전체백업 이후 백업시점까지 변화된 모든 내용을 기록한다. 전체백업과 복원하려는 시점의 차등백업분 하나로 복원한다.