본문 바로가기

DataBase/MS-SQL29

OPENQUERY 를 이용한 INSERT/SELECT/UPDATE INSERT INTO OPENQUERY([LINKED SERVER], ' SELECT [COLUMNS] FROM [TABLE]') VALUES ~ SELECT [ '이건 입맛대로~' ] * INSERT, UPDATE, DELETE, SELECT 모두 OPENQUERY(연결된 서버, 'SQL문자열') 로 동일합니다. 2016. 1. 12.
excel linked server 메시지 7303, 수준 16, 상태 1, 줄 31 출처 : http://sqlsql.tistory.com/391 64bit sql server 에 excel 2013을 링크드 서버나 직접쿼리를 할 때 일단 드라이버를 깔아야 한다. http://www.microsoft.com/en-us/download/details.aspx?id=13255 그런 후, 드라이버의 inprocess 설정을 한다. USE [master]GOEXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1GOEXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1GO 계정설정 혹시 N.. 2016. 1. 12.
MSSQL 메시지 7347 - 예상 데이터 길이와 일치하지 않는 데이터를 반환했습니다. 메시지 7347, 수준 16LINKED SERVER (연결된 서버) 를 통하여 쿼리시 (OPENROWSET, OPENQUERY) 오라클이나 MySQL 에서 "예상 데이터 길이와 일치하지 않는 데이터를 반환했습니다." 라는메세지는 지금까지의 경험(짧은^^;;) 으로는 숫자형의 데이터를 문자형으로 전환하면되었던 것 같다. 2016. 1. 12.
Code Formatter - 코드정렬 SQL Server 2008 R2. SQL Server Management Studio 쿼리를 작성하다 보면, 토드나 SQL Gate 등 코드정렬(포맷) 기능이 너무아쉽다. 이에 구글링해서 좋은 툴을 찾았다. MSI 파일 형태로 제공된다.아래 파일로 다운로드 받아도 됩니다. 확장자 zip 를 지워주시고 msi 파일형태로 바꿔 실행시키시면 됩니다. 링크 : http://architectshack.com/PoorMansTSqlFormatter.ashx 그런데.. SQLER 에.. 이미 윤선식님이 깔끔하게 정리를 해놓으셨었음.ㅡㅡ;; 링크 : http://www.sqler.com/504675 2013. 7. 3.
링크드 서버로 업데이트(Update) 조인해서 다수의 데이터를 조건별로 수정할때 졸다가 업데이트를 조건을 안걸고 F5 키를 눌러버리고 말았다..그래서 다행히도 관계형이 아닌 테이블이어서 원본 테이블에는 지장이 없는 테이블이었기에 (운좋았다~ㅋㅋ)조인을 걸어서 수정을 할 수 있게 했는데 까먹으니까 써놓자~ UPDATE MemberInfor SET MemberInfor.member_id = b.member_id FROM -- 실제 조인 연동 (링크드 서버와) MemberInfor a INNER JOIN ( SELECT * FROM OPENQUERY(LinkedServerName, ' SELECT member_id, member_name FROM TestDB.dbo.MemberInfor a, TestDB.dbo.MemberInfor b WHERE a.member_id = b.member_.. 2013. 5. 29.
[엑셀쿼리 오류] Microsoft.Jet.OLEDB.4.0 이(가) 오류 ** 오류메시지서버: 메시지 7399, 수준 16, 상태 1, 줄 1OLE DB 공급자 'Microsoft.Jet.OLEDB.4.0'이(가) 오류를 보고했습니다. 공급자에서 오류에 관한 정보를 주지 않았습니다.OLE DB 오류 추적 [OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0' IDBInitialize::Initialize returned 0x80004005: 공급자에서 오류에 관한 정보를 주지 않았습니다.]. SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 5.0;Database=c:\SampleCode.xls', Sheet1$) 정상적으로 위 코드를 작동시키기 위해서는 반드시 아래의 조건을 지켜준다.1. 데이터베이.. 2013. 5. 29.
자주 쓰이는 시스템 뷰 모두 셀렉트절 (SELECT) 을 이용할것. INFORMATION_SCHEMA.COLUMNS[ 데이터베이스명, 테이블스키마명, 테이블명 각테이블에 있는 컬럼명, 각 컬럼타입등의 데이터등 ] INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE[ 데이터베이스의 테이블명과 해당 테이블에 PK가 걸려있는 필드명과 PK 이름 ] INFORMATION_SCHEMA.ROUNTINES[ 데이터베이스의 모든 PL/SQL CREATE ] SYS.DATABASE_FILES[ 데이터베이스 파일정보 ] 2013. 5. 29.
MSSQL [@@IDENTITY, SCOPE_IDENTITY, IDENT_CURRENT] 출처 : http://mcpicdtl.blogspot.com/2009/12/mssql-identity-scopeidentity.html @@IDENTITY--> @@의 의미는 세션을 뜻한다 즉 해당 세션에서 테이블에 INSERT된 최종값을 의미한다어느 정도의 부하가 있는 시스템에선 사용가능하나 멀티스레팅이 구현된 환경에서는 원하는 최종값이 아닌 엉뚱한 값이 들어갈 확률이 높다해당 테이블에 대한 여러 접속자가 값을 반영하고 있는 경우 사용하면 안된다. 싱글 스레드 전용(중규모 사이트 용) IDENT_CURRENT('테이블명')--> 함수에서 알수 있듯이 세션에 상관 없이 해당 테이블에 대한 최종값 또는 들어갈 값을 의미한다다른 IDENTITY와 다르게 데이터 입력전에 그 값을 알 수 있다 하지만 테이블 전.. 2013. 5. 29.
TRANSACTION[트랜잭션] - 롤백 처리에 대해서 1. 글로벌 변수 @@ERROR 를 이용한 BEGIN TRAN INSERT INTO TEST1 (T1, T2, T3) VALUES ('AA','BB','CC') INSERT INTO TEST2 (T1, T2, T3) VALUES ('AA','BB','CC') INSERT INTO TEST3 (T1, T2, T3) VALUES ('AA','BB','CC') IF (@@ERROR 0) COMMIT ELSE ROLLBACK ROLLBACK TRAN 2. TRY / CATCH & EXCEPTION 을 이용한 BEGIN TRY BEGIN TRAN INSERT INTO TEST1 (T1, T2, T3) VALUES ('AA','BB','CC') INSERT INTO TEST2 (T1, T2, T3) VALUES (.. 2013. 5. 29.
SQL MD5 함수 주목할 요소는 파라메터 데이터 타입 CREATE FUNCTION SQL_MD5 (@MD5_HASH_FIELDS VARCHAR(32)) RETURNS VARCHAR(32) AS BEGIN RETURN SubString(master.dbo.fn_varbintohexstr (HashBytes ('MD5', @MD5_HASH_FIELDS)), 3, 32) END 2013. 5. 29.
OPENROWSET 어느날 SQL Server 2000보다 SQL Server 2005가 좋은것이 무엇무엇이 있지? 누군가가 나에게 "왜 SQL Server 2000보다 SQL Server 2005가 좋아요?" 라고 물으면 어떻게 대답해야 하지? "그래 아직 내 머릿속에 이런것들이 정리가 되어 있지 않는구나" 라는 생각에 회사 팀원들과 하나하나 정리하면서 간략한 세미나형식으로 발표를 하기로 하였다. 그 첫번재 주제가 OPENROWSET 이다. OPENROWSET이란? 첫번째, 링크드서버로 연결되어 있지 않은 SQL Server에서 데이터를 읽을 때 사용한다. 두번째, 특정 파일의 데이터를 Table로 로드시키지 않고 내용을 읽는다. 여기서 잠깐!! 무작정 OPENROWSET을 사용하면 에러가 발생을 한다. 메시지 15281.. 2013. 5. 29.
CHARINDEX 를 이용한 문자열 필터링 /* 예) 회원가입자들의 중복제거된 이메일주소 */ SELECT DISTINCT substring (email_add, (charindex ('@', email_add) + 1), 20) AS email_address FROM TABLE_NAME WHERE substring (email_add, (charindex ('@', email_add) + 1), 20) LIKE '%.%' 2013. 5. 29.
스키마 바인딩시 에러;;; 스키마 바인딩할 수 없습니다. 이름은 두 부분으로 구성되어야 하며 개체는 자체 참조할 수 없습니다. CREATE VIEW HAN_RECOM_POINT_GIVE_LISTWITH SCHEMABINDINGAS 셀렉트 어쩌고 저쩌고 하는데 위와 같은 오류가 발생한다. 디지게 짜증나서 한참을 삽질하다 데이터베이스 사랑넷에서 관련 글이 있었다. 테이블이나 오브젝트에 열심히 dbo. 을 붙여주라고 해서, 붙여봤더니 정상적으로 생성. 그런데 짜증나는건 이유를 모르겠다. 왜 dbo. 를 넣었는데 된건지;;;그냥 그런가보다 숙지하기에는 기분이 별로다. 혹시 아시는 분들 지나가시다 보시면 답글좀 부탁드립니다.^^; 2012. 10. 31.
VIEW 인덱스 생성시 스키마바인딩 출처 : http://www.sqler.com/bSQLQA/bColumn/105239 안녕하세요. 비전팀 1기 강동운입니다. 이번에는 뷰를 생성할 때 WITH SCHEMABINDING 옵션에 대해서 얘기를 꺼내볼까 합니다. BOL에 찾아보면... SCHEMABINDING기본 테이블의 스키마에 뷰를 바인딩합니다. SCHEMABINDING을 지정하면 뷰 정의에 영향을 미치는 방법으로 기본 테이블을 수정할 수 없습니다. 뷰 정의 자체를 먼저 수정하거나 삭제하여 수정할 테이블에 대해 종속성을 제거해야 합니다. SCHEMABINDING을 사용하는 경우 select_statement에 참조되는 테이블, 뷰 또는 사용자 정의 함수의 두 부분으로 구성된 이름(schema.object)이 있어야 합니다. 참조된 개체는 .. 2012. 10. 31.
실행된 쿼리내역 조회 SELECT db_name(st.dbid) DBName, qs.total_elapsed_time, creation_time, last_execution_time, textFROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.plan_handle) AS stINNER JOIN sys.dm_exec_cached_plans AS cp ON qs.plan_handle = cp.plan_handleWHERE creation_time >= '2010-01-01 00:00:00' --AND db_name(st.dbid) is not null and cp.objtype = 'proc' --조건: 종류AND text LIKE '%delete%' O.. 2012. 10. 24.
MS-SQL 임시테이블 2012. 9. 19.
연결된 서버(Linked Server) 를 이용한 조건별 다수 업데이트 졸다가 업데이트를 조건을 안걸고 F5 키를 눌러버리고 말았다..그래서 다행히도 관계형이 아닌 테이블이어서 원본 테이블에는 지장이 없는 테이블이었기에 (운좋았다~ㅋㅋ)조인을 걸어서 수정을 할 수 있게 했는데 까먹으니까 써놓자~ UPDATE MemberInfor SET MemberInfor.member_id = b.member_id FROM -- 실제 조인 연동 (링크드 서버와) MemberInfor a INNER JOIN ( SELECT * FROM OPENQUERY(LinkedServerName, ' SELECT member_id, member_name FROM TestDB.dbo.MemberInfor a, TestDB.dbo.MemberInfor b WHERE a.member_id = b.member_.. 2012. 7. 2.
경고: 집계 또는 다른 SET 작업에 의해 Null 값이 제거되었습니다. MS-SQL 에서 GROUP BY 등으로 집계연산시에 NULL 값이 있으면,CASE 절로 예외처리 해줘도 경고: 집계 또는 다른 SET 작업에 의해 Null 값이 제거되었습니다. 와 같은 메세지가 나타난다. 이 메세지가 나타날때는 웹페이지에서 데이터로드시에는오류가 발생하기도 한다. 이에 SELECT 절 실행전에 아래 키워드를 넣어준다. SET ANSI_WARNINGS MS-SQL 도움말 참조. SET ANSI_WARNINGS는 다음 조건에 적용됩니다. ON으로 설정한 경우 SUM, AVG, MAX, MIN, STDEV, STDEVP, VAR, VARP, COUNT 등의 집계 함수에 NULL 값이 있으면 경고 메시지가 생성됩니다. OFF로 설정한 경우에는 경고가 발생하지 않습니다. ON으로 설정한 경우 0.. 2012. 5. 18.