2024. 3. 8. 10:53

MSSQL에서 Linked server연결시 보안 컨텍스트를 지정할 수 있다.(원격로그인정보)

 

원격 로그인 정보는 Window Remote Account가 아니라  SQL account정보이다.

 

 

 

 

다만, 해당 연결된 서버의 SQL계정과 암호를 입력하려는데, 암호화중에 오류가 발생했다고 계정 지정이 불가능한 상황이 생긴다.

 

해결돼서 다시 메세지가 발생하진 않아 퍼왔다.

 

 

 

구글링을 해보니 SMK(Service Master key)가 MDF,LDF이동, 복구 변경시에 변경돼서 달라진 거라고 하더라.

 

그래서 해결책으로 

 

1)

BACKUP SERVICE MASTER KEY TO FILE = 'c:\service_master_key' ENCRYPTION BY PASSWORD = '[password]'
2) 복원
RESTORE SERVICE MASTER KEY FROM FILE = 'c:\service_master_key' DECRYPTION BY PASSWORD = '[password]' FORCE

 

이렇게 하면 된다고 하는데, 이것도 지금 오류메세지는 안나는데 무슨 암호화작업이 실패했다 이런 메세지가 뜨더라...

 

 

그래서 또 구글링을 했더니 SMK를 덮어씌우면서 갱신하는 명령어가 있다고 하더라

 

ALTER SERVICE MASTER KEY FORCE REGENERATE

 

이거하고나니 SMK가 갱신돼서 linked server 원격 로그인 지정이 잘 된다.

 

#linked server #SMK 

Posted by YKYun
2018. 4. 18. 17:59

http://www.red-gate.com/products/sql-development/sql-search/

테이블, 함수, 프로시저 등등 이름이나 내용을 검색 가능.


컬럼 및 테이블 사용처 검색할때 유용함.

Posted by YKYun
2018. 4. 11. 11:24

if OBJECT_ID('tempdb..#tempTable') is not null

begin

drop table #tempTable

end

Posted by YKYun
2018. 4. 9. 10:01

테스트 하려고 query창에서 해당서버 조회시 


로그인하지 못했습니다. 신뢰할 수 없는 도메인에서 로그인을 시도하여 Windows 인증과 함께 사용할 수 없습니다. (Microsoft SQL Server, 오류: 18452)


메세지가 표현됨




Agent 실행시 


다음 사용자로 실행되었습니다: dbo. 가장 상태에서는 가장된 로그인에 대한 매핑 없이 연결된 서버를 사용할 수 없습니다. [SQLSTATE 42000] (오류 7437).  단계가 실패했습니다.


메세지가 나옴.


검색 해도 인증관련해서는 windows인증이 아닌 SQL계정 통합인증으로 설정하라는것만 나옴.


linked server(연결된서버)에서 interface로 추가할때는 안되더니..


script로 실행하니 정상작동된다.


-> 계획까지 재 생성함.(소유자 및 실행계정반영)



--linked server 추가 script

정보에 [] 제외하고 입력( [serverAddress], [dbConnectID], [DBConnectPWD])



EXEC master.dbo.sp_addlinkedserver @server = N'[serverAddress]', @srvproduct=N' ', @provider=N'MSDASQL', @provstr=N'Driver={SQL Server};Database=master;Server=[0.0.0.0];UID=[dbConnectID];PWD=[DBConnectPWD];'

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'[serverAddress]',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL

Posted by YKYun
2018. 3. 26. 14:10

DB-사용자-스키마에 해당사용자가 소속되어있는 스키마 삭제 후 


사용자 재 생성

Posted by YKYun
2018. 3. 21. 13:56

** SQL에러코드 메세지 찾기

SELECT * FROM sys.messages where language_id=1042 and message_id = 에러코드




**DB 용량확인


sp_spaceused


select top 10

 table_name = convert(varchar(30), min(o.name))

 , table_size = convert(int, ltrim(str(sum(reserved) * 8.192 / 1024., 15, 0))), UNIT = 'MB'

from sysindexes i

 inner join sysobjects o on (o.id = i.id)

where i.indid in (0, 1, 255)

 and o.xtype = 'U'

group by i.id

order by 2 desc




** 남은 하드 용량 확인


master.dbo.xp_fixeddrives



** 프로시저 전체 보기(스크립트 포함)

select ROUTINE_NAME, ROUTINE_DEFINITION   

  from information_schema.routines   

 where routine_type = 'PROCEDURE';



** DB Identity 초기화

DBCC CHECKIDENT('[Table]', RESEED, 0)




** SQL 메모리점유 퍼센트순위 

select

       PERCENT_RANK() over (order by requiredTime) as ranking, requiredTime

from SURVEY.dbo.T_SamplingList_2014000028

where requiredTime is not null



Posted by YKYun
2015. 8. 28. 16:41

파일시스템으로만 배포하다가 웹배포를 한 후 정리한 내역.

1. 툴 : Microsoft Visual Studio Professional 2012

버전 11.0.61030.00 Update 4

Microsoft .NET Framework

버전 4.5.50709

2. 배포 OS : Window Server 2008 R2 Standard


1. IIS에서 웹 플랫폼 설치관리자를 다운로드 및 설치한다.

http://www.microsoft.com/ko-kr/download/details.aspx?id=6164


설치후 IIS 새로고침 -> 해당아이콘 확인











2. 웹 플랫폼 설치관리자에서 웹 배포 컴포넌트 다운로드

제품 탭에 존재(사진1)하지만 검색하면 찾기쉬움(사진2)

해당컴포넌트를 추가,추가,추가,추가하여 설치

필자는 이미 설치되어있으므로 추가가아닌 설치로 보임.


사진1)


사진2)



3. 관리서비스 설정

관리서비스 설정시 우측 중지시킨후(사진 번호1) 원격연결허용으로 체크(사진 번호2) 및 Windows자격증명 또는 IIS 관리자 자격증명으로 라디오버튼 변경



4. 배포를 위한 웹 게시용 계정을 생성



5. IIS 관리자에서 해당 웹페이지를 클릭 후 IIS관리자 권한을 실행(사진1)후 우측 사용허용을 누른 후 팝업창에서 해당 계정을 해당 웹페이지 관리자로 등록(사진2)


사진1)


사진2)




6. IIS 관리자 시작페이지 우클릭 -> 사이트연결 클릭하여 연결 추가







7. 비쥬얼스튜디오에서 게시 설정후 게시배포





Posted by YKYun
2014. 12. 17. 14:30

1. 서버에서 관리도구 - 구성요소 서비스를 연다.



2. 아래 사진과같이 옵션을 설정해준다.

XA 트랜잭션을 사용에 체크를 하여야 SQL에서 옵션처리를 통해 분산트랜잭션이 처리가 가능함.





3.SQL에 연결된서버를 등록하고 아래과같이 속성에서 설정.



4. 여기까지 처리가되었다면 일단 분산트랜잭션을 처리할 Client서버에서 [트랜잭션 처리할서버].[DB_Name].dbo.TableName으로

조회가 가능하다. (연결이 정상적인지 확인)


5.분산트랜잭션을 처리할 서버A 와 트랜잭션내에서 DML이 처리되는서버 B라고 했을 때

두 서버 모두 135번 포트를 열어준다.


6.프로시저에서 

set xact_abort on            -- XA 트랜잭션으로 처리 옵션

begin distributed tran        -- 분산트랜잭선 처리

넣은 후 A서버에서 데이터 작업 후 B서버로 작업을 한다.


7. 여기까지왔는데 정상적으로 되지않았다. (여기서 헤멤)

A서버와 B서버가 C클래스까지 같은 네트워크망이여야 가능하다.

내부네트워크망이 Netbios로 등록해줘야 한다.


Netbios등록방법 :  C:\Windows\System32\drivers\etc 경로로 들어가보면

hosts 파일이 있다.

해당파일을 노트패드로 열어보면 

# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
#      102.54.94.97     rhino.acme.com          # source server
#       38.25.63.10     x.acme.com              # x client host

# localhost name resolution is handled within DNS itself.
# 127.0.0.1       localhost
# ::1             localhost

이라고 적혀있는데

말그대로 For example 처럼 

B서버를 등록해준다 (텍스트 형태로 저장)
ex) 123.123.123. B

B서버에도 해당파일을 열어
A서버를 등록해준다
ex) 123.123.123.123 A


이렇게 처리후 정상적으로 작동.



Posted by YKYun
2014. 9. 25. 18:12

F9      현재 라인에 Breakpoint를 지정/해제 
Ctrl + Shift + F9    현재 Edit하고 있는 소스파일에 지정된 모든 Breakpoint 해제 
Ctrl + ]     '{'괄호의 짝을 찾아줌 ('{'에 커서를 놓고 눌러야 함} 
Ctrl + J, K     #ifdef 와 #endif의 짝을 찾아줌 
Ctrl + L     한 라인을 클립보드로 잘라내기 (Cut)  
Ctrl + Shift + L    한 라인을 삭제 
Alt + Mouse     블록 설정 세로로 블록 설정하기 (마우스로) 
Ctrl + Shift + F8    세로로 블록 설정하기 (키보드로), 취소할 때는 Esc키를 눌러야 함 
블록 설정 -> Tab    선택된 블록의 문자열을 일괄적으로 들여쓰기(Tab) 적용 
블록 설정 -> Shift + Tab   선택된 블록의 문자열을 일괄적으로 내어쓰기 적용 
Alt + F8    인덴트 정리. 범위 선택 후 사용하면 해당 범위를 표준 인덴트로 바꾸어줌.
Shift + F9    디버그 모드에서 해당 변수를 바로 Watch Window에 등록.
Ctrl + U    선택된 영역을 소문자로 바꿈
Ctrl + Shift + U    선택된 영역을 대문자로 바꿈 
Ctrl + Shift + 8    문단기호 표시/감추기 : Tab은 ^, Space는 .으로 표시 
Ctrl + D     툴바의 찾기 Editbox로 이동 
Ctrl + Up/Down Arrow    커서는 고정시키고 화면만 스크롤 시키기 
Shift + Alt + 커서 이동
Alt + 마우스 드래그 세로로 영역 선택
Shift + F12    선언으로 이동<?XML:NAMESPACE PREFIX = O /><?XML:NAMESPACE PREFIX = O />

 

=== 찾 기 ===
Ctrl +F3 현재커서의 단어 찾기
Ctrl +D 툴바의 찾기 Editbox로 이동
Ctrl + I 문자열 입력 점진적으로 문자열 찾기 (Incremental Search)
Ctrl + Shift + F3    현재 커서에 있는 문자열 찾기 backward 
SHIFT + ALT + O 프로젝트에 있는 파일 찾기 ( 비주얼 어시스트)
Alt + M 파일에서 method의 리스트를 보여준다.
Ctrl + ] '{}'괄호, #ifdef, #endif 의 짝을 찾아줌
F3      찾은 문자열에 대한 다음 문자열로 이동 (Next Search)
Ctrl + H     문자열 찾아 바꾸기 (Replace) 


=== 이동 관련 ===
CTRL + PGDOWN (or END) 문서 끝
CTRL + PGUP (or HOME) 문서 처음
F12 선언부로 가기
Ctrl + F2 현재 라인에 북마크 지정/해제
F2 지정된 다음 북마크로 이동
Ctrl + Shift + F2 지정된 모든 북마크를 해제
함수간 이동

 

=== 주석처리 ===
Ctrl+K, Ctrl+C 선택 영역 주석 처리 (.NET 2003, 2005)
Ctrl+K, Ctrl+U 선택 영역 주석 없앰 (.NET 2003, 2005)

 

=== 아웃라인 ===
Ctrl+M, Ctrl+L 모든 아웃라인 보이기/숨기기 (Edit.ToggleAllOutlining)
Ctrl+M, Ctrl+M 현재 아웃라인 보이기/숨기기 (Edit.ToggleOutliningExpansion)
Ctrl+M, Ctrl+H 선택영역 아웃라인 지정(Edit.HideSelection)
Ctrl+M, Ctrl+U 현재 아웃라인 삭제 (Edit.StopHidingCurre
Ctrl+M, Ctrl+P 모든 아웃라인 삭제(Edit.StopOutlining Text Editor)

 

=== 기 타 ===
ALT + F7 프로젝트 속성
Shift+Alt+Enter : 전체화면 토글
Ctrl + Shift + F9 현재 Edit하고 있는 소스파일에 지정된 모든 Breakpoint 해제

디버그 모드에서 Watch Window에서 추가하고픈 변수나 등등 앞에 커서를 위치 시킨후 Shift + F9

 

 

☆☆ Studio 단축키 ☆☆


♣ 일반 단축키
   - 모두 저장 : Ctrl + Shift + S
   - 문서창 닫기 : Ctrl + F4
   - 다음 문서 : Ctrl + F6, 이전 문서 : Ctrl + Shift + F6
   - 다음 도구 : Alt + F6
   - 들여 쓰기 : Teb, 내어 쓰기 : Shift + Teb
   - 주석 달기 : Ctrl + E + C, 주석 해제 : Ctrl + E + U
   - 파일에서 찾기 : Ctrl + Shift + F, 중단 : Alt + F3, S
   - 찾기 이전으로 : Ctrl + F3, 다음으로 : Shift + F3
   - 증분검색 정방향 : Ctrl + I, 역방향 : Ctrl + Shift + I
   - 문서 끝 : Ctrl + End, 시작 : Ctrl + Home, 행 이동 : Ctrl + G
   - 자동 줄바꿈 : Ctrl + E, W
   - 공백 보기 : Ctrl + E, S,   가로 공백 삭제 : Ctrl + E, \
   - #region 펼치기 & 접기 : Ctrl + M, M
   - 클립보드에 복사 : Ctrl + Shift + Num
   - 클립보드링 순환 : Ctrl + Shift + Insert


♣ 디버그시 단축키
   - 직접실행창 표시 : Ctrl + Alt + I
   - 모든 중단점 지우기 : Ctrl + Shift + F9
   - 중단점 추가 : Alt + F9
   - 중단점 설정/해지 : F9
   - 프로그램에서 사용하는 모든 모듈 보기 : Ctrl + Alt + U
   - 간략한 조사식 : Ctrl + Alt + Q, Shift + F9
   - 디버그 다시 시작 : Ctrl + Shift + F5
   - 디버그 커서까지 실행 : Ctrl + F10
   - 프로시져 단위 디버그 : F10
   - 한단계씩 디버그 : F11
   - 프로시져 나가기 : Shift + F11
   - 디버깅 중지 : Shift + F5
   - 디버그 커서까지 실행 : Ctrl + F10
   - 디스어셈 플리 설정/해제 : Ctrl + F11
   - 디버그 조사식 1,2,3,4 : Ctrl + Alt + W, 1, 2, 3, 4
   - 디버그 하지 않고 시작 : Ctrl + F5


♣ DataBase 단축키
   - 데이터베이스 선택영역 실행 : Ctrl + R, Ctrl + D
   - 데이터 베이스 한 단계씩 실행 : Ctrl + D, Ctrl + S
   - SQL 선택영역 실행 : Ctrl + R


♣ 도구창
   - 책갈피 창 : Ctrl + W, B
   - 책갈피 지정 : Ctrl + B, T
   - 책갈피 이전 : Ctrl + B, P  -- 다음 : Ctrl + B, N
   - 모든 책갈피 지우기 : Ctrl + B, C
   - 매크로 창 : Alt + F8
   - 매크로 기록 : Shift + Ctrl + R

Posted by YKYun
2014. 8. 28. 17:33
/*
닷넷의 SmtpClient 클래스를 사용하여 메일을 보내는 방법입니다.
MSDN의 예제는 빠진 부분이 많아서 그걸 사용하면 제대로 되지 않더군요
삽질하다가 구글링으로 알아냈습니다.
 
아래 예제는 구글의 Gmail을 사용하는 것으로 했습니다..
 
Gmail의 주소는 smtp.gmail.com 입니다.
포트번호는 587을 사용합니다.
구글에서는 465도 사용 할수 있다고 하지만 사용하면 연결이 되지 않습니다.
*/
 
 
SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
client.UseDefaultCredentials = false; // 시스템에 설정된 인증 정보를 사용하지 않는다.
client.EnableSsl = true; // SSL을 사용한다.
client.DeliveryMethod = SmtpDeliveryMethod.Network; // 이걸 하지 않으면 Gmail에 인증을 받지 못한다.
client.Credentials = new System.Net.NetworkCredential("구글 아이디", "패스워드");
MailAddress from = new MailAddress(메일발신자E-Mail,"이름", System.Text.Encoding.UTF8);
MailAddress to = new MailAddress(메일수신자E-Mail);
MailMessage message = new MailMessage(from, to);
 
message.Body = "This is a test e-mail message sent by an application. ";
string someArrows = new string(new char[] { '\u2190', '\u2191', '\u2192', '\u2193' });
message.Body += Environment.NewLine + someArrows;
message.BodyEncoding = System.Text.Encoding.UTF8;
message.Subject = "test message 2" + someArrows;
message.SubjectEncoding = System.Text.Encoding.UTF8;
 
try
{
// 동기로 메일을 보낸다.
client.Send(message);
// Clean up.
message.Dispose();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}



하지만 구글SMTP를 이용하여메일을 보내게되면

발신자(MailMessage.From)이 변경되지않고 구글메일로 계속 보내지게됩니다.

이런 현상을 해결하기위해 구글계정에서 설정해줄 수 있습니다.


1. 지메일접속 -> 톱니바퀴모양클릭


2.환경설정클릭


3. 계정및 가져오기클릭 -> 다른이메일주소 추가클릭




4.팝업창에서 답장주소를 다르게 지정.


위와같이 설정하면 해당지메일 계정으로 발신하게되면 지정한 메일로 발신됩니다.

'ASP.NET' 카테고리의 다른 글

Visual Studio 단축키  (0) 2014.09.25
C# 외부IP 획득하기  (0) 2014.04.30
DevExpress Gridview Update,Cancel버튼 숨기기  (0) 2014.03.26
C# 배열 선언,초기화  (0) 2014.03.25
C# 정규표현식  (0) 2014.03.20
Posted by YKYun