글

라벨이 MS SQL인 게시물 표시

@@SERVERNAME 인식못할때

서버명 변경시 SQL 인스턴스명 인식하지 못하면 아래와 같이 수행 해결방법) 아래와 같이 구문 수행하고 SQL 재부팅 SELECT @@SERVERNAME                 AS oldname,        Serverproperty('Servername') AS actual_name EXEC  Sp_dropserver 'oldname' EXEC  Sp_addserver 'newname' ,'local'

SQL 2008 메일 설정 에러시

USE master ; GO --아래가 설정되지 않으면 ALTER DATABASE msdb SET ENABLE_BROKER ; GO --여기로 해보고 그래도 안되면 ALTER DATABASE msdb SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE --아래에서 다시 셋팅 ALTER DATABASE msdb SET NEW_BROKER WITH ROLLBACK IMMEDIATE 아래와 같이 서비스 브로커가 문제가 있다고 나오면 위 구문으로 처리하면 된다. Alter failed for database 'xxx' Cannot enable the Service Broker in database "xxx" because the Service Broker GUID in the database ( guid number ) does not match the one in sys.databases ( different guid number ) ALTER DATABASE statement failed.

MS SQL 에서 AES 256 암호키 생성시

삭제는 생성과 반대로 drop SYMMETRIC KEY <symmetrickey_id> drop CERTIFICATE <certificate_id> drop MASTER KEY 암호용키생성 IF NOT EXISTS (SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = <idvalue>)     CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'keyvalue....' GO 인증서 생성 CREATE CERTIFICATE <certificate_id> WITH SUBJECT = 'subject........'; GO 대칭키를 인증서로 암호 CREATE SYMMETRIC KEY <symmetrickey_id> WITH ALGORITHM = AES_256,      KEY_SOURCE = 'ENC_KEY',      IDENTITY_VALUE = 'ENC_VALUE_Key' ENCRYPTION BY CERTIFICATE <certificate_id>; GO 키 사용권한 부여 USE databasename; GRANT CONTROL ON SYMMETRIC KEY::<symmetrickey_id> TO usersqlid; USE databasename; GRANT CONTROL ON CERTIFICATE ::<certificate_id> TO usersqlid;

MS SQL] DB Restore 시 SQL 로그인 계정과 DB계정 매핑안될 때

이미지
MS SQL 에서 DB Restore시 SQL 계정과 DB에 생성되어 있는 계정이 매핑되지 않는 경우가 있는데 이런 경우 사용하는 명령입니다. 아래와 같이 Auto Fix 옵션과 로그인 계정정보를 넣으면 msdb에서 정보를 수정해 준다고 합니다. EXEC sp_change_users_login 'Auto_Fix', ' sql_login_id ' MSDN  참고 Syntax   sp_change_users_login  [  @Action   =  ]  ' action '     [  ,  [  @UserNamePattern   =  ]  ' user '  ]     [  ,  [  @LoginName   =  ]  ' login '  ]         [  ,  [  @Password   =  ]  ' password '  ] Arguments [  @Action   =  ]  ' action ' Describes the action to be performed by the procedure.  action  is  varchar(10) .  action  can have one of the following values. Value Description Auto_Fix Links a user entry in the  sys.database_principals  system catalog view in the cur...

dtsrun 실행하기

Store Procedure 로 수행하기 아래와 같이 명령문을 입력한다 S는 서버명 N은 패키지 명입니다. 슬래시 뒤에 물결표(~)가 있는 글자(예:  /~Z )는 매개 변수 값이 암호화되어 있고 뒤에 오는 값이 암호화된 값의 16진수 텍스트라는 것을 지정합니다 자세한 내용은 아래에 있는 MSDN 내용을 참고하시기 바랍니다. 명령문) dtsrun /S server_name  /U user_nrame  /P password  /N package_name  /M package_password  /R repository_name 사용예) select @mat_cmd='DTSRun /S "(local)" /N "Dts이름"  /E'   exec master..xp_cmdshell @mat_cmd MS-SQL 스케줄에 등록하기 1) 작업을 추가하고 작업 유형에 운영체제명령(CmdExec)를 선택한다. 2) 명령에 DTSRun /~로컬패키지코드 MSDN에 나와있는 dtsrun 실행하는 방법) dtsrun 유틸리티 dtsrun 유틸리티는 데이터 변환 서비스(DTS)를 사용하여 만들어진 패키지를 실행합니다. Microsoft® SQL Server™ msdb 데이터베이스, COM 구조 저장소 파일 또는 SQL Server 메타데이터 서비스에 DTS 패키지를 저장할 수 있습니다. 구문 dtsrun  [/?] | [     [         /[~]S server_name[\instance_name]          { {/[~]U user_name [/[~]P password]} | /E }     ]   ...

MS DTS ( SSIS Package ) 실행시 msdb에서 수행 안될때

MS SQL 2008 에서 SSIS Package를 만들어서 Execute Package Utility를 수행했을 때는 정상적으로 수행되는데, MSDB로 Package를 업로드 했을 때는 DTS Password Validate 에러가 뜨면서 수행이 안되는 경우가 있습니다. Solution 에서 수행이나 File, SSIS Package에서 잘 수행되는데  SQL Server로  Import 해서  xp_cmdshell로 수행이 안될 때 import package 방법을 다음과 같이 해보시기 바랍니다. SSMS 에서 Connect로 Intergration Service 에 연결후 폴더를 확장하면 Stored Package가 있습니다. 여기에서 MSDB를 선택하고 마우스 오른쪽 클릭하시면 Import package 메뉴가 나옵니다. Import package 를 선택후, 대상을 File System을 선택하고 Package 파일 경로를 선택합니다. 그 다음 Import Package as 에서 Protection Level을  Rely on server storage and ... 를 선택하고 확인을 합니다. 그런 다음 MS SQL 창에서  xp_cmdshell 로 DTS 명령문을 실행해보시면 수행되실겁니다.

sp_start_job 수행이 안될때(MS SQL 2008)

Application ID 에서 sp_start_job 이 수행되지 않을 때 일부 Application 에서는 스케줄 작업 등을 등록하고 App. 에서 Control 하는 경우가 있을것이다. Schedule에 등록된 작업을 수행하려면  sp_start_job @job_name 을 수행하면 된다. 그런데 일반 DB Login 아이디를 생성하면  sp_start_job을 수행할수 없다. MS SQL 2008 도움말을 확인해보니 다음의 권한이 있어야 실행이 가능하다. sysadmin의 권한을 가지거나 ( 이 권한은 막강하기 때문에 app에는 어울리지 않는다 ) 아래와 같이 권한이 있으면 수행이 된다. SQLAgentUserRole SQLAgentReaderRole SQLAgentOperatorRole SQL 도움말을 확인하면... By default, members of the  sysadmin  fixed server role can execute this stored procedure. Other users must be granted one of the following SQL Server Agent fixed database role in the msdb database: SQLAgentUserRole SQLAgentReaderRole SQLAgentOperatorRole Members of  SQLAgentUserRole  and  SQLAgentReaderRole  can only start jobs that they own. Members of  SQLAgentOperatorRole  can start all local jobs including those that are owned by other users. Members of  sysadmin  can start all loc...

[SQL]MS SQL 2000에서 2008로 업그레이드 체크할 사항(쿼리문)

SQL 2000=>2008 달라진점이 여러가지 있습니다만 그중에 쿼리문 관련하여 다음과 같은 사항은 체크해보는게 좋을 듯합니다. 1. Order by 절은 display 되는 필드명을 명시해야 합니다. 아래 구문은 SQL 2000에서는 허용이 되었습니다. Data2+data3이 data1로 표시됩니다. select Data1=data2+data3 from table1 order by data2 그런데, SQL 2008에서는 order by 에러가 발생합니다. 아래와 같이 수정을 하면 에러가 발생하지 않습니다. select Data1=data2+data3 from table1 order by Data1 즉, display 되는 필드를 적어야 합니다. 또한 아래와 같이 동일한 필드를 표시하는데 order by에 동일한 필드인 field1을 넣으면 애매한 필드라고 에러를 발생합니다. Display 필드명을 다르게 주고 order by를 하는게 좋습니다. Select field1,field1,field2 From table1 Order by field1 수정) Select Field_name=field1,field1,field2 From table1 Order by Field_name 2. *=, =* 와 같은 구문은 허용하지 않습니다. 2000버전에서는 left outer join, right outer join형태로 사용이 되었으나 데이터 표기시 Nullable 한 데이터에 대해서 제대로 표기 못하는 오류가 있어 Left outer join을 쓰도록 하고 있습니다. SQL2000에서는 허용이 되었으나 이후 버전에서는 left outer join을 사용해야 합니다. 3. temp table 생성시 길이가 0인 필드는 생성이 안됩니다. 아래 구문과 같이 공란( '' )에 대해서 테이블 생성시 에러가 발생합니다. ...

[SQL] MS SQL2008에서 메일 사용하기

이미지
SQL 2000에서 2008로 업그레이드시 아래와 같이 구성됩니다. Legacy 아래에 SQL Mail 항목으로 들어가네요. SQL 2000에서는 xp_sendmail을 사용했으나 SQL 2008에서는 sp_send_dbmail을 사용합니다. 아래 그림의 DatabaseMail 항목에 들어갑니다. Database Mail 설정은 별도로 다시 다루겠습니다. xp_sendmail -> sp_send_dbmail 항목 변경이 되었습니다. Xp_sendmail에서는 아래와 같이 사용하는게 일반적입니다. exec @result = master.dbo.xp_sendmail @recipients, @mail_msg, '','', '','', @subject xp_sendmail의 구문은 아래와 같습니다. xp_sendmail { [ @recipients= ] 'recipients [ ;...n ]' } [ ,[ @message= ] 'message' ] [ ,[ @query= ] 'query' ] [ ,[ @attachments= ] 'attachments [ ;...n ]' ] [ ,[ @copy_recipients= ] 'copy_recipients [ ;...n ]' [ ,[ @blind_copy_recipients= ] 'blind_copy_recipients [ ;...n ]' [ ,[ @subject= ] 'subject' ] [ ,[ @type= ] 'type' ] [ ,[ @attach_results= ] 'attach_value' ] [ ,[ @no_output= ] 'output_value' ] [ ,[ @no_header= ] 'header_value...

MS SQL 2008에서 Database Mail 설정 방법

MS SQL SSMS 를 실행합니다. Database를 열면 아래와 같이 나오는데, 여기서 Management 아래에 있는 Database Mail을 더블 클릭 또는 마우스 오른쪽 버튼을 눌러 Configure Database Mail 을 실행합니다. 다음과 같이 환경 설정 마법사가 실행됩니다. 여기서 다음을 실행합니다.  다음을 누르면 환경설정을 할수 있는 목록이 나옵니다. 처음 설정을 할 때는 아래와 같이 셋업을 실행합니다. 첫번째 메일 프로파일을 만들고 메일 설정 창을 하시면 됩니다. 다음에 설정을 변경해야 되는 일이 생기면 동일하게 위에서 부터 차례대로 하시고, 두번째, 메일 계정 관리로 들어오시면 됩니다.  저는 미리 만들어 둔 계정이 있어 프로파일 수정으로 들어왔습니다. 메일 프로파일을 여러개 만들 수도 있고, 메일 계정도 여러개로 만들수 있습니다. 아래와 같이 저는 프로파일 명을 제 이름으로 만들었습니다. 그리고 아래의 SMTP 계정 추가를 통해서 설정을 하시면 됩니다. 메일 계정, 프로파일 수정으로 들어오면 아래와 같은 다이얼로그가 나옵니다. 여기서 계정이나 프로파일을 생성 또는 수정할 수 있습니다. 계정을 생성 또는 수정으로 들어오면 다음과 같이 환경설정을 할 수 있습니다. 아래는 네이버 메일로 계정을 설정한 부분입니다. 네이버 메일 설정 부분은 네이버 메일로 접속을 하셔서 환경설정에서 외부메일 사용 설정을 하시면 됩니다. 네이버 메일에 설정을 참고해서 아래와 같이 설정하시면 됩니다. 네이버 메일의 경우는 Server name 에 smtp.naver.com 을 사용하고 Port number에 587 포트를 쓰시고 SSL 체크하시면  됩니다. 그리고 인증 모드에 아래와 같이 basic authenication 사용하고 자신의 네이버 아이디 패스워드를 입력하시고 확인하시면 됩니다.  ...

[MS SQL] SP수행 시간 및 작업빈도 확인

SQL 2008 에서   제공하는 sys . dm_exec_procedure_stats, sys . dm_exec_sql_text, sys . dm_exec_query_plan 를   통해   시스템에서   가장   많이   사용하는   것과   읽기 / 쓰기를   많이   하는  SP 를   추적하여 성능   모니터링에   이용할   수   있다 . 주석으로   되어   있는   부분을   적절히   풀어서   필요에   맞게   수정하여   사용   가능 . ALTER   PROCEDURE  SP_CHECK_FRQ     @EXE_COUNT  INT = 100 ,     @WORK_TIME  float = 50 ,     @WRITE_COUNT  INT = 1 AS BEGIN -- SP_CHECK_FRQ 10,50,1      SELECT   *      FROM  ( select              DB_NAME ( qt . dbid )   as   'DB 명 ' ,              OBJECT_NAME ( qt . objectid ,  qt . dbid )   as...