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)

@@TRANCOUNT - TRANSACTIONs count

@@TRANCOUNT returns the number of BEGIN TRANSACTION statements that have occurred on the current connection.

SELECT @@TRANCOUNT

Plan guide for associating query

sp_create_plan_guide creates a plan guide for associating query hints or actual query plans with queries in a database.

EXEC sp_create_plan_guide 
    @name =  N'Guide1',
    @stmt = N'SELECT *
              FROM Sales.SalesOrderHeader AS h 
              INNER JOIN Sales.Customer AS c 
                 ON h.CustomerID = c.CustomerID
              INNER JOIN Sales.SalesTerritory AS t 
                 ON c.TerritoryID = t.TerritoryID
              WHERE t.CountryRegionCode = @Country_region',
    @type = N'OBJECT',
    @module_or_batch = N'Sales.GetSalesOrderByCountry',
    @params = NULL,
    @hints = N'OPTION (OPTIMIZE FOR (@Country_region = N''US''))';


EXEC sp_create_plan_guide 
    @name = N'Guide1', 
    @stmt = N'SELECT TOP 1 * 
              FROM Sales.SalesOrderHeader 
              ORDER BY OrderDate DESC', 
    @type = N'SQL',
    @module_or_batch = NULL, 
    @params = NULL, 
    @hints = N'OPTION (MAXDOP 1)';




sp_control_plan_guide drops, enables, or disables a plan guide.

EXEC sp_control_plan_guide N'DROP', N'Guide1'

Does my database contain edition-specific features?

sys.dm_db_persisted_sku_features is used to list all edition-specific features that are enabled in the current database.

SELECT * FROM sys.dm_db_persisted_sku_features
GO

sp_MsForEachDB

sp_MsForEachDB perform an action on all of the databases.

exec sp_MsForEachDB @command1, @replacechar, @command2, @command3, @whereand, @precommand, @postcommand
  • @command1 - the command to be executed by sp_MsForEachDB.
  • @replacechar - a character in the command string that will be replaced with the database name being processed (default '?').
  • @command2 and @command3 are two additional optional commands that can be run for each database (@command2 will be run after @command1, @command3 will be run after @command2).
  • @whereand - an additional constraints to help identify the rows in the sysobjects database that will be selected.
  • @precommand - a command to be run prior to processing any database.
  • @postcommand - a command to be run after all commands have been processed against all databases.

Examples:
declare @cmd1 varchar(500)
declare @cmd2 varchar(500)
declare @cmd3 varchar(500)
set @cmd1 = 'if ''?'' <> ''tempdb'' print ''*** Processing DB ? ***'''
set @cmd2 = 'if ''?'' <> ''tempdb'' backup database ? to disk=''c:\temp\?.bak'''
set @cmd3 = 'if ''?'' <> ''tempdb'' dbcc checkdb(?)'

exec sp_MSforeachdb @command1=@cmd1,
                    @command2=@cmd2,
                    @command3=@cmd3
GO

EXEC sp_MSforeachdb 'USE ?; EXEC sp_spaceused'


sp_MSforeachtable

sp_MSforeachtable perform an action on all of the tables within a database.

exec sp_MSforeachtable @command1, @replacechar, @command2, @command3, @whereand, @precommand, @postcommand
  • @command1 - the command to be executed by sp_MSforeachtable.
  • @replacechar - a character in the command string that will be replaced with the table name being processed (default '?').
  • @command2 and @command3 are two additional optional commands that can be run for each table (@command2 will be run after @command1, @command3 will be run after @command2).
  • @whereand - an additional constraints to help identify the rows in the sysobjects table that will be selected.
  • @precommand - a command to be run prior to processing any table
  • @postcommand - a command to be run after all commands have been processed against all tables

Examples:
declare @cmd1 varchar(500)
set @cmd1 = 'exec sp_Help "?"'
exec sp_MSforeachtable @command1=@cmd1
GO


EXEC sp_MSforeachtable @command1="print '*'; DBCC DBREINDEX ('*', ' ', 80)" ,@replacechar='*'
GO

RANK OVER, DENSE_RANK OVER

--Returns the rank of a result set:
SELECT StamTableId, StamTableStr, colIntA, 
RANK() OVER (ORDER BY colIntA) as Rank_over
FROM StamTable

--Returns the rank of rows of a result set, without any gaps in the ranking:
SELECT StamTableId, StamTableStr, colIntA, 
DENSE_RANK() OVER (ORDER BY colIntA) as Rank_over
FROM StamTable

--Returns the rank of rows within the partition of a result set, without any gaps in the ranking:
SELECT StamTableId, StamTableStr, colIntA, 
RANK() OVER (PARTITION BY StamTableStr ORDER BY StamTableStr, colIntA) as Rank_over
FROM StamTable

RANK():
DENSE_RANK():

Get the output of INSERT, DELETE, and UPDATE statements

DELETE
FROM StamTable2
OUTPUT deleted.*
WHERE StamTableId > 11

INSERT INTO StamTable2 (StamTableStr, StamTableStr2)
OUTPUT inserted.*
SELECT StamTableStr, StamTableStr FROM StamTable WHERE StamTableId > 11

UPDATE StamTable2
SET StamTableStr2 = StamTableStr2 + '_UPDATED'
OUTPUT deleted.*, inserted.*
WHERE StamTableId > 11

Note: This OUTPUT doesn't work when there are 'instead of' triggers.