2012-11-28 27 views
0

我已經爲SQL Server數據庫創建了用戶。它創建得很好。爲SQL Server數據庫創建用戶並通過C#.net應用程序訪問

當我通過應用程序訪問通過執行下面的代碼不切換到我是用戶指定爲

exec as user='myuser' 
ALTER USER myuser WITH DEFAULT_SCHEMA=maindb 
EXEC sp_addrolemember N'db_owner', N'myuser' 

,我已經運行查詢作爲

DbCommand command = ds.CreateCommand(); 
command.CommandText = "exec as user='myuser'"; 
command.CommandType = CommandType.Text; 
command.ExecuteNonQuery(); 
我的問題是來自C#的

代碼

等待您的寶貴意見和建議

+0

你的連接字符串在哪裏?你也可以使用SqlCommand類而不是DbCommand – AssaultingCuccos

+0

連接字符串是DbConnection ds =「」;從web.config文件獲得的值 – GowthamanSS

+0

爲什麼不以myuser的身份連接到數據庫? – tschmit007

回答

0

是的,這是預期的。連接字符串包含連接到服務器所需的憑據。並且通常在應用程序和數據庫之間存在單個連接字符串以優化資源並利用連接池等。

不同的用戶可能在系統中擁有不同的權限,但可以通過授權而不是連接字符串來處理。

+0

創建用戶時我應該給用戶什麼命令授予所有權限訪問 – GowthamanSS

+0

你不會。將會有一個帳戶用於在應用程序和數據庫之間進行通信。 (最多2個,一個用於用戶,另一個用於系統管理員)。用戶及其憑證/訪問/操作可以由其他來源進行管理。無論是活動目錄,RDBMS中的集合表,硬編碼的配置設置,文檔數據庫等。其中一個例子就是用於Web應用程序的asp.net成員資格提供程序。 –

+0

我應該澄清,管理用戶是獨立於連接字符串和數據庫操作。您可以管理用戶授權進行的操作,但這不是在數據庫級別完成的,而是在應用程序內完成的。 –

0

EXECUTE AS Clause

指定在EXECUTE AS子句必須存在作爲sys.database_principals或sys.server_principals一個 主要用戶或登錄名, 分別,否則創建或更改模塊操作失敗。 此外,創建或更改模塊的用戶對主體必須具有IMPRESSATE權限 。

你滿足這些條件嗎?

相關問題