블로그 이미지
bedbmsguru

Notice

Recent Post

Recent Comment

Recent Trackback

Archive

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
  • total
  • today
  • yesterday
2018. 10. 27. 22:45 SQL SERVER

기본적으로 기본적으로 서버 로컬에서만 접속이 가능하다 원격에서 접속하기 위해서는 
"remote admin connections" 옵션을 활성화 하여야 한다.
클러스터 환경에서는 "remote admin connections"서버 구성 옵션을 반드시 활성화 시켜야한다.
클러스터 환경은 가상 IP를 통해 다른 IP로 연결되기 때문에 옵션을 활성화 하지 않으면 로컬 서버에서도 관리자 전용 연결을 사용할 수 없다.

SSMS에서 접속방법
File메뉴--> Database Engine Query
sqlcmd에서 접속방법
sqlcmd -S SQL02\ins02 -E -A :-A옵션이 DAC연결

posted by bedbmsguru
2018. 10. 27. 22:44 Powershell

#방화벽 ON|OFF -profile 없으면 전체(2012부터 가능) 
Set-NetFirewallProfile -Profile Domain -Enabled True | false

#방화벽 Rule ADD
New-NetFirewallRule -DisplayName "Allow SSR_PORT" -Direction Inbound -LocalPort 135-139 -Protocol TCP -Action Allow 

(2008 netsh 사용)netsh advfirewall firewall add rule name="SQL SERVER TCP 1433" dir=in action=allow protocol=TCP localport=1433

#방화벽 Rule 제거
Remove -NetFirewallRule -DisplayName "Allow SSR_PORT"


#등록된 RULE 켜고 끄기
Set-NetfirewallRule -DisplayName "Allow Inbound OpenVPN Client Requests" -Enabled True | false

$TargetComputer=New-CIMSession -Computername host1, host2
Set-NetfirewallRule -DisplayName "파일 및 프린터 공유(에코 요청 - ICMPv4-In)" -Enabled True -CimSession $TargetComputer

#관리할 remote server 지정
$TargetComputer=New-CIMSession -Computername hhiwp046, hhiwp047, hhiwp048, hhiwp049, hhiwp050, hhiwp051, hhiwp052
#Remove-NetFirewallRule -DisplayName "Allow SSR_PORT" -CimSession $TargetComputer
#New-NetFirewallRule -DisplayName "Allow SSR_PORT" -Direction Inbound -LocalPort 135-139 -Protocol TCP -Action Allow  -CimSession $TargetComputer


posted by bedbmsguru
2018. 10. 27. 22:42 Powershell

 #Socket Server
function listen-port ($port= 7788) {
    $SEND_SMS = "0000"


   
        $endpoint = new-object System.Net.IPEndPoint ([ system.net.ipaddress]::any , $port )
        $listener = new-object System.Net.Sockets.TcpListener $endpoint
        $listener.start()
        $isRunning = $true

        while ($isRunning )
        {
           
                $client = $listener. AcceptTcpClient() # will block here until connection
                $stream = $client. GetStream();
                $reader = New-Object System.IO.StreamReader $stream
           
                  
                #$command = $reader.readLine().Substring(0, 4);
                $command = $reader. readLine() -split "//"
                $command.Length
                #$command = $reader.readLine()
                if ($command -eq $SEND_SMS)
                {
                    sendSMS -serverIP $command[ 2] -phoneArray $command [1]
                }
                else
                {
                    write-host $command -fore cyan
                }
           
                if($command [0] -eq "EXIT")
                {
                    $isRunning = $false
                    $reader.Dispose()
                    $stream.Dispose()
                    $client.Dispose()
                    $listener.stop()
                }
        
        }
        <#
        $reader.Dispose()
        $stream.Dispose()
        $client.Dispose()
        $listener.stop()
        #>
}



function sendSMS ($serverIP, $phoneArray)
{
    $targetArray = $phoneArray -split ","
    foreach($phone in $targetArray)
    {
        Write-Host "SMS SEND"   $phone  "`t`t"  $serverIP
    }
}

listen-port

#client code
<#
function send-msg ($message=$([char]4), $port=7788, $server="10.100.37.79") {
    $client = New-Object System.Net.Sockets.TcpClient $server, $port
    $stream = $client.GetStream()
    $writer = New-Object System.IO.StreamWriter $stream
    $writer.Write($message)
    $writer.Dispose()
    $stream.Dispose()
    $client.Dispose()
}
#>
 

posted by bedbmsguru
2018. 10. 27. 22:41 SQL SERVER

SELECT 'CREATE LOGIN ' +name + ' WITH PASSWORD = ' +
     CONVERT(varchar (max), LOGINPROPERTY( name, 'PasswordHash'), 1 ) +
     ' HASHED, SID=' + CONVERT( varchar(max ), sid , 1)
                 FROM sys .server_principals
WHERE name in ('drm_dev', 'MyLogin2')
  AND type = 'S'
  

'SQL SERVER' 카테고리의 다른 글

SQL SERVER Wait type 조사  (0) 2018.10.27
DAC 연결방법  (0) 2018.10.27
CPU 사용율 높은 쿼리 확인  (0) 2018.10.27
tempdb 경합 모니터링  (0) 2018.10.27
SQL SERVER 로그  정보(사용량, usage)  (0) 2018.10.27
posted by bedbmsguru
2018. 10. 27. 22:39 SQL SERVER


SELECT 

-- using statement_start_offset and

-- statement_end_offset we get the query text

-- from inside the entire batch
                                 DB_NAME(qt .dbid) dbname,
                                 OBJECT_NAME(qt .objectid) [object_name],
        SUBSTRING(qt .TEXT, ( qs.statement_start_offset / 2 ) + 1,

         ( ( CASE qs.statement_end_offset

               WHEN - 1 THEN DATALENGTH(qt .TEXT)

               ELSE qs .statement_end_offset

             END - qs. statement_start_offset ) / 2 ) + 1) AS [Text] ,

     qs.execution_count ,

     qs.total_logical_reads ,

     qs.last_logical_reads ,

     qs.total_logical_writes ,

     qs.last_logical_writes ,

     qs.total_worker_time ,

     qs.last_worker_time ,

-- converting microseconds to seconds

     qs.total_elapsed_time / 1000000 total_elapsed_time_in_S ,

     qs.last_elapsed_time / 1000000 last_elapsed_time_in_S ,

     qs.last_execution_time ,

     qp.query_plan

FROM sys .dm_exec_query_stats qs
-- Retrieve the query text
     CROSS APPLY sys. dm_exec_sql_text(qs .sql_handle) qt
        -- Retrieve the query plan
     CROSS APPLY sys. dm_exec_query_plan(qs .plan_handle) qp
ORDER BY qs. total_worker_time DESC -- CPU time



  

posted by bedbmsguru
2018. 10. 27. 22:38 SQL SERVER
SELECT
   session_id,
   wait_type,
   wait_duration_ms,
   blocking_session_id,
   resource_description,
   ResourceType = CASE
   WHEN PageID = 1 OR PageID % 8088 = 0 THEN 'Is PFS Page'
   WHEN PageID = 2 OR PageID % 511232 = 0 THEN 'Is GAM Page'
   WHEN PageID = 3 OR (PageID - 1) % 511232 = 0 THEN 'Is SGAM Page'
       ELSE 'Is Not PFS, GAM, or SGAM page'
   END
FROM (  SELECT 
           session_id,
           wait_type,
           wait_duration_ms,
           blocking_session_id,
           resource_description,
           CAST(RIGHT(resource_description , LEN (resource_description)
           - CHARINDEX (':', resource_description, 3)) AS INT ) AS PageID
       FROM sys .dm_os_waiting_tasks
       WHERE wait_type LIKE 'PAGE%LATCH_%'
         AND resource_description LIKE '2:%'
) AS tab;

 

 

처리하지 못하고 대기중인 쿼리 조회

 

SELECT

[owt].[session_id],

[owt].[exec_context_id],

[owt].[wait_duration_ms],

[owt].[wait_type],

[owt].[blocking_session_id],

[owt].[resource_description],

CASE [owt].[wait_type]

WHEN N'CXPACKET' THEN

RIGHT ([owt].[resource_description],

CHARINDEX (N'=', REVERSE ([owt].[resource_description])) - 1)

ELSE NULL

END AS [Node ID],

[es].[program_name],

[est].text,

[er].[database_id],

[eqp].[query_plan],

[er].[cpu_time]

FROM sys.dm_os_waiting_tasks [owt]

INNER JOIN sys.dm_exec_sessions [es] ON

[owt].[session_id] = [es].[session_id]

INNER JOIN sys.dm_exec_requests [er] ON

[es].[session_id] = [er].[session_id]

OUTER APPLY sys.dm_exec_sql_text ([er].[sql_handle]) [est]

OUTER APPLY sys.dm_exec_query_plan ([er].[plan_handle]) [eqp]

WHERE

[es].[is_user_process] = 1

ORDER BY

[owt].[session_id],

[owt].[exec_context_id];

GO

 

https://sungwookkang.com/834

posted by bedbmsguru
2018. 10. 27. 22:38 SQL SERVER

dbcc loginfo --로그정보
dbcc sqlperf( logspace); --로그 사용량 확인


--마지막 로그백업 조회
SELECT   d. name,
         MAX(b .backup_finish_date) AS backup_finish_date
FROM     master .sys. sysdatabases d
         LEFT OUTER JOIN msdb ..backupset b
         ON       b.database_name = d. name
         AND      b. type          = 'D'
GROUP BY d.name
ORDER BY backup_finish_date DESC

'SQL SERVER' 카테고리의 다른 글

CPU 사용율 높은 쿼리 확인  (0) 2018.10.27
tempdb 경합 모니터링  (0) 2018.10.27
bufferpool(버퍼풀) 메모리 사용량  (0) 2018.10.27
통계 업데이트 날짜 조회하기  (0) 2018.10.27
Procedure 실행횟수 확인  (0) 2018.10.27
posted by bedbmsguru
2018. 10. 27. 22:37 SQL SERVER

--DB별 버퍼풀 사용량
SELECT 
    DB_NAME(database_id) AS [Database Name]
    ,CAST(COUNT(*) * 8/1024.0 AS DECIMAL (10,2))  AS [Cached Size (MB)]FROM sys.dm_os_buffer_descriptors WITH (NOLOCK)
WHERE database_id not in (1,3,4) -- system databases
AND database_id <> 32767 -- ResourceDB
GROUP BY DB_NAME(database_id)ORDER BY [Cached Size (MB)] 

DESC OPTION (RECOMPILE);

--DB에서 테이블별 버퍼풀 사용량
;WITH src AS
(
   SELECT
       [Object] = o.name,
       [Type] = o.type_desc,
       [Index] = COALESCE(i.name, ''),
       [Index_Type] = i.type_desc,
       p.[object_id],
       p.index_id,
       au.allocation_unit_id
   FROM
       sys.partitions AS p
   INNER JOIN
       sys.allocation_units AS au
       ON p.hobt_id = au.container_id
   INNER JOIN
       sys.objects AS o
       ON p.[object_id] = o.[object_id]
   INNER JOIN
       sys.indexes AS i
       ON o.[object_id] = i.[object_id]
       AND p.index_id = i.index_id
   WHERE
       au.[type] IN (1,2,3)
       AND o.is_ms_shipped = 0
)
SELECT
   src.[Object],
   src.[Type],
   src.[Index],
   src.Index_Type,
   buffer_pages = COUNT_BIG(b.page_id),
   buffer_mb = COUNT_BIG(b.page_id) / 128
FROM
   src
INNER JOIN
   sys.dm_os_buffer_descriptors AS b
   ON src.allocation_unit_id = b.allocation_unit_id
WHERE
   b.database_id = DB_ID()
GROUP BY
   src.[Object],
   src.[Type],
   src.[Index],
   src.Index_Type
ORDER BY
   buffer_pages DESC;

'SQL SERVER' 카테고리의 다른 글

tempdb 경합 모니터링  (0) 2018.10.27
SQL SERVER 로그  정보(사용량, usage)  (0) 2018.10.27
통계 업데이트 날짜 조회하기  (0) 2018.10.27
Procedure 실행횟수 확인  (0) 2018.10.27
실행중인 쿼리 확인  (0) 2018.10.27
posted by bedbmsguru
2018. 10. 27. 22:37 SQL SERVER

SELECT object_name (sp. object_id) as object_name ,name as stats_name , sp .stats_id,
    last_updated, rows, rows_sampled, steps, unfiltered_rows, modification_counter
FROM sys .stats AS s
CROSS APPLY sys. dm_db_stats_properties(s .object_id, s. stats_id) AS sp
WHERE sp .object_id > 100;

그 이외버전
SELECT schema_name (schema_id) AS SchemaName,  object_name(o .object_id) AS ObjectName,
    i.name AS IndexName, index_id, o.type ,
    STATS_DATE(o .object_id, index_id) AS statistics_update_date
FROM sys .indexes i join sys. objects o
       on i .object_id = o .object_id
WHERE o .object_id > 100 AND index_id > 0
  AND is_ms_shipped = 0;
  

posted by bedbmsguru
2018. 10. 27. 22:36 Powershell

 $ServerArray = "test-dev" , "test"    # place computername here for remote access
$username = '계정'
$password = '암호'
$desc = '백업용'


foreach ($server in $ServerArray)
{
    try
    {
       
        $computer = [ADSI ]"WinNT://$server ,computer"
        $user = $computer. Create("user", $username)
        $user.SetPassword( $password)
        $user.Setinfo()
        $user.description = $desc
        #$user.UserFlags = 65536  #암호사용기간 제한없음
        $user.PasswordExpired = #다음번 로그인시 암호변경해야함
        $user.SetInfo()
        $group = [ADSI ]("WinNT:// $server/administrators,group")
        $group.add( "WinNT://$username,user" )

        Write-Host $server + "\t" + "완료"
    }
    catch
    {
        Write-Host $server + "`t" + $_. Exception.Message;
    }
}

'Powershell' 카테고리의 다른 글

AD계정 정보 가져오기  (0) 2018.12.26
Powershell 방화벽 관리하기  (0) 2018.10.27
TCP 소켓 통신 예제  (0) 2018.10.27
Powershell 외부서버의 스크립트 실행하기  (0) 2018.05.25
posted by bedbmsguru