Labels

admin (1) aix (1) alert (1) always-on (2) Architecture (1) aws (3) Azure (1) backup (3) BI-DWH (10) Binary (3) Boolean (1) C# (1) cache (1) casting (3) cdc (1) certificate (1) checks (1) cloud (3) cluster (1) cmd (7) collation (1) columns (1) compilation (1) configurations (7) Connection-String (2) connections (6) constraint (6) copypaste (2) cpu (2) csv (3) CTE (1) data-types (1) datetime (23) db (547) DB2 (1) deadlock (2) Denali (7) device (6) dotNet (5) dynamicSQL (11) email (5) encoding (1) encryption (4) errors (124) excel (1) ExecutionPlan (10) extended events (1) files (7) FIPS (1) foreign key (1) fragmentation (1) functions (1) GCP (2) gMSA (2) google (2) HADR (1) hashing (3) in-memory (1) index (3) indexedViews (2) insert (3) install (10) IO (1) isql (6) javascript (1) jobs (11) join (2) LDAP (2) LinkedServers (8) Linux (15) log (6) login (1) maintenance (3) mariadb (1) memory (4) merge (3) monitoring (4) MSA (2) mssql (444) mssql2005 (5) mssql2008R2 (20) mssql2012 (2) mysql (36) MySQL Shell (5) network (1) NoSQL (1) null (2) numeric (9) object-oriented (1) offline (1) openssl (1) Operating System (4) oracle (7) ORDBMS (1) ordering (2) Outer Apply (1) Outlook (1) page (1) parameters (2) partition (1) password (1) Performance (103) permissions (10) pivot (3) PLE (1) port (4) PostgreSQL (14) profiler (1) RDS (3) read (1) Replication (12) restore (4) root (1) RPO (1) RTO (1) SAP ASE (48) SAP RS (20) SCC (4) scema (1) script (8) security (10) segment (1) server (1) service broker (2) services (4) settings (75) SQL (74) SSAS (1) SSIS (19) SSL (8) SSMS (4) SSRS (6) storage (1) String (35) sybase (57) telnet (2) tempdb (1) Theory (2) tips (120) tools (3) training (1) transaction (6) trigger (2) Tuple (2) TVP (1) unix (8) users (3) vb.net (4) versioning (1) windows (14) xml (10) XSD (1) zip (1)

Find out Page-splits

select Operation, AllocUnitName, COUNT(*) as OperationCount
from sys.fn_dblog(null,null)
where Operation = N'LOP_DELETE_SPLIT'
group by Operation, AllocUnitName

Performance statistics for cached query plans

SELECT
DB_NAME(st.[dbid]) AS DBName,
OBJECT_NAME(st.objectid, st.[dbid]) as ObjectName,
qs.plan_generation_num,
qs.execution_count,
( SUBSTRING(st.[text], (qs.statement_start_offset/2) + 1,
 ((CASE qs.statement_end_offset 
 WHEN -1 THEN DATALENGTH(st.[text])
 ELSE qs.statement_end_offset END 
 - qs.statement_start_offset)/2) + 1)
) AS statement_text
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS st
WHERE DB_NAME(st.[dbid]) = 'DataBaseName' 
AND OBJECT_NAME(st.objectid, st.[dbid]) = 'ObjectName'

plan_generation_num - number of plan generation for this Object
execution_count - number of executions of the current plan

if plan_generation_num is more than 1 and execution_count 1:
new plan is generated for each execution --> probably not a good situation.
if plan_generation_num is 1 and execution_count is big:
probably good situation.

Select Code Between Two Parenthesis

Press CTRL+SHIFT+] before the opening '(' to select code between two parenthesis.
Without the SHIFT (CTRL+] ) the cursor will jump to the closing parenthesis.


wrong XML parent

Problem:
XML - node is unfer the wrong parent

Cause and solution:
Check that the node is one of the items of the 'Order By', and check the order. The XML query should be sorted by the key nodes.

XML tag ID 4 that was originally declared as is being redeclared as

Error message:
XML tag ID 4 that was originally declared as Aaaaa is being redeclared as Bbbbb.

Cause and solution:
Each group of data should be declared in other tag.
In this case, there were 2 groups with tag 4: [Aaaaa!4!CollectionID] and [Bbbbb!4!CollectionID].
The solution was to create new tag to the new group: [Bbbbb!13!CollectionID].
Of course that I had to add new UNION select in order to select the data of Bbbbb and to assign it to a parent.

XML field value is NULL

T-SQL:

DECLARE @EventXML XML

SET @EventXML=convert(xml,N'
<Event>
<ExternalID>4947</ExternalID>
<ExternalEventId>abc</ExternalEventId>
</Event>')

DECLARE @hDoc int
exec sp_XML_PrepareDocument @hDoc output,@EventXML

select ExternalID, ExternalEventID
from
OPENXML(@hDoc,'//Event',2)
with
( ExternalID nvarchar(100),
ExternalEventID nvarchar(100)
) XML

exec sp_XML_RemoveDocument @hDoc

Results:
ExternalID = 4947, ExternalEventId = NULL

Problem:
ExternalEventId should be 'abc' and not NULL.

Solution:
XML is case sensitive.
ExternalEventId was set to the XML with 'd', and in the OPENXML is 'D'.
Replace one of them to be like the other.

select ExternalID, ExternalEventID
from
OPENXML(@hDoc,'//Event',2)
with
( ExternalID nvarchar(100),
ExternalEventId nvarchar(100)
) XML

There is insufficient system memory in resource pool to run this query

Error message:
There is insufficient system memory in resource pool to run this query

Possible solutions and checks:
Check the physical memory of the server, it's probably 100% of it is being used.
Possible fixes can be:

  • Limit or increase the maximum server memory of the server (SSMS-->DB properties-->Memory). If you have enough RAM on the server - increase the memory, if not - check the limitation.
  • Remove applications on the server that use much of the physical memory.
  • Increase the RAM on the server.
  • You can also restart the SQL Server Service, but it's just a quick solution, not permanent.