在SQL Server 2008註釋sp_spaceused,我想迅速獲得一排用於在存儲過程中的診斷目的的表數。在存儲的過程我用下面的SQL獲得計數,而做一個表掃描:從調用存儲過程
--Get row count using sp_spaceused
DECLARE @rowCount AS INT
DECLARE @spaceUsed TABLE(
[Name] varchar(64),
[Rows] INT,
[Reserved] VARCHAR(50),
[Data] VARCHAR(50),
[Index_Size] VARCHAR(50),
[Unused] VARCHAR(50)
)
INSERT INTO @spaceUsed EXEC sp_spaceused 'MyTable'
SET @rowCount = (SELECT TOP 1 [Rows] FROM @spaceUsed)
這個SQL工作得很好,當我使用管理員帳戶執行從SQL Management Studio中存儲過程。但是,當我嘗試從代碼(使用其他登錄名)執行存儲過程時,sp_spaceused
失敗,並顯示消息「對象'MyTable'在數據庫'MyDatabase'中不存在或對此操作無效。
有沒有一種方法,使這項工作對非管理員聯繫登錄?還有什麼我錯過了在管理工作室與代碼運行過程?
不用戶有權限MyTable?您是否試過在表中包含模式名稱(例如'dbo.MyTable')? –
@Tom H .:看起來用戶對錶格的權限是問題。我授予完全訪問正在執行代碼調用的用戶的權限,並且它可以正常工作。只需要現在回去並找出我需要設置的最低級別的權限。如果您發表評論作爲答案,我會接受。 – rsbarro