【问题标题】:Stored procedure will not display in object explorer?存储过程不会显示在对象资源管理器中?
【发布时间】:2011-07-29 20:41:57
【问题描述】:
USE [MASTER]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
USE [MASTER]
GO
CREATE PROCEDURE [dbo].[TOTALLY_NEW] @FISCAL_YEAR NVARCHAR(4) AS
BEGIN
PRINT 'HERE'
END
GO

select * from master..sysobjects where name like 'tot%'

我已经刷新了这个列表十几次..!! 我试过断开连接并重新连接.. 我之前已经创建了图片中列出的所有其他 SP。

这里有更多的图片。

【问题讨论】:

  • 嗯,你确定这是主数据库下的可编程性节点(为什么要在主数据库中创建所有这些用户对象)?当您突出显示存储过程然后显示对象资源管理器详细信息时会发生什么?为什么屏幕截图会在 dbo.TOTALLY_NEW 出现的位置之前方便地截断?
  • 我在下一个文件夹图标之前剪掉了照片...相信我!
  • 您没有解决我的其他问题 - 您确定这是 master,为什么要在 master 中创建用户过程,您在对象资源管理器详细信息中看到了什么?
  • 我会在周一上班的时候回答其余的问题。
  • 我重读了你的 cmets。不知道你为什么暗示我会故意切断图像以使它看起来像我有问题。无论如何,我附上了更完整的图像。现在如何检查我无法导航到的对象的权限?

标签: sql sql-server-2005 tsql stored-procedures


【解决方案1】:

确保您使用的用户具有查看存储过程的权限。我不是 100% 了解 SQL Server 这是哪个权限,但我在其他一些用户创建 SP 的数据库上看到了这个问题,但另一个用户没有查看或列出 SP 的权限。

【讨论】:

  • 我用这个账号创建了几十个sps。我什至可以在当前不可见的情况下执行 sp。
  • 我同意 Khirok 的观点——我以前见过这个,这是一个权限问题(即使您能够执行存储过程,您也可能没有查看代码的权限)。
  • 我是 IT 部门的 50%....权限怎么会改变?如何查看权限?我让其他 50% 的部门尝试登录并遇到同样的问题。
【解决方案2】:

根据请求,将评论转换为答案:

是的,您不应该在 master 中创建用户对象。我唯一一次这样做是当我明确想要创建一个实用程序时,我可以使用该数据库的上下文从任何数据库调用该实用程序,您必须故意这样做并且不会偶然发生 - 所以我怀疑您无意中标记了您的对象作为系统过程。您可以使用 EXEC sp_MS_marksystemobject 执行此操作(或者在旧版本中通过设置 EXEC sp_MS_upd_sysobj_category 1 - 后者可能在 2005 年与 80 兼容,不确定)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-05
    相关资源
    最近更新 更多