Skip to content

Commit 9ee77a3

Browse files
committed
added whoisactive and blitzlock
1 parent 9ca1ba0 commit 9ee77a3

4 files changed

Lines changed: 116 additions & 22 deletions

File tree

package.json

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,47 +23,55 @@
2323
"commands": [
2424
{
2525
"command": "extension.sp_blitzversion",
26-
"title": "First Responder Kit: Check sp_blitz Version"
26+
"title": "First Responder Kit: Check sp_Blitz Version"
2727
},
2828
{
2929
"command": "extension.sp_blitzall",
30-
"title": "First Responder Kit: Import sp_blitz and all its friends"
30+
"title": "First Responder Kit: Import sp_Blitz and all its friends"
3131
},
3232
{
3333
"command": "extension.sp_blitz",
34-
"title": "First Responder Kit: Import sp_blitz"
34+
"title": "First Responder Kit: Import sp_Blitz"
3535
},
3636
{
3737
"command": "extension.run_sp_blitz",
38-
"title": "First Responder Kit: Run sp_blitz"
38+
"title": "First Responder Kit: Run sp_Blitz"
3939
},
4040
{
4141
"command": "extension.sp_blitzindex",
42-
"title": "First Responder Kit: Import sp_blitzindex"
42+
"title": "First Responder Kit: Import sp_BlitzIndex"
4343
},
4444
{
4545
"command": "extension.run_sp_blitzindex",
46-
"title": "First Responder Kit: Run sp_blitzindex"
46+
"title": "First Responder Kit: Run sp_BlitzIndex"
4747
},
4848
{
4949
"command": "extension.sp_blitzwho",
50-
"title": "First Responder Kit: Import sp_blitzwho"
50+
"title": "First Responder Kit: Import sp_BlitzWho"
5151
},
5252
{
5353
"command": "extension.sp_blitzfirst",
54-
"title": "First Responder Kit: Import sp_blitzfirst"
54+
"title": "First Responder Kit: Import sp_BlitzFirst"
5555
},
5656
{
5757
"command": "extension.run_sp_blitzfirst",
58-
"title": "First Responder Kit: Run sp_blitzfirst"
58+
"title": "First Responder Kit: Run sp_BlitzFirst"
5959
},
6060
{
6161
"command": "extension.sp_blitzcache",
62-
"title": "First Responder Kit: Import sp_blitzcache"
62+
"title": "First Responder Kit: Import sp_BlitzCache"
6363
},
6464
{
6565
"command": "extension.run_sp_blitzcache",
66-
"title": "First Responder Kit: Run sp_blitzcache"
66+
"title": "First Responder Kit: Run sp_BlitzCache"
67+
},
68+
{
69+
"command": "extension.run_sp_whoisactive",
70+
"title": "First Responder Kit: Run sp_WhoIsActive"
71+
},
72+
{
73+
"command": "extension.run_sp_blitzlock",
74+
"title": "First Responder Kit: Run sp_BlitzLock"
6775
}
6876
],
6977
"snippets": [
@@ -79,6 +87,21 @@
7987
"when": "connectionProvider == MSSQL && nodeType && nodeType == Server",
8088
"group": "FRK"
8189
},
90+
{
91+
"command": "extension.run_sp_whoisactive",
92+
"when": "connectionProvider == MSSQL && nodeType && nodeType == Server",
93+
"group": "FRK"
94+
},
95+
{
96+
"command": "extension.run_sp_blitzlock",
97+
"when": "connectionProvider == MSSQL && nodeType && nodeType == Server",
98+
"group": "FRK"
99+
},
100+
{
101+
"command": "extension.run_sp_blitzlock",
102+
"when": "connectionProvider == MSSQL && nodeType && nodeType == Database",
103+
"group": "FRK"
104+
},
82105
{
83106
"command": "extension.run_sp_blitzindex",
84107
"when": "connectionProvider == MSSQL && nodeType && nodeType == Database",

snippets/snippets.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,5 +48,14 @@
4848
"-- for more info: https://www.brentozar.com/askbrent/"
4949
],
5050
"description": "sp_blitzfirst execution script"
51+
},
52+
"FRK sp_whoisactive": {
53+
"prefix": "sqlFRKspWhoIsActive",
54+
"body": [
55+
"EXEC sp_WhoIsActive ",
56+
"@find_block_leaders = 1,",
57+
"@sort_order = '[blocked_session_count] DESC'",
58+
"-- for more info: http://whoisactive.com/docs/"
59+
]
5160
}
5261
}

src/extension.ts

Lines changed: 59 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,17 @@ export function activate(context: vscode.ExtensionContext) {
1919
context.subscriptions.push(disposable_oediag);
2020

2121
// checking spblitz versioning
22-
var getblitzversion = async (context: sqlops.ObjectExplorerContext) => {
22+
var getblitzversion = async (context?: sqlops.ObjectExplorerContext) => {
2323
var amIUPD = new updatecheck();
2424
let updateReturn = await amIUPD.checkForUpdates(context);
25+
if (updateReturn) {
26+
if (updateReturn == 'update') {
27+
getblitzall();
28+
} else if (updateReturn != '') {
29+
let versionURL = 'https://github.com/BrentOzarULTD/SQL-Server-First-Responder-Kit/releases/tag/' + updateReturn;
30+
vscode.commands.executeCommand('vscode.open', vscode.Uri.parse(versionURL));
31+
}
2532

26-
if (updateReturn == 'update') {
27-
getblitzall();
28-
} else if (updateReturn != '') {
29-
let versionURL = 'https://github.com/BrentOzarULTD/SQL-Server-First-Responder-Kit/releases/tag/' + updateReturn;
30-
vscode.commands.executeCommand('vscode.open', vscode.Uri.parse(versionURL));
3133
} else {
3234
// do nothing
3335
}
@@ -222,6 +224,57 @@ export function activate(context: vscode.ExtensionContext) {
222224
var disposable_runspblitzfirst = vscode.commands.registerCommand('extension.run_sp_blitzfirst',runspblitzfirst);
223225
context.subscriptions.push(disposable_runspblitzfirst);
224226

227+
//creating the quickrun script for blitzlock
228+
var runspblitzlock = async (context?: sqlops.ObjectExplorerContext) => {
229+
let fileName = "exec_sp_blitzlock.sql";
230+
let scriptText = '';
231+
if (context && context.nodeInfo) {
232+
let scriptType = context.nodeInfo.nodeType;
233+
fileName = context.nodeInfo.label + '-' + fileName;
234+
var nodeBreakdown = context.nodeInfo.nodePath.split("/");
235+
let dbName = nodeBreakdown[2];
236+
switch (scriptType) {
237+
case "Database": {
238+
scriptText = `EXEC [dbo].[sp_BlitzLock]
239+
@DatabaseName = '${dbName}',
240+
--@TableName = '',
241+
@Top = 10`;
242+
break;
243+
}
244+
default: {
245+
scriptText = `EXEC [dbo].[sp_BlitzLock]
246+
@Top = 10`;
247+
break;
248+
}
249+
}
250+
} else {
251+
scriptText = `EXEC [dbo].[sp_BlitzLock]
252+
@Top = 10
253+
--@DatabaseName = '',`;
254+
}
255+
scriptText += `
256+
-- for more info: https://www.brentozar.com/archive/2017/12/introducing-sp_blitzlock-troubleshooting-sql-server-deadlocks/
257+
`;
258+
new placeScript().placescript(fileName,scriptText,context);
259+
};
260+
var disposable_runspblitzlock = vscode.commands.registerCommand('extension.run_sp_blitzlock',runspblitzlock);
261+
context.subscriptions.push(disposable_runspblitzlock);
262+
263+
//creating the quickrun script for whoisactive
264+
var runspwhoisactive = async (context?: sqlops.ObjectExplorerContext) => {
265+
let fileName = "exec_sp_whoisactive.sql";
266+
console.log('Preparing sample run script.');
267+
const scriptText = `EXEC sp_WhoIsActive
268+
@find_block_leaders = 1,
269+
@sort_order = '[blocked_session_count] DESC'
270+
271+
-- for more info: http://whoisactive.com/docs/
272+
`;
273+
new placeScript().placescript(fileName,scriptText,context);
274+
};
275+
var disposable_runspwhoisactive = vscode.commands.registerCommand('extension.run_sp_whoisactive',runspwhoisactive);
276+
context.subscriptions.push(disposable_runspwhoisactive);
277+
225278
}
226279

227280
export function deactivate() {

src/updateCheck.ts

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,32 @@ import * as apiConfig from './apiconfig';
77
let apiconfig: apiConfig.apiconfig = require('../apiconfig.json');
88

99
export class updatecheck {
10-
public async checkForUpdates(context: sqlops.ObjectExplorerContext): Promise<string> {
10+
public async checkForUpdates(context?: sqlops.ObjectExplorerContext): Promise<string> {
1111
let baseUrl = "https://api.github.com/repos/BrentOzarULTD/SQL-Server-First-Responder-Kit/releases/latest";
1212

1313
let apitoken = 'token ' + apiconfig.token;
14-
let queryProvider = sqlops.dataprotocol.getProvider<sqlops.QueryProvider>(context.connectionProfile.providerName, sqlops.DataProviderType.QueryProvider);
1514
vscode.window.showInformationMessage("Checking First Responder Kit for Updates");
15+
1616
try {
17-
let connection = context.connectionProfile;
17+
var connectId;
18+
if (context) {
19+
let connection = context.connectionProfile;
20+
connectId = connection.id;
21+
} else {
22+
let connection = await sqlops.connection.getCurrentConnection();
23+
connectId = connection.connectionId;
24+
}
25+
1826
let query = `declare @versionno datetime
1927
IF OBJECT_ID('dbo.sp_Blitz') IS NULL
2028
set @versionno = '1/1/1900'
2129
ELSE
2230
exec sp_blitz @help = 1, @versiondate = @versionno output
2331
select convert(varchar(10),@versionno,112) as versionno`;
2432

25-
let connectionUri = await sqlops.connection.getUriForConnection(connection.id);
26-
if (connection) {
33+
if (connectId) {
34+
let connectionUri = await sqlops.connection.getUriForConnection(connectId);
35+
let queryProvider = sqlops.dataprotocol.getProvider<sqlops.QueryProvider>(context.connectionProfile.providerName, sqlops.DataProviderType.QueryProvider);
2736
let results = await queryProvider.runQueryAndReturn(connectionUri, query);
2837
let cell = results.rows[0][0];
2938
let currentVersion = cell.displayValue;

0 commit comments

Comments
 (0)