@@ -6,7 +6,7 @@ CREATE PROCEDURE [dbo].[sp_helpme]
66 ,@SqlMajorVersion TINYINT = 0
77 ,@SqlMinorVersion SMALLINT = 0
88AS
9-
9+
1010/*
1111sp_helpme - Part of the ExpressSQL Suite https://expresssql.lowlydba.com/
1212
@@ -35,7 +35,7 @@ Example:
3535 EXEC sp_helpme 'dbo.Sales';
3636
3737*/
38-
38+
3939BEGIN
4040 SET NOCOUNT ON;
4141
@@ -87,53 +87,24 @@ BEGIN
8787 -- If no @objname given, give a little info about all objects.
8888 IF (@objname IS NULL)
8989 BEGIN;
90- IF (SERVERPROPERTY('EngineEdition') != 5)
91- BEGIN -- begin SQL Server
92- SET @SQLString = N'SELECT
93- [Name] = o.[name],
94- [Owner] = USER_NAME(OBJECTPROPERTY([object_id], ''ownerid'')),
95- [Object_type] = SUBSTRING(v.[name],5,31),
96- [Create_datetime] = o.create_date,
97- [Modify_datetime] = o.modify_date,
98- [ExtendedProperty] = ep.[value]
99- FROM sys.all_objects o
100- INNER JOIN [master].dbo.spt_values v ON o.[type] = SUBSTRING(v.[name],1,2) COLLATE DATABASE_DEFAULT
101- LEFT JOIN sys.extended_properties ep ON ep.major_id = o.[object_id]
102- and ep.[name] = @epname
103- AND ep.minor_id = 0
104- AND ep.class = 1
105- WHERE v.[type] = ''O9T''
106- ORDER BY [Owner] ASC, Object_type DESC, [name] ASC;';
107- SET @ParmDefinition = N'@epname SYSNAME';
108-
109- EXEC sp_executesql @SQLString
110- ,@ParmDefinition
111- ,@epname;
112- END --end SQL Server objects
113- ELSE
114- BEGIN -- begin Azure SQL
115- SET @SQLString = N'SELECT
116- [Name] = o.[name],
117- [Owner] = USER_NAME(OBJECTPROPERTY([object_id], ''ownerid'')),
118- [Object_type] = SUBSTRING(v.[name],5,31),
119- [Create_datetime] = o.create_date,
120- [Modify_datetime] = o.modify_date,
121- [ExtendedProperty] = ep.[value]
122- FROM sys.all_objects o
123- INNER JOIN sys.spt_values v ON o.[type] = SUBSTRING(v.[name],1,2) COLLATE DATABASE_DEFAULT
124- LEFT JOIN sys.extended_properties ep ON ep.major_id = o.[object_id]
125- and ep.[name] = @epname
126- AND ep.minor_id = 0
127- AND ep.class = 1
128-
129- WHERE v.[type] = ''O9T''
130- ORDER BY [Owner] ASC, Object_type DESC, [name] ASC;';
131- SET @ParmDefinition = N'@epname SYSNAME';
90+ SET @SQLString = N'SELECT
91+ [Name] = [o].[name],
92+ [Owner] = USER_NAME(OBJECTPROPERTY([object_id], ''ownerid'')),
93+ [Object_type] = LOWER(REPLACE([o].[type_desc], ''_'', '' '')),
94+ [Create_datetime] = [o].[create_date],
95+ [Modify_datetime] = [o].[modify_date],
96+ [ExtendedProperty] = [ep].[value]
97+ FROM [sys].[all_objects] [o]
98+ LEFT JOIN [sys].[extended_properties] [ep] ON [ep].[major_id] = [o].[object_id]
99+ and [ep].[name] = @epname
100+ AND [ep].[minor_id] = 0
101+ AND [ep].[class] = 1
102+ ORDER BY [Owner] ASC, [Object_type] DESC, [name] ASC;';
103+ SET @ParmDefinition = N'@epname SYSNAME';
132104
133- EXEC sp_executesql @SQLString
134- ,@ParmDefinition
135- ,@epname;
136- END --end Azure SQL objects
105+ EXEC sp_executesql @SQLString
106+ ,@ParmDefinition
107+ ,@epname;
137108
138109 -- Display all user types
139110 SET @SQLString = N'SELECT
@@ -237,55 +208,26 @@ BEGIN
237208 END --Systypes
238209
239210 -- FOUND IT IN SYSOBJECT, SO GIVE OBJECT INFO
240- IF (SERVERPROPERTY('EngineEdition') != 5)
241- BEGIN -- begin SQL Server
242- SET @SQLString = N'SELECT
243- [Name] = o.name,
244- [Owner] = user_name(ObjectProperty(object_id, ''ownerid'')),
245- [Type] = substring(v.name,5,31),
246- [Created_datetime] = o.create_date,
247- [Modify_datetime] = o.modify_date,
248- [ExtendedProperty] = ep.[value]
249- FROM sys.all_objects o
250- INNER JOIN master.dbo.spt_values v ON o.type = substring(v.name,1,2) collate DATABASE_DEFAULT
251- LEFT JOIN sys.extended_properties ep ON ep.major_id = o.[object_id]
252- AND ep.[name] = @epname
253- AND ep.minor_id = 0
254- AND ep.class = 1
255- WHERE v.type = ''O9T''
256- AND o.object_id = @ObjID;';
257-
258- SET @ParmDefinition = N'@ObjID INT, @epname SYSNAME';
211+ SET @SQLString = N'SELECT
212+ [Name] = [o].[name],
213+ [Owner] = USER_NAME(ObjectProperty([o].[object_id], ''ownerid'')),
214+ [Type] = LOWER(REPLACE([o].[type_desc], ''_'', '' '')),
215+ [Created_datetime] = [o].[create_date],
216+ [Modify_datetime] = [o].[modify_date],
217+ [ExtendedProperty] = [ep].[value]
218+ FROM [sys].[all_objects] [o]
219+ LEFT JOIN [sys].[extended_properties] [ep] ON [ep].[major_id] = [o].[object_id]
220+ AND [ep].[name] = @epname
221+ AND [ep].[minor_id] = 0
222+ AND [ep].[class] = 1
223+ WHERE [o].[object_id] = @ObjID;';
224+
225+ SET @ParmDefinition = N'@ObjID INT, @epname SYSNAME';
259226
260- EXEC sp_executesql @SQLString
261- ,@ParmDefinition
262- ,@ObjID
263- ,@epname;
264-
265- END -- end SQL Server
266- ELSE
267- BEGIN -- begin Azure SQL
268- SET @SQLString = N'SELECT
269- [Name] = o.name,
270- [Owner] = user_name(ObjectProperty( object_id, ''ownerid'')),
271- [Type] = substring(v.name,5,31),
272- [Created_datetime] = o.create_date,
273- [Modify_datetime] = o.modify_date,
274- [ExtendedProperty] = ep.[value]
275- FROM sys.all_objects o
276- INNER JOIN sys.spt_values v ON o.type = substring(v.name,1,2) collate DATABASE_DEFAULT
277- LEFT JOIN sys.extended_properties ep ON ep.major_id = o.[object_id]
278- AND ep.[name] = @epname
279- WHERE o.object_id = @ObjID
280- AND v.type = ''O9T'';';
281-
282- SET @ParmDefinition = N'@ObjID INT, @epname SYSNAME';
283-
284- EXEC sp_executesql @SQLString
285- ,@ParmDefinition
286- ,@ObjID
287- ,@epname;
288- END -- end Azure SQL
227+ EXEC sp_executesql @SQLString
228+ ,@ParmDefinition
229+ ,@ObjID
230+ ,@epname;
289231
290232 -- Display column metadata if table / view
291233 SET @SQLString = N'
@@ -295,7 +237,7 @@ BEGIN
295237 -- SET UP NUMERIC TYPES: THESE WILL HAVE NON-BLANK PREC/SCALE
296238 -- There must be a '','' immediately after each type name (including last one),
297239 -- because that''s what we''ll search for in charindex later.
298- DECLARE @precscaletypes nvarchar (150);
240+ DECLARE @precscaletypes NVARCHAR (150);
299241 SELECT @precscaletypes = N''tinyint,smallint,decimal,int,bigint,real,money,float,numeric,smallmoney,date,time,datetime2,datetimeoffset,''
300242
301243 -- INFO FOR EACH COLUMN
@@ -314,7 +256,7 @@ BEGIN
314256 else '' '' end,
315257 [Nullable] = case when [ac].[is_nullable] = 0 then ''no'' else ''yes'' end, ';
316258
317- --Only include if the exist on the current version
259+ --Only include if they exist on the current version
318260 IF @HasMasked = 1
319261 BEGIN
320262 SET @SQLString = @SQLString + N'[Masked] = case when is_masked = 0 then ''no'' else ''yes'' end, ';
@@ -469,8 +411,6 @@ BEGIN
469411 ,@ObjID;
470412 END
471413 END
472-
473- RETURN (0); -- sp_helpme
474414END;
475415
476416
0 commit comments