2009-04-22 62 views
1

ident_Current函數在sql server 2005上返回一個空值。查看一些文檔後,它看起來像需要db_owner權限才具有可見性元數據,但那隻在sql server 2008的文檔中指定。Ident_Current在SQL 2005上返回NULL

有人可以確認其相同的SQL Server 2005?我找不到任何文件來證實這一點。

回答

0

要使用ident_current或任何其他函數來獲取最後的身份,用戶需要具有讀取元數據的權限,因此它需要該數據庫的db_onwer。

5

IDENT_CURRENT()如果函數在沒有權限選擇表或視圖的最後一個id的帳戶下運行,將返回null。

使用IDENT_CURRENT()時需要記住的另一件事是返回的ID可以適用於任何範圍和任何會話;這可能是你的意圖,但我通常使用SCOPE_IDENTITY(),當我需要獲取最後操縱記錄的ID時

+0

用戶只需具有db_datareader權限就可以在表上選擇權限,但這不適用於ident current。 – 2009-04-22 21:47:22

+0

我同意,但我會建議只是在表或視圖上運行GRANT SELECT,以確定它不是這個。 – 2009-04-22 21:49:19

0

Russ是正確的。我想指出,我們有一位開發人員使用Ident_current獲取最後的身份,並且他的proc與數據導入同時運行,並且他獲得了導入正在運行的記錄的標識,這使數據庫中的數據完整性搞砸了因爲子表現在與錯誤的記錄有關。這也是一個重新找到並修復的問題。所以使用ident_current要非常小心。在大多數情況下,scope_identity()是你想要的。