Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to identify system objects when viewing list of SQL Server database objects?

I'm trying to list all the stored procedures from all the databases on my server, and I can't seem to filter out system objects reliably. I was using:

SELECT *
  FROM sysobjects
 WHERE id > 100

Which seems to work fine in every database except MSDB, which is full of a ton of stored procs with normal-looking IDs, but they're system stored procs. As far as I can tell, there's no way for me to filter out system stored procs using any of the values in the sysobjects table - does anybody else know of a value that can be used to filter?

They're all marked as type="P", which means it's a stored proc, but there seems to be no flag to specify if it's a system stored proc or a user one. I can use the sys.objects view and filter for "IsMsShipped=0", but I'd like something that also works on SQL 2000, so I'd prefer to use the older views (like sysobjects) if it's possible.

like image 912
SqlRyan Avatar asked Sep 10 '26 18:09

SqlRyan


2 Answers

This works on my SQL Server 2008 R2 install. I don't see much at all except for user databases

SELECT 
    *
FROM
   sys.objects
WHERE
   OBJECTPROPERTY(object_id, 'IsMSShipped') = 0

You can change sys.objects to say, sys.tables and it still works, or use the "type" column to filter. Or use OBJECTPROPERTY(object_id, 'IsProcedure') etc.

Note: it's sys.objects in SQL Server 2005+

Note 2: OBJECTPROPERTY will work for SQL Server 2000 too:

SELECT 
    *
FROM
   sysobjects
WHERE
   OBJECTPROPERTY(id, 'IsMSShipped') = 0
like image 79
gbn Avatar answered Sep 13 '26 17:09

gbn


SQL Server 2005 and higher

SELECT
  SCHEMA_NAME(obj.schema_id) AS schema_name,
  obj.name AS proc_name
FROM
  sys.procedures obj WITH(NOLOCK)
ORDER BY
  schema_name,
  proc_name

SQL Server 2000

SELECT
  USER_NAME(obj.uid) AS user_name,
  obj.name AS proc_name,
FROM
  sysobjects obj WITH(NOLOCK)
WHERE
  (obj.status & 0x80000000) = 0
  AND RTRIM(obj.xtype) IN ('P', 'RF')
ORDER BY
  user_name,
  proc_name
like image 23
Optillect Team Avatar answered Sep 13 '26 19:09

Optillect Team



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!