2014-01-08 152 views
0

我已經在VB.NET中編寫了一個程序,它連接到我們的SQL Server之一。連接是必需的,因爲數據庫上有一些存儲過程,必須執行。用VB.NET程序運行存儲過程

但問題是,我無法運行任何存儲過程。我認爲問題的原因是,用戶沒有權限在數據庫上運行任何存儲過程。

我已經在SQL Server上創建數據庫,沒有任何權限配置。

在我的程序的連接字符串是這樣的:

Data Source=SQL01;Initial Catalog=DB;Integrated Security=True 

我的客戶,它用我的計劃是域用戶。

現在我的問題:我是否有可能定義一個Active Directory用戶,該用戶應該有權限對數據庫執行任何存儲過程?

謝謝!

+0

如果是這樣那麼規劃問題發佈相關的代碼和錯誤消息,如果它是一個服務器管理問題,那麼你在這裏脫離主題(serverfault.com) – Steve

+0

所以問題是:我如何模擬執行存儲過程的用戶?檢查http://stackoverflow.com/questions/8439517/connecting-to-a-database-using-windows-authentication-with-different-credentials –

+0

順便說一句你爲什麼要這個作爲另一個用戶運行?集成的安全性確保連接與客戶的憑據 –

回答

1
USE myDB; 
GO 

CREATE ROLE newrole; 
GO 

GRANT EXECUTE ON dbo.myStoredProc TO newrole ; 
GO 

-- or if you want to grant execute to an entire schema. 
GRANT EXEC ON SCHEMA::schema_name TO role_name 

然後加入AD組/用戶角色(你需要創建的AD用戶/組登錄)

參考:GRANT

+0

對於那些瞭解SQL Server安全模型的人來說,這不是一個壞主意。對於那些不太清楚這與原始問題相關的問題,或者爲什麼爲了正確實現安全性而更好地扮演 –

+2

,理解SQL Server的安全模型是必要條件。而且它還適用於模擬。 –

+0

@MitchWheat謝謝你的回答。我應該運行最後的命令嗎? GRANT EXEC ON SCHEMA :: schema_name TO role_name?這個命令有什麼樣的影響? –