Skip to content

Commit 3d26683

Browse files
authored
Merge pull request #215 from LowlyDBA/sp-doc-add-schemas
Sp doc add schemas
2 parents 1bea29a + b10b25f commit 3d26683

File tree

11 files changed

+781
-392
lines changed

11 files changed

+781
-392
lines changed

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
MIT License
22

3-
Copyright (c) 2020 John McCall
3+
Copyright (c) 2021 John McCall
44

55
Permission is hereby granted, free of charge, to any person obtaining a copy
66
of this software and associated documentation files (the "Software"), to deal

appveyor/sqlcover/Coverage.opencoverxml

Lines changed: 356 additions & 352 deletions
Large diffs are not rendered by default.

appveyor/sqlcover/[dbo].[sp_doc]

Lines changed: 111 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ sp_doc - Always have current documentation by generating it on the fly in markdo
1717

1818
Part of the DBA MultiTool http://dba-multitool.org
1919

20-
Version: 20210629
20+
Version: 20210801
2121

2222
MIT License
2323

24-
Copyright (c) 2020 John McCall
24+
Copyright (c) 2021 John McCall
2525

2626
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
2727
documentation files (the "Software"), to deal in the Software without restriction, including without limitation
@@ -166,11 +166,10 @@ BEGIN
166166
SELECT CONCAT(''| '', ''Collation'', '' | '', [collation_name], '' |'')
167167
FROM [sys].[databases]
168168
WHERE [name] = DB_NAME();
169-
' +
170169

171-
/****************************
172-
Generate markdown for tables
173-
****************************/
170+
INSERT INTO #markdown (value)
171+
VALUES (''----'');' +
172+
174173
--Variables
175174
+ N'DECLARE @ObjectId INT,
176175
@IndexObjectId INT,
@@ -181,15 +180,113 @@ BEGIN
181180
DECLARE @KeyColumns NVARCHAR(MAX),
182181
@IncludeColumns NVARCHAR(MAX);';
183182

183+
/*****************************
184+
Generate markdown for schemas
185+
*****************************/
186+
--Build table of contents
187+
SET @Sql = @Sql + N'
188+
INSERT INTO #markdown (value)
189+
VALUES (CONCAT(CHAR(13), CHAR(10), ''## Schemas''))
190+
,(CONCAT(CHAR(13), CHAR(10), ''<details><summary>Click to expand</summary>'', CHAR(13), CHAR(10)));' +
191+
192+
+ N'INSERT INTO #markdown (value)
193+
SELECT CONCAT(''* ['', [name], ''](#'', REPLACE(LOWER([name]), '' '', ''-''), '')'')
194+
FROM [sys].[schemas]
195+
WHERE [schema_id] < 16384
196+
AND [name] NOT IN (''sys'', ''guest'', ''INFORMATION_SCHEMA'')
197+
ORDER BY [name] ASC;' +
198+
199+
--Object details
200+
+ N'DECLARE [obj_cursor] CURSOR
201+
LOCAL STATIC READ_ONLY FORWARD_ONLY
202+
FOR
203+
SELECT [schema_id]
204+
FROM [sys].[schemas]
205+
WHERE [schema_id] < 16384
206+
AND [name] NOT IN (''sys'', ''guest'', ''INFORMATION_SCHEMA'')
207+
ORDER BY [name] ASC;
208+
209+
OPEN [obj_cursor]
210+
FETCH NEXT FROM [obj_cursor] INTO @ObjectId
211+
WHILE @@FETCH_STATUS = 0
212+
BEGIN;
213+
214+
INSERT INTO #markdown
215+
SELECT CONCAT(CHAR(13), CHAR(10), ''### '', SCHEMA_NAME(@ObjectId));' +
216+
217+
--Main Extended Property (@ExtendedProperty)
218+
+ N'
219+
IF EXISTS (SELECT * FROM [sys].[schemas] AS [s] WITH(NOLOCK)
220+
INNER JOIN [sys].[extended_properties] AS [ep] WITH(NOLOCK) ON [s].[schema_id] = [ep].[major_id]
221+
WHERE [s].[schema_id] = @ObjectId
222+
AND [ep].[minor_id] = 0 --On the object
223+
AND [ep].[class] = 3 --Schema
224+
AND [ep].[name] = @ExtendedPropertyName)
225+
BEGIN;
226+
INSERT INTO #markdown (value)
227+
VALUES (CONCAT(CHAR(13), CHAR(10), ''| '', @ExtendedPropertyName COLLATE DATABASE_DEFAULT, '' |''))
228+
,(''| --- |'');
229+
230+
INSERT INTO #markdown (value)
231+
SELECT CONCAT(''| '', REPLACE(REPLACE(REPLACE(REPLACE(CAST([ep].[value] AS NVARCHAR(4000)), ''|'', @PipeHTMLCode COLLATE DATABASE_DEFAULT), CHAR(13) + CHAR(10), @BreakHTMLCode COLLATE DATABASE_DEFAULT), ''`'', @TickHTMLCode COLLATE DATABASE_DEFAULT), '']'', @RightBracketHTMLCode COLLATE DATABASE_DEFAULT) COLLATE DATABASE_DEFAULT, '' |'')
232+
FROM [sys].[schemas] AS [s] WITH(NOLOCK)
233+
INNER JOIN [sys].[extended_properties] AS [ep] WITH(NOLOCK) ON [s].[schema_id] = [ep].[major_id]
234+
WHERE [s].[schema_id] = @ObjectId
235+
AND [ep].[minor_id] = 0 --On the object
236+
AND [ep].[class] = 3 --Schema
237+
AND [ep].[name] = @ExtendedPropertyName;
238+
END;';
239+
240+
--All Extended Properties (non-@ExtendedProperty)
241+
IF @AllExtendedProperties = 1
242+
BEGIN;
243+
SET @Sql = @Sql + N'
244+
IF EXISTS (SELECT * FROM [sys].[schemas] AS [s] WITH(NOLOCK)
245+
INNER JOIN [sys].[extended_properties] AS [ep] WITH(NOLOCK) ON [s].[schema_id] = [ep].[major_id]
246+
WHERE [s].[schema_id] = @ObjectId
247+
AND [ep].[minor_id] = 0 --On the object
248+
AND [ep].[class] = 3 --Schema
249+
AND [ep].[name] <> @ExtendedPropertyName)
250+
BEGIN;
251+
INSERT INTO #markdown (value)
252+
VALUES (CONCAT(CHAR(13), CHAR(10), ''#### '', ''Extended Properties''))
253+
,(CONCAT(CHAR(13), CHAR(10), ''| Name | Value |''))
254+
,(''| --- | --- |'');
255+
256+
INSERT INTO #markdown (value)
257+
SELECT CONCAT(''| '', [ep].[name], '' | '', REPLACE(REPLACE(REPLACE(REPLACE(CAST([ep].[value] AS NVARCHAR(4000)), ''|'', @PipeHTMLCode COLLATE DATABASE_DEFAULT), CHAR(13) + CHAR(10), @BreakHTMLCode COLLATE DATABASE_DEFAULT), ''`'', @TickHTMLCode COLLATE DATABASE_DEFAULT), '']'', @RightBracketHTMLCode COLLATE DATABASE_DEFAULT) COLLATE DATABASE_DEFAULT, '' |'')
258+
FROM [sys].[schemas] AS [s] WITH(NOLOCK)
259+
INNER JOIN [sys].[extended_properties] AS [ep] WITH(NOLOCK) ON [s].[schema_id] = [ep].[major_id]
260+
WHERE [s].[schema_id] = @ObjectId
261+
AND [ep].[minor_id] = 0 --On the object
262+
AND [ep].[class] = 3 --Schema
263+
AND [ep].[name] <> @ExtendedPropertyName
264+
ORDER BY [ep].[name] ASC;
265+
END;';
266+
END;
267+
268+
SET @Sql = @Sql + N'
269+
FETCH NEXT FROM obj_cursor INTO @ObjectId;
270+
271+
END;
272+
CLOSE obj_cursor;
273+
DEALLOCATE obj_cursor;' +
274+
275+
--End collapsible schema section
276+
+ N'INSERT INTO #markdown
277+
VALUES (CONCAT(CHAR(13), CHAR(10), ''</details>''));';
278+
--End markdown for schemas
279+
280+
/****************************
281+
Generate markdown for tables
282+
****************************/
184283
--Build table of contents
185284
SET @Sql = @Sql + N'
186285
IF EXISTS (SELECT 1 FROM [sys].[tables] WHERE [type] = ''U'' AND [is_ms_shipped] = 0)
187286
BEGIN
188287
INSERT INTO #markdown (value)
189-
VALUES (''----'')
190-
,(CONCAT(CHAR(13), CHAR(10), ''## Tables''))
191-
,(CONCAT(CHAR(13), CHAR(10), ''<details><summary>Click to expand</summary>'', CHAR(13), CHAR(10)));
192-
' +
288+
VALUES (CONCAT(CHAR(13), CHAR(10), ''## Tables''))
289+
,(CONCAT(CHAR(13), CHAR(10), ''<details><summary>Click to expand</summary>'', CHAR(13), CHAR(10)));' +
193290

194291
+ N'INSERT INTO #markdown (value)
195292
SELECT CONCAT(''* ['', OBJECT_SCHEMA_NAME(object_id), ''.'', OBJECT_NAME(object_id), ''](#'', REPLACE(LOWER(OBJECT_SCHEMA_NAME(object_id)), '' '', ''-''), REPLACE(LOWER(OBJECT_NAME(object_id)), '' '', ''-''), '')'')
@@ -222,6 +319,7 @@ BEGIN
222319
INNER JOIN [sys].[extended_properties] AS [ep] WITH(NOLOCK) ON [t].[object_id] = [ep].[major_id]
223320
WHERE [t].[object_id] = @ObjectId
224321
AND [ep].[minor_id] = 0 --On the table
322+
AND [ep].[class] = 1 --Object or col
225323
AND [ep].[name] = @ExtendedPropertyName)
226324
BEGIN;
227325
INSERT INTO #markdown (value)
@@ -234,6 +332,7 @@ BEGIN
234332
INNER JOIN [sys].[extended_properties] AS [ep] WITH(NOLOCK) ON [t].[object_id] = [ep].[major_id]
235333
WHERE [t].[object_id] = @ObjectId
236334
AND [ep].[minor_id] = 0 --On the table
335+
AND [ep].[class] = 1 --Object or col
237336
AND [ep].[name] = @ExtendedPropertyName;
238337
END;';
239338

@@ -245,6 +344,7 @@ BEGIN
245344
INNER JOIN [sys].[extended_properties] AS [ep] WITH(NOLOCK) ON [t].[object_id] = [ep].[major_id]
246345
WHERE [t].[object_id] = @ObjectId
247346
AND [ep].[minor_id] = 0 --On the table
347+
AND [ep].[class] = 1 --Object or col
248348
AND [ep].[name] <> @ExtendedPropertyName)
249349
BEGIN;
250350
INSERT INTO #markdown (value)
@@ -258,6 +358,7 @@ BEGIN
258358
INNER JOIN [sys].[extended_properties] AS [ep] WITH(NOLOCK) ON [t].[object_id] = [ep].[major_id]
259359
WHERE [t].[object_id] = @ObjectId
260360
AND [ep].[minor_id] = 0 --On the table
361+
AND [ep].[class] = 1 --Object or col
261362
AND [ep].[name] <> @ExtendedPropertyName
262363
ORDER BY [ep].[name] ASC;
263364
END;';
@@ -2033,7 +2134,6 @@ BEGIN
20332134
,@TickHTMLCode
20342135
,@RightBracketHTMLCode
20352136
,@BreakHTMLCode;
2036-
20372137
END;
20382138

20392139

appveyor/sqlcover/[dbo].[sp_estindex]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Version: 20210405
2525

2626
MIT License
2727

28-
Copyright (c) 2020 John McCall
28+
Copyright (c) 2021 John McCall
2929

3030
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
3131
documentation files (the "Software"), to deal in the Software without restriction, including without limitation

appveyor/sqlcover/[dbo].[sp_sizeoptimiser]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Version: 20210622
2323

2424
MIT License
2525

26-
Copyright (c) 2020 John McCall
26+
Copyright (c) 2021 John McCall
2727

2828
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
2929
documentation files (the "Software"), to deal in the Software without restriction, including without limitation

docs/assets/WideWorldImporters.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,86 @@
77
| Collation | Latin1_General_100_CI_AS |
88
----
99

10+
## Schemas
11+
12+
<details><summary>Click to expand</summary>
13+
14+
* [Application](#application)
15+
* [DataLoadSimulation](#dataloadsimulation)
16+
* [dbo](#dbo)
17+
* [Integration](#integration)
18+
* [PowerBI](#powerbi)
19+
* [Purchasing](#purchasing)
20+
* [Reports](#reports)
21+
* [Sales](#sales)
22+
* [Sequences](#sequences)
23+
* [Warehouse](#warehouse)
24+
* [Website](#website)
25+
26+
### Application
27+
28+
| Description |
29+
| --- |
30+
| Tables common across the application. Used for categorization and lookup lists, system parameters and people (users and contacts) |
31+
32+
### DataLoadSimulation
33+
34+
| Description |
35+
| --- |
36+
| Tables and procedures used only during simulated data loading operations |
37+
38+
### dbo
39+
40+
### Integration
41+
42+
| Description |
43+
| --- |
44+
| Tables and procedures required for integration with the data warehouse |
45+
46+
### PowerBI
47+
48+
| Description |
49+
| --- |
50+
| Views and stored procedures that provide the only access for the Power BI dashboard system |
51+
52+
### Purchasing
53+
54+
| Description |
55+
| --- |
56+
| Details of suppliers and of purchasing of stock items |
57+
58+
### Reports
59+
60+
| Description |
61+
| --- |
62+
| Views and stored procedures that provide the only access for the reporting system |
63+
64+
### Sales
65+
66+
| Description |
67+
| --- |
68+
| Details of customers, salespeople, and of sales of stock items |
69+
70+
### Sequences
71+
72+
| Description |
73+
| --- |
74+
| Holds sequences used by all tables in the application |
75+
76+
### Warehouse
77+
78+
| Description |
79+
| --- |
80+
| Details of stock items, their holdings and transactions |
81+
82+
### Website
83+
84+
| Description |
85+
| --- |
86+
| Views and stored procedures that provide the only access for the application website |
87+
88+
</details>
89+
1090
## Tables
1191

1292
<details><summary>Click to expand</summary>

docs/sp_doc.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ red tape that third party applications often require.
2727

2828
It documents:
2929

30+
* Schemas
3031
* Tables
3132
* Triggers
3233
* Default Constraints

0 commit comments

Comments
 (0)