본문 바로가기

DataBase/MS-SQL

OPENQUERY 를 이용한 INSERT/SELECT/UPDATE INSERT INTO OPENQUERY([LINKED SERVER], ' SELECT [COLUMNS] FROM [TABLE]') VALUES ~ SELECT [ '이건 입맛대로~' ] * INSERT, UPDATE, DELETE, SELECT 모두 OPENQUERY(연결된 서버, 'SQL문자열') 로동일합니다.
excel linked server 메시지 7303, 수준 16, 상태 1, 줄 31 출처 : http://sqlsql.tistory.com/39164bit 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계정설정 혹시 NT S..
MSSQL 메시지 7347 - 예상 데이터 길이와 일치하지 않는 데이터를 반환했습니다. 메시지 7347, 수준 16LINKED SERVER (연결된 서버) 를 통하여 쿼리시 (OPENROWSET, OPENQUERY)오라클이나 MySQL 에서 "예상 데이터 길이와 일치하지 않는 데이터를 반환했습니다." 라는메세지는 지금까지의 경험(짧은^^;;) 으로는 숫자형의 데이터를 문자형으로 전환하면되었던 것 같다.
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
링크드 서버로 업데이트(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_..
[엑셀쿼리 오류] 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. 데이터베이..
자주 쓰이는 시스템 뷰 모두 셀렉트절 (SELECT) 을 이용할것. INFORMATION_SCHEMA.COLUMNS[ 데이터베이스명, 테이블스키마명, 테이블명 각테이블에 있는 컬럼명, 각 컬럼타입등의 데이터등 ] INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE[ 데이터베이스의 테이블명과 해당 테이블에 PK가 걸려있는 필드명과 PK 이름 ] INFORMATION_SCHEMA.ROUNTINES[ 데이터베이스의 모든 PL/SQL CREATE ] SYS.DATABASE_FILES[ 데이터베이스 파일정보 ]
MSSQL [@@IDENTITY, SCOPE_IDENTITY, IDENT_CURRENT] 출처 : http://mcpicdtl.blogspot.com/2009/12/mssql-identity-scopeidentity.html @@IDENTITY--> @@의 의미는 세션을 뜻한다 즉 해당 세션에서 테이블에 INSERT된 최종값을 의미한다어느 정도의 부하가 있는 시스템에선 사용가능하나 멀티스레팅이 구현된 환경에서는 원하는 최종값이 아닌 엉뚱한 값이 들어갈 확률이 높다해당 테이블에 대한 여러 접속자가 값을 반영하고 있는 경우 사용하면 안된다. 싱글 스레드 전용(중규모 사이트 용)IDENT_CURRENT('테이블명')--> 함수에서 알수 있듯이 세션에 상관 없이 해당 테이블에 대한 최종값 또는 들어갈 값을 의미한다다른 IDENTITY와 다르게 데이터 입력전에 그 값을 알 수 있다 하지만 테이블 전체..