2009-03-05 40 views

回答

1

將調用包裝在存儲的proc或表值函數中,並使用EXECUTE AS OWNER(假設爲dbo.nameofcodeobject)。

否則,您必須關掉MetaData Visibility保護整個服務器

你不能使用EXECUTE AS的意見這將是這裏有用...

編輯,基於註釋。

sys.database_principals

在SQL Server 2005及更高版本, 中 目錄視圖中的元數據的可見度被限制到用戶擁有或在其 用戶已被授予安全對象 一些 權限。有關更多信息,請參閱 元數據可見性配置。

  • DBO擁有一切,所以看到的一切
  • 權限不能被授予因爲沒有「GRANT VIEW安全」
+0

的問題是,我需要爲DBO看到它通過一個視圖訪問的sys.database_principals。 – 2009-03-05 15:57:16

+0

dbo無論如何都可以看到所有數據...對於其他用戶/角色,您需要將其包裝。 – gbn 2009-03-05 16:04:30

0

梅比它只是我和我的服務器設置,但我能查詢sys.database_principals,只要我有連接權限即可。我也能夠看到用戶名。

您可以通過執行GRANT CONNECT:

GRANT CONNECT TO [USER]