Snippets
Table of Contents
SQL
Get Size of All Dbs on Sql Server
with fs as ( select database_id, type, (size * 8.0 / 1024 / 1000) size from sys.master_files ) select name, (select sum(size) from fs where type = 0 and fs.database_id = db.database_id) datafilesizegb, (select sum(size) from fs where type = 1 and fs.database_id = db.database_id) logfilesizegb, (select sum(size) from fs where type = 0 and fs.database_id = db.database_id) + (select sum(size) from fs where type = 1 and fs.database_id = db.database_id) totalfilesizegb from sys.databases db order by totalfilesizegb desc, datafilesizegb desc, logfilesizegb desc
Search and Filter Sp_who2
DECLARE @Table TABLE( SPID INT, Status VARCHAR(MAX), LOGIN VARCHAR(MAX), HostName VARCHAR(MAX), BlkBy VARCHAR(MAX), DBName VARCHAR(MAX), Command VARCHAR(MAX), CPUTime INT, DiskIO INT, LastBatch VARCHAR(MAX), ProgramName VARCHAR(MAX), SPID_1 INT, REQUESTID INT ) INSERT INTO @Table EXEC sp_who2 SELECT * FROM @Table
Search Error Log, Useful for checking progress of restore
xp_readerrorlog 0, 1, N'search-term', NULL, NULL, NULL, N'desc'; GO
You can also leave the search term blank.
Check restore status and completion percent for DB
select d.name, r.start_time, r.status, r.percent_complete, r.command, r.estimated_completion_time from sys.dm_exec_requests r join sys.databases d on d.database_id = r.database_id where d.name = 'db_name'
Check Hours Spent Restoring
select name, state_desc, create_date, DATEDIFF(hour, create_date, GETDATE()) as HoursSpentRestoring from sys.databases where state_desc = 'restoring'
Get Top 3 Rows From Every Table in DB
I find these snippets useful for getting to know a new DB a little better.
Get the top 3 rows of every table.
DECLARE @sql VARCHAR(MAX)=''; SELECT @sql=@sql+'SELECT TOP 3 * FROM '+'['+SCHEMA_NAME(schema_id)+'].['+name+']'+';' FROM sys.tables EXEC(@sql)
Get the top 3 rows of every table, and print the table name.
DECLARE @sql VARCHAR(MAX)=''; SELECT @sql=@sql+'SELECT TOP 3 '''+name+''' as TableName, t.* FROM '+'['+SCHEMA_NAME(schema_id)+'].['+name+'] t'+';' FROM sys.tables EXEC(@sql)
Query to Search All Text Columns of Db
DECLARE @Results TABLE(ColumnName nvarchar(370), ColumnValue nvarchar(3630)) DECLARE @SearchStr nvarchar(100) = 'Search-Term' SET NOCOUNT ON DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110) SET @TableName = '' SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''') WHILE @TableName IS NOT NULL BEGIN SET @ColumnName = '' SET @TableName = ( SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName AND OBJECTPROPERTY( OBJECT_ID( QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) ), 'IsMSShipped' ) = 0 ) WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL) BEGIN SET @ColumnName = ( SELECT MIN(QUOTENAME(COLUMN_NAME)) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = PARSENAME(@TableName, 2) AND TABLE_NAME = PARSENAME(@TableName, 1) AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar') AND QUOTENAME(COLUMN_NAME) > @ColumnName ) IF @ColumnName IS NOT NULL BEGIN INSERT INTO @Results EXEC ( 'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(' + @ColumnName + ', 3630) FROM ' + @TableName + ' (NOLOCK) ' + ' WHERE ' + @ColumnName + ' LIKE ' + @SearchStr2 ) END END END SELECT distinct ColumnName, ColumnValue FROM @Results
PowerShell
Convert JSON to CSV
$pathToJsonFile = "~/path/to/json/file.json" $pathToOutputFile = "~/path/for/csv/file.csv" ((Get-Content -Path $pathToJsonFile) | ConvertFrom-Json).results | Export-CSV $pathToOutputFile -NoTypeInformation
Create HardLink in Windows 10 Powershell
$link = New-Item -ItemType HardLink -Name .\org\ref\dotfiles\desktop\.spacemacs -Value .\.spacemacs $link | Select-Object LinkType, Target $link = New-Item -ItemType HardLink -Name .\org\ref\dotfiles\desktop\.vimrc -Value .\.vimrc $link | Select-Object LinkType, Target
Run powershell script without changing system execution policy
powershell [-noexit] -executionpolicy bypass -File <Filename>
(defun jbm/powershell-execute-bypass-execution-policy () "set current buffer file to bypass system execution policy on windows for PowerShell scripts and execute script" (interactive) (shell-command (concat "powershell -executionpolicy bypass -File " buffer-file-name)))
Az CLI
Get Info about Service Principal
az ad sp show --id service-principal-guid-id
Az cli get users in groups
az ad group member list --group 'group-name' --query [].userPrincipalName
C#
Logging Helper Extension Methods
using System; using System.Xml; using System.Xml.Serialization; using Newtonsoft.Json; using Formatting = Newtonsoft.Json.Formatting; internal static class LoggingHelper { public static string ToJson<T>(this T value) { var settings = new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore, }; return JsonConvert.SerializeObject(value, Formatting.Indented, settings); } public static XmlDocument ToXmlDocument<T>(this T value) { var document = new XmlDocument(); var navigator = document.CreateNavigator(); using (var writer = navigator.AppendChild()) { var serializer = new XmlSerializer(typeof(T)); serializer.Serialize(writer, value); } return document; } /// <summary> /// Perform a deep Copy of the object, using Json as a serialisation method. NOTE: Private members are not cloned using this method. /// https://stackoverflow.com/questions/78536/deep-cloning-objects /// </summary> /// <typeparam name="T">The type of object being copied.</typeparam> /// <param name="source">The object instance to copy.</param> /// <returns>The copied object.</returns> public static T CloneJson<T>(this T source) { // Don't serialize a null object, simply return the default for that object if (Object.ReferenceEquals(source, null)) { return default(T); } // initialize inner objects individually // for example in default constructor some list property initialized with some values, // but in 'source' these items are cleaned - // without ObjectCreationHandling.Replace default constructor values will be added to result var deserializeSettings = new JsonSerializerSettings { ObjectCreationHandling = ObjectCreationHandling.Replace }; return JsonConvert.DeserializeObject<T>(JsonConvert.SerializeObject(source), deserializeSettings); } public static XmlNode[] ToXmlDataNode<T>(this T messageData) { var xDoc = new XmlDocument(); var dataXmlElement = xDoc.CreateElement("data"); dataXmlElement.InnerText = messageData.ToJson(); xDoc.AppendChild(dataXmlElement); return new XmlNode[] { xDoc }; } }
Vim
Convert lines of XML in Buffer to XML file
Useful when you copy and paste SQL column of XML type and want each to have it's own file.
:g/./execute '.w'.line('.').xml'