如何在查询sql server数据库时获取系统对象的模式名称

本文关键字:对象 系统对 系统 模式 获取 查询 sql 数据库 server | 更新日期: 2023-09-27 18:04:47

我需要在数据库中查询所有存储过程的名称和模式名称。

这是我到目前为止得到的,但我不知道如何获得模式名称。

查询sysojects表时,模式名的字段名是什么?

  private DataTable GetProcedures()
    {
        var table = new DataTable();
        string sql = "";
        sql = "select name,'' as type ";
        sql += " From sysobjects ";
        sql += " where type = 'P' ";
        sql += " and name not like 'dt_%'  ";
        sql += " order by name asc";
        using (SqlConnection conn = new SqlConnection(cs))
        {
            conn.Open();
            using (SqlCommand cmd = new SqlCommand())
            {
                cmd.Connection = conn;
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = sql;
                using (SqlDataAdapter da = new SqlDataAdapter(cmd))
                {
                    da.Fill(table);
                }
            }
        }
        return table;
    }

如何在查询sql server数据库时获取系统对象的模式名称

sys.objects表连接到sys.schemas表,如下所示:

SELECT schemas.name, objects.name
FROM sys.objects
JOIN sys.schemas ON schemas.schema_id = objects.schema_id

查找所有存储过程(以您的查询作为开始),它看起来像这样:

SELECT schemas.name, objects.name
FROM sys.objects
JOIN sys.schemas ON schemas.schema_id = objects.schema_id
WHERE type = 'P'
AND objects.name NOT LIKE 'dt_%'

作为附加信息,您不应该再使用sysobjects,因为它已被sys.objects取代,其他sys*表也是如此。

也许这能帮到你:

SELECT name AS object_name 
  ,SCHEMA_NAME(schema_id) AS schema_name
  ,type_desc
  ,create_date
  ,modify_date
FROM sys.objects
WHERE type = 'P'
ORDER BY name asc;