===== MSSQL=====
==== Externi odkazy====
[[http://www.informit.com/articles/article.aspx?p=686168&seqNum=5|SQL Server 2005 Waiting and Blocking Issues]]\\
==== Klienti ====
=== Powershell ===
Import-Module Az.Sql -Force\\
Install-Module -Name SqlServer\\
$Params = @{\\
'ServerInstance' = 'atademo.database.windows.net';\\
'Database' = 'ata-demo';\\
'Username' = 'ataadmin';\\
'Password' = 'Admin123';\\
'Query' = 'select name from sys.database_principals;;'\\
}\\
Invoke-Sqlcmd @Params\\
==== Databaze ====
=== Prikazy - database master ===
select name,log_reuse_wait_desc from sys.databases ... seznam databazi a pocet ???\\
alter login glob with password='HESLO123'; ... nastaveni hesla pro login na SQL server\\
alter DATABASE [puvodni.nazev.databaze] modify name=[novy.nazev.databaze]; ... prejmenovani databaze\\
DENY CONNECT TO account_name; ... zakaze pripojeni danemu uzivateli\\
alter login USER disable; ... zakaze login daneho uzivatele\\
=== Prikazy - hostovane databaze ===
select name from sys.database_principals; ... seznam uzivatelu v databazi\\
alter user glob with login=glob; ... propojeni uzivatele glob v databazi s loginem na SQL server - uprava SIDu\\
=== Scenare ===
== Obsah aktualniho transakcniho logu: ==
SELECT RTRIM(name) AS [Segment Name], groupid AS [Group Id], filename AS [File Name],
CAST(size/128.0 AS DECIMAL(10,2)) AS [Allocated Size in MB],
CAST(FILEPROPERTY(name, 'SpaceUsed')/128.0 AS DECIMAL(10,2)) AS [Space Used in MB],
CAST([maxsize]/128.0 AS DECIMAL(10,2)) AS [Max in MB],
CAST([maxsize]/128.0-(FILEPROPERTY(name, 'SpaceUsed')/128.0) AS DECIMAL(10,2)) AS [Available Space in MB],
CAST((CAST(FILEPROPERTY(name, 'SpaceUsed')/128.0 AS DECIMAL(10,2))/CAST([maxsize]/128.0 AS DECIMAL(10,2)))*100 AS DECIMAL(10,2)) AS [Percent Used]
FROM sys.sysfiles
where name='log'
== Seznam session a jejich stav: ==
SELECT
R.SESSION_ID,
R.REQUEST_ID AS SESSION_REQUEST_ID,
R.STATUS,
S.HOST_NAME,
C.CLIENT_NET_ADDRESS,
CASE WHEN S.LOGIN_NAME = S.ORIGINAL_LOGIN_NAME THEN S.LOGIN_NAME ELSE S.LOGIN_NAME + ' (' + S.ORIGINAL_LOGIN_NAME + ')' END AS LOGIN_NAME,
S.PROGRAM_NAME,
DB_NAME(R.DATABASE_ID) AS DATABASE_NAME,
R.COMMAND,
ST.TEXT AS QUERY_TEXT,
QP.QUERY_PLAN AS XML_QUERY_PLAN,
R.WAIT_TYPE AS CURRENT_WAIT_TYPE,
R.LAST_WAIT_TYPE,
R.BLOCKING_SESSION_ID,
R.ROW_COUNT,
R.GRANTED_QUERY_MEMORY,
R.OPEN_TRANSACTION_COUNT,
R.USER_ID,
R.PERCENT_COMPLETE,
CASE R.TRANSACTION_ISOLATION_LEVEL
WHEN 0 THEN 'UNSPECIFIED'
WHEN 1 THEN 'READUNCOMITTED'
WHEN 2 THEN 'READCOMMITTED'
WHEN 3 THEN 'REPEATABLE'
WHEN 4 THEN 'SERIALIZABLE'
WHEN 5 THEN 'SNAPSHOT'
ELSE CAST(R.TRANSACTION_ISOLATION_LEVEL AS VARCHAR(32))
END AS TRANSACTION_ISOLATION_LEVEL_NAME
FROM
SYS.DM_EXEC_REQUESTS R
LEFT OUTER JOIN SYS.DM_EXEC_SESSIONS S ON S.SESSION_ID = R.SESSION_ID
LEFT OUTER JOIN SYS.DM_EXEC_CONNECTIONS C ON C.CONNECTION_ID = R.CONNECTION_ID
CROSS APPLY SYS.DM_EXEC_SQL_TEXT(R.SQL_HANDLE) ST
CROSS APPLY SYS.DM_EXEC_QUERY_PLAN(R.PLAN_HANDLE) QP
--WHERE R.STATUS NOT IN ('BACKGROUND','SLEEPING')
== Seznam blokujicich a uzamykajicich sezeni: ==
;WITH Blockers AS
(
SELECT DISTINCT
blocking_session_id as session_id
FROM sys.dm_exec_requests WITH(NOLOCK)
WHERE blocking_session_id > 0
)
SELECT
'Blocker' as type_desc
, ES.session_id
, ES.transaction_isolation_level
, ER.start_time
, ER.[status]
, ER.command
, ER.wait_type
, ER.wait_time
, ER.blocking_session_id
, '' AS stmt_text
FROM sys.dm_exec_sessions ES WITH(NOLOCK)
LEFT JOIN sys.dm_exec_requests ER WITH(NOLOCK) ON ER.session_id = ES.session_id
INNER JOIN Blockers ON Blockers.session_id = ES.session_id
UNION
SELECT
'Victim' as type_desc
, ES.session_id
, ES.transaction_isolation_level
, ER.start_time
, ER.[status]
, ER.command
, ER.wait_type
, ER.wait_time
, ER.blocking_session_id
, ST.[text] AS stmt_text
FROM sys.dm_exec_sessions ES WITH(NOLOCK)
INNER JOIN sys.dm_exec_requests ER WITH(NOLOCK) ON ER.session_id = ES.session_id
CROSS APPLY SYS.DM_EXEC_SQL_TEXT(ER.sql_handle) AS ST
WHERE blocking_session_id > 0