This commit is contained in:
2023-03-30 17:51:01 +02:00
parent 4736205eb8
commit ed02942184
17 changed files with 19852 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,23 @@
SELECT SCHEMA_NAME([O].[schema_id]) AS schema_name,
O.name AS table_name,
C.name AS column_name,
[sc].[information_type],
[sc].[label],
[sc].[rank],
[sc].[rank_desc]
,'ADD SENSITIVITY CLASSIFICATION TO ['+CAST(SCHEMA_NAME([O].[schema_id]) AS NVARCHAR(100))+'].['+CAST(o.[name] AS NVARCHAR(100))+'].['+CAST(c.name AS NVARCHAR(100))+'] WITH ( LABEL='''+CAST(sc.[label] AS NVARCHAR(100))+''', INFORMATION_TYPE='''+CAST(sc.[information_type] AS NVARCHAR(100))+''' '
+ CASE
WHEN sc.[rank_desc] IS NOT NULL THEN ', RANK='+sc.[rank_desc]
ELSE ''
END
+')'
--sc.*
FROM sys.sensitivity_classifications sc
JOIN sys.objects O
ON [sc].[major_id] = O.object_id
JOIN sys.columns C
ON [sc].[major_id] = C.object_id
AND [sc].[minor_id] = [C].[column_id]
--WHERE CAST(sc.[information_type] AS VARCHAR(500)) <> 'Other'
--WHERE [O].[name] LIKE '[IIICommon_Bank_PTT_Master]'
ORDER BY CAST([sc].[information_type] AS VARCHAR(500)), [schema_name], [table_name], [column_name];

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,26 @@
DECLARE @col VARCHAR(500)='';
/* Remove classification not in the Galenica type */
DECLARE crs_not_galenica CURSOR FAST_FORWARD READ_ONLY FOR
SELECT
'['+SCHEMA_NAME(o.[schema_id])+'].['+o.[name]+'].['+c.[name]+']' AS col
FROM sys.sensitivity_classifications sc
JOIN sys.objects O
ON sc.major_id = O.object_id
JOIN sys.columns C
ON sc.major_id = C.object_id AND sc.minor_id = C.column_id
OPEN crs_not_galenica
FETCH NEXT FROM crs_not_galenica INTO @col
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'DROP SENSITIVITY CLASSIFICATION FROM '+@col;
EXEC('DROP SENSITIVITY CLASSIFICATION FROM '+@col);
FETCH NEXT FROM crs_not_galenica INTO @col
END
CLOSE crs_not_galenica
DEALLOCATE crs_not_galenica

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,91 @@
/*
Connect to hcimon and run this query.
Then, insert the publisher and the distributors entry in this fragment
https://www.sqlservercentral.com/forums/topic/how-to-import-replication-monitor-my-publishers-into-ssms-across-versions
<?xml version="1.0" encoding="utf-8"?>
<PublisherGroups>
<ViewSetting Value="group" />
<Group Name="My Publishers">
<!-- copy Publisher nodes here -->
</Group>
<!-- copy Distributor nodes here -->
</PublisherGroups>
and save it in the local folder
C:\Users\ua208700\AppData\Roaming\Microsoft\Microsoft SQL Server\150\Tools\SQL Monitor\rmsetting.xml
*/
USE [ControlCenter]
DECLARE @tpl VARCHAR(MAX)='
<Publisher>
<name>@srv@\@inst@</name>
<Distributor>@srv@\@inst@</Distributor>
<Interval>5</Interval>
<AutoRefresh>True</AutoRefresh>
<AutoConnect>True</AutoConnect>
<IsOraclePublisher>False</IsOraclePublisher>
<LastSelectedAgentType>Snapshot Agent</LastSelectedAgentType>
<LastSelectedFilterType>0</LastSelectedFilterType>
<LastSelectedPubType>0</LastSelectedPubType>
<LastSelectedTab>0</LastSelectedTab>
<GridSettings />
</Publisher>
'
DECLARE @tplDis VARCHAR(MAX)='
<DistributorsSetting Name="@srv@\@inst@">
<Interval>5</Interval>
<AutoRefresh>True</AutoRefresh>
<AutoConnect>True</AutoConnect>
<LastSelectedAgentType>Snapshot Agent</LastSelectedAgentType>
<LastSelectedFilterType>0</LastSelectedFilterType>
<LastSelectedPubType>-1</LastSelectedPubType>
<LastSelectedTab>0</LastSelectedTab>
<GridSettings />
</DistributorsSetting>
'
/****** Script for SelectTopNRows command from SSMS ******/
SELECT [SE_designation]
,[SE_OU_code]
,[SE_DNS]
,[SE_instance_name]
,e.[EN_designation]
,REPLACE(
REPLACE(@tpl,'@inst@', s.[SE_instance_name])
,'@srv@'
,CASE
WHEN [e].[EN_designation]='amavita' THEN 'SAMNB'
WHEN [e].[EN_designation]='Coop-Vitality' THEN 'SCVNB'
WHEN [e].[EN_designation]='Sun Store' THEN 'SSUNB'
ELSE ''
END +RIGHT(CAST([s].[SE_OU_code] AS CHAR(3)),3)+'VM01'
)AS xmlPub
,REPLACE(
REPLACE(@tplDis,'@inst@', s.[SE_instance_name])
,'@srv@'
,CASE
WHEN [e].[EN_designation]='amavita' THEN 'SAMNB'
WHEN [e].[EN_designation]='Coop-Vitality' THEN 'SCVNB'
WHEN [e].[EN_designation]='Sun Store' THEN 'SSUNB'
ELSE ''
END +RIGHT(CAST([s].[SE_OU_code] AS CHAR(3)),3)+'VM01'
)AS xmlDist
,CASE
WHEN [e].[EN_designation]='amavita' THEN 'SAMNB'
WHEN [e].[EN_designation]='Coop-Vitality' THEN 'SCVNB'
WHEN [e].[EN_designation]='Sun Store' THEN 'SSUNB'
ELSE ''
END +RIGHT(CAST([s].[SE_OU_code] AS CHAR(3)),3)+'VM01'
+'\'+[s].[SE_instance_name]
AS ou
FROM [dbo].[Server] s
JOIN dbo.[Entity] e ON [e].[EN_id] = [s].[SE_entity]
WHERE [e].[EN_designation] IN ('Coop-Vitality', 'amavita', 'sun store')
ORDER BY [EN_designation]

View File

@@ -0,0 +1,25 @@
SELECT
fk.name AS fk_constraint_name,
SCHEMA_NAME(fk_tab.schema_id) + '.' + fk_tab.name /* AS foreign_table */+'.'+fk_col.name AS child,
--' = ' AS [join],
'>-' AS rel,
SCHEMA_NAME(pk_tab.schema_id) + '.' + pk_tab.name /* AS primary_table */+'.'+pk_col.name AS parent,
fk_cols.constraint_column_id AS no
FROM sys.foreign_keys fk
INNER JOIN sys.tables fk_tab
ON fk_tab.object_id = fk.parent_object_id
INNER JOIN sys.tables pk_tab
ON pk_tab.object_id = fk.referenced_object_id
INNER JOIN sys.foreign_key_columns fk_cols
ON fk_cols.constraint_object_id = fk.object_id
INNER JOIN sys.columns fk_col
ON fk_col.column_id = fk_cols.parent_column_id
AND fk_col.object_id = fk_tab.object_id
INNER JOIN sys.columns pk_col
ON pk_col.column_id = fk_cols.referenced_column_id
AND pk_col.object_id = pk_tab.object_id
ORDER BY SCHEMA_NAME(fk_tab.schema_id) + '.' + fk_tab.name,
SCHEMA_NAME(pk_tab.schema_id) + '.' + pk_tab.name,
fk_cols.constraint_column_id;

View File

@@ -0,0 +1,57 @@
USE master
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
GO
WITH XMLNAMESPACES (DEFAULT 'http://schemas.microsoft.com/sqlserver/2004/07/showplan')
, PlanMissingIndexes
AS (SELECT query_plan, usecounts
FROM sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_query_plan(cp.plan_handle) qp
WHERE qp.query_plan.exist('//MissingIndexes') = 1)
, MissingIndexes
AS (SELECT stmt_xml.value('(QueryPlan/MissingIndexes/MissingIndexGroup/MissingIndex/@Database)[1]', 'sysname') AS DatabaseName,
stmt_xml.value('(QueryPlan/MissingIndexes/MissingIndexGroup/MissingIndex/@Schema)[1]', 'sysname') AS SchemaName,
stmt_xml.value('(QueryPlan/MissingIndexes/MissingIndexGroup/MissingIndex/@Table)[1]', 'sysname') AS TableName,
stmt_xml.value('(QueryPlan/MissingIndexes/MissingIndexGroup/@Impact)[1]', 'float') AS Impact,
ISNULL(CAST(stmt_xml.value('(@StatementSubTreeCost)[1]', 'VARCHAR(128)') AS FLOAT), 0) AS Cost,
pmi.usecounts UseCounts,
STUFF((SELECT DISTINCT ', ' + c.value('(@Name)[1]', 'sysname')
FROM stmt_xml.nodes('//ColumnGroup') AS t(cg)
CROSS APPLY cg.nodes('Column') AS r(c)
WHERE cg.value('(@Usage)[1]', 'sysname') = 'EQUALITY'
FOR XML PATH('')),1,2,''
) AS equality_columns,
STUFF(( SELECT DISTINCT ', ' + c.value('(@Name)[1]', 'sysname')
FROM stmt_xml.nodes('//ColumnGroup') AS t(cg)
CROSS APPLY cg.nodes('Column') AS r(c)
WHERE cg.value('(@Usage)[1]', 'sysname') = 'INEQUALITY'
FOR XML PATH('')),1,2,''
) AS inequality_columns,
STUFF((SELECT DISTINCT ', ' + c.value('(@Name)[1]', 'sysname')
FROM stmt_xml.nodes('//ColumnGroup') AS t(cg)
CROSS APPLY cg.nodes('Column') AS r(c)
WHERE cg.value('(@Usage)[1]', 'sysname') = 'INCLUDE'
FOR XML PATH('')),1,2,''
) AS include_columns,
query_plan,
stmt_xml.value('(@StatementText)[1]', 'varchar(4000)') AS sql_text
FROM PlanMissingIndexes pmi
CROSS APPLY query_plan.nodes('//StmtSimple') AS stmt(stmt_xml)
WHERE stmt_xml.exist('QueryPlan/MissingIndexes') = 1)
SELECT TOP 200
DatabaseName,
SchemaName,
TableName,
equality_columns,
inequality_columns,
include_columns,
UseCounts,
Cost,
Cost * UseCounts [AggregateCost],
Impact,
query_plan
FROM MissingIndexes
WHERE DatabaseName = '[arizona]'
AND TableName = '[PH_prescription_line]'
ORDER BY Cost * UseCounts DESC;

View File

@@ -0,0 +1,9 @@
SELECT kc.name, SCHEMA_NAME(ot.schema_id)+'.'+ot.name AS tblName, kc.type_desc
FROM sys.key_constraints kc
JOIN sys.objects oc ON oc.object_id = kc.object_id
JOIN sys.objects ot ON ot.object_id = oc.parent_object_id
WHERE 1=1
--AND oc.name LIKE 'fk%'
ORDER BY tblName
;

View File

@@ -0,0 +1,45 @@
/*
Details About Statistics
Original Author: Pinal Dave
https://blog.sqlauthority.com/2011/06/29/sql-server-find-details-for-statistics-of-whole-database-dmv-t-sql-script/
*/
SELECT DISTINCT OBJECT_NAME(s.[object_id]) AS TableName,
c.[name] AS ColumnName,
s.[name] AS StatName,
[s].[auto_created],
[s].[user_created],
[s].[no_recompute],
s.[object_id],
s.[stats_id],
[sc].[stats_column_id],
sc.[column_id],
STATS_DATE(s.[object_id], s.[stats_id]) AS LastUpdated
FROM sys.stats s
JOIN sys.stats_columns sc
ON sc.[object_id] = s.[object_id]
AND sc.[stats_id] = s.[stats_id]
JOIN sys.columns c
ON c.[object_id] = sc.[object_id]
AND c.[column_id] = sc.[column_id]
JOIN sys.partitions par
ON par.[object_id] = s.[object_id]
JOIN sys.objects obj
ON par.[object_id] = obj.[object_id]
WHERE OBJECTPROPERTY(s.object_id, 'IsUserTable') = 1
AND OBJECT_NAME(s.[object_id]) = 'PSA_T1_DOCUMENT_LINE'
AND ( [s].[auto_created] = 1
OR [s].[user_created] = 1);
RETURN
SELECT OBJECT_NAME(s.object_id) AS object_name,
COL_NAME(sc.object_id, sc.column_id) AS column_name,
s.name AS statistics_name
FROM sys.stats AS s
INNER JOIN sys.stats_columns AS sc
ON s.stats_id = sc.stats_id AND s.object_id = sc.object_id
WHERE s.name like '_WA%'
ORDER BY [object_name];

View File

@@ -0,0 +1,63 @@
/* every steps */
SELECT DATEADD(
NANOSECOND
, DATEPART(
NANOSECOND
,CAST([cl].[EndTime] - [cl].[StartTime] AS TIME)
) * -1
,CAST([cl].[EndTime] - [cl].[StartTime] AS TIME)
)
AS duration,
[cl].[ID],
[cl].[DatabaseName],
[cl].[SchemaName],
[cl].[ObjectName],
[cl].[ObjectType],
[cl].[IndexName],
[cl].[IndexType],
[cl].[StatisticsName],
[cl].[PartitionNumber],
[cl].[ExtendedInfo],
[cl].[Command],
[cl].[CommandType],
[cl].[StartTime],
[cl].[EndTime],
[cl].[ErrorNumber],
[cl].[ErrorMessage]
FROM [HCITools].dbo.CommandLog AS cl
WHERE [cl].[StartTime] BETWEEN '2023-03-25' AND '2023-03-27'
--AND [cl].[ObjectName]= 'PSA_T1_DOCUMENT_LINE'
--AND CAST([cl].[EndTime] - [cl].[StartTime] AS TIME) > '00:15:00'
ORDER BY id ASC;
/* time per object */
SELECT MIN([cl].[StartTime]), MAX([cl].[EndTime]), [cl].[DatabaseName], [cl].[ObjectName], [cl].[CommandType], DATEADD(
MILLISECOND
, DATEPART(
MILLISECOND
,CAST(MAX([cl].[EndTime]) - MIN([cl].[StartTime]) AS DATETIME)
) * -1
,CAST(MAX([cl].[EndTime]) - MIN([cl].[StartTime]) AS DATETIME)
)
AS totalDuration
, COUNT(1) AS operationsCount
FROM [HCITools].dbo.CommandLog AS cl
WHERE [cl].[StartTime] BETWEEN '2023-03-25' AND '2023-03-27'
AND [cl].[ObjectName] IS NOT NULL
--AND [cl].[ObjectName] = 'PSA_T1_DOCUMENT_LINE'
GROUP BY [cl].[ObjectName], [cl].[CommandType], [cl].[DatabaseName]
ORDER BY [totalDuration] DESC
/* total time */
SELECT MIN([cl].[StartTime]), MAX([cl].[EndTime]), DATEADD(
MILLISECOND
, DATEPART(
MILLISECOND
,CAST(MAX([cl].[EndTime]) - MIN([cl].[StartTime]) AS DATETIME)
) * -1
,CAST(MAX([cl].[EndTime]) - MIN([cl].[StartTime]) AS DATETIME)
)
AS totalDuration
FROM [HCITools].dbo.CommandLog AS cl
WHERE [cl].[StartTime] BETWEEN '2023-03-25' AND '2023-03-27'

View File

@@ -0,0 +1,22 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# SQL Server Management Studio Solution File, Format Version 18.00
VisualStudioVersion = 15.0.28307.421
MinimumVisualStudioVersion = 10.0.40219.1
Project("{4F2E2C19-372F-40D8-9FA7-9D2138C6997A}") = "OCTPDBA-512 - connections issues", "OCTPDBA-512 - connections issues.ssmssqlproj", "{41C5DF07-51DF-4DB7-8AAC-8DCB2C4AA6BB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Default|Default = Default|Default
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{41C5DF07-51DF-4DB7-8AAC-8DCB2C4AA6BB}.Default|Default.ActiveCfg = Default
{A506E95A-4A86-4621-BE53-67AF3BCAAD2F}.Default|Default.ActiveCfg = Default
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {031F148C-E5D3-4F17-B5D1-E98403BD9E44}
EndGlobalSection
EndGlobal

View File

@@ -0,0 +1,82 @@
<?xml version="1.0"?>
<SqlWorkbenchSqlProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Name="OCTPDBA-512 - connections issues">
<Items>
<LogicalFolder Name="Connections" Type="2" Sorted="true">
<Items>
<ConnectionNode Name="ama219aps:CENTRALINFRA\ua208700">
<Created>2023-03-07T15:47:22.1919172+01:00</Created>
<Type>SQL</Type>
<Server>ama219aps</Server>
<UserName />
<Authentication>Windows Authentication</Authentication>
<InitialDB>master</InitialDB>
<LoginTimeout>30</LoginTimeout>
<ExecutionTimeout>0</ExecutionTimeout>
<ConnectionProtocol>NotSpecified</ConnectionProtocol>
<ApplicationName>Microsoft SQL Server Management Studio - Query</ApplicationName>
</ConnectionNode>
<ConnectionNode Name="ama274aps:CENTRALINFRA\ua208700">
<Created>2023-03-03T15:56:26.9023973+01:00</Created>
<Type>SQL</Type>
<Server>ama274aps</Server>
<UserName />
<Authentication>Windows Authentication</Authentication>
<InitialDB>master</InitialDB>
<LoginTimeout>30</LoginTimeout>
<ExecutionTimeout>0</ExecutionTimeout>
<ConnectionProtocol>NotSpecified</ConnectionProtocol>
<ApplicationName>Microsoft SQL Server Management Studio - Query</ApplicationName>
</ConnectionNode>
<ConnectionNode Name="cvi817aps:CENTRALINFRA\ua208700">
<Created>2023-03-03T15:56:52.8153226+01:00</Created>
<Type>SQL</Type>
<Server>cvi817aps</Server>
<UserName />
<Authentication>Windows Authentication</Authentication>
<InitialDB />
<LoginTimeout>30</LoginTimeout>
<ExecutionTimeout>0</ExecutionTimeout>
<ConnectionProtocol>NotSpecified</ConnectionProtocol>
<ApplicationName />
</ConnectionNode>
<ConnectionNode Name="sun511aps:CENTRALINFRA\ua208700">
<Created>2023-03-03T15:57:00.7172505+01:00</Created>
<Type>SQL</Type>
<Server>sun511aps</Server>
<UserName />
<Authentication>Windows Authentication</Authentication>
<InitialDB />
<LoginTimeout>30</LoginTimeout>
<ExecutionTimeout>0</ExecutionTimeout>
<ConnectionProtocol>NotSpecified</ConnectionProtocol>
<ApplicationName />
</ConnectionNode>
</Items>
</LogicalFolder>
<LogicalFolder Name="Queries" Type="0" Sorted="true">
<Items>
<FileNode Name="extended event session.sql">
<AssociatedConnectionMoniker>8c91a03d-f9b4-46c0-a305-b5dcc79ff907:ama274aps:True</AssociatedConnectionMoniker>
<AssociatedConnSrvName>ama274aps</AssociatedConnSrvName>
<AssociatedConnUserName />
<FullPath>extended event session.sql</FullPath>
</FileNode>
<FileNode Name="SQLQuery1.sql">
<AssociatedConnectionMoniker>8c91a03d-f9b4-46c0-a305-b5dcc79ff907:ama219aps:True</AssociatedConnectionMoniker>
<AssociatedConnSrvName>ama219aps</AssociatedConnSrvName>
<AssociatedConnUserName />
<FullPath>SQLQuery1.sql</FullPath>
</FileNode>
<FileNode Name="trying to reproduce.sql">
<AssociatedConnectionMoniker>8c91a03d-f9b4-46c0-a305-b5dcc79ff907:ama219aps:True</AssociatedConnectionMoniker>
<AssociatedConnSrvName>ama219aps</AssociatedConnSrvName>
<AssociatedConnUserName />
<FullPath>trying to reproduce.sql</FullPath>
</FileNode>
</Items>
</LogicalFolder>
<LogicalFolder Name="Miscellaneous" Type="3" Sorted="true">
<Items />
</LogicalFolder>
</Items>
</SqlWorkbenchSqlProject>

View File

@@ -0,0 +1,38 @@
IF EXISTS(
SELECT *
FROM sys.dm_xe_sessions s
WHERE s.name = 'tsc_octpdba-512'
)
BEGIN
ALTER EVENT SESSION [tsc_octpdba-512] ON SERVER STATE = STOP;
END
IF EXISTS(
SELECT *
FROM sys.server_event_sessions s
WHERE s.name = 'tsc_octpdba-512'
)
BEGIN
DROP EVENT SESSION [tsc_octpdba-512] ON SERVER;
END
GO
CREATE EVENT SESSION [tsc_octpdba-512] ON SERVER
ADD EVENT sqlserver.connectivity_ring_buffer_recorded(
ACTION(package0.last_error,sqlserver.client_app_name,sqlserver.client_connection_id,sqlserver.client_hostname,sqlserver.context_info,sqlserver.server_principal_name,sqlserver.session_id)),
ADD EVENT sqlserver.dtc_transaction(
ACTION(package0.last_error,sqlserver.client_app_name,sqlserver.client_hostname)),
ADD EVENT sqlserver.errorlog_written(
ACTION(package0.last_error,sqlserver.client_app_name,sqlserver.client_hostname)),
ADD EVENT sqlserver.login(SET collect_options_text=(1)
ACTION(package0.last_error,sqlserver.client_app_name,sqlserver.client_connection_id,sqlserver.client_hostname,sqlserver.context_info,sqlserver.server_instance_name,sqlserver.server_principal_name)),
ADD EVENT sqlserver.logout(
ACTION(package0.last_error,sqlserver.client_app_name,sqlserver.client_connection_id,sqlserver.client_hostname,sqlserver.context_info,sqlserver.server_instance_name,sqlserver.server_principal_name,sqlserver.session_id))
ADD TARGET package0.event_file(SET filename=N'd:\tsc_octpdba-512')
WITH (MAX_MEMORY=4096 KB,EVENT_RETENTION_MODE=ALLOW_SINGLE_EVENT_LOSS,MAX_DISPATCH_LATENCY=30 SECONDS,MAX_EVENT_SIZE=0 KB,MEMORY_PARTITION_MODE=NONE,TRACK_CAUSALITY=ON,STARTUP_STATE=ON)
GO
ALTER EVENT SESSION [tsc_octpdba-512] ON SERVER STATE = START;

View File

@@ -0,0 +1,30 @@
BEGIN TRANSACTION
DECLARE @q NVARCHAR(MAX) ='
begin transaction
begin try
print ''go!'';
--waitfor delay ''00:01:15'';
raiserror(''test'',20,1);
end try
begin catch
print ''in catch''
if @@trancount > 1 begin
ROLLBACK TRANSACTION;
print ''rollback!''
end
print ''exit catch''
end catch
rollback transaction;
print ''done''
'
EXEC(@q) AT wam219a02
ROLLBACK TRANSACTION
SELECT *
FROM Arizona.INFORMATION_SCHEMA.TABLES t
WHERE t.TABLE_NAME LIKE '%request%'
SELECT TOP 100 *
FROM Arizona.wkl.OrderRequest
WHERE CreatedOn BETWEEN '20230307 13:31:30' AND '20230307 13:33:00'
ORDER BY OrderRequestId DESC