2011-06-05 80 views
-1

爲什麼當我嘗試在C#中使用它時,drop user a_2命令不起作用,而當我在SQL Server Management Studio中嘗試它時,它在那裏起作用!! ???爲什麼SQL的「drop user」命令在C#中不起作用?

這是我用它當我創建的用戶&給它一個許可代碼:

use DataBaseName; 
create login a_2 with password='Aa123'; 
create user a_2 for login a_2; 
grant insert to a_2; 

.......... 

使用的連接字符串:

Data Source=TheServerName;Integrated Security=True;database=master 

注:

我試着從C#中刪除一個數據庫,它完美的工作沒有任何問題,但當我用它來放棄用戶問題在這裏提出!

這是一個被提出

例外情況是例外:不能刪除用戶 「A_2」,因爲它不存在或 您沒有權限。

+0

+1因爲downvotes – 2011-06-05 13:05:49

+0

現在它的工作,我已經從「drop user」更改爲「drop login」:).....非常感謝很多人;) – Q8Y 2011-06-07 08:38:02

回答

2

我相信你的問題是「你沒有權限」。您的應用程序以與您不同的用戶身份運行。您可以通過給予默認應用程序用戶對數據庫的必要權限(不是一個好主意),或者通過在數據庫中爲您的應用程序創建一個特殊用戶並讓該應用程序以該用戶身份運行來解決此問題。

請注意,如果有人弄清楚如何破解您的應用程序,那麼給您的應用程序(或任何用戶,爲此事)的權限來放棄用戶可能是非常冒險的。而實際上你並沒有包括將數據庫放入應用程序的能力,對嗎?想想看。不要在數據庫中創建用戶,應考慮爲您的應用程序創建一個用戶表。那麼你的用戶不會對你的實際數據庫擁有如此廣泛的權利。

+0

我在管理員模式下運行VS&當我測試和創建數據庫和我使用相同的用戶帳戶創建的用戶...所以,我不認爲模仿的東西是這裏的問題...因爲,我在管理中運行VS也!這是揮手! – Q8Y 2011-06-05 11:09:39

+3

Sql Server具有**登錄**和**用戶**的概念。登錄是用於訪問物理服務器本身的帳戶/綁定。您可以使用Windows/Domain帳戶作爲登錄,或者您可以使用專用的Sql Server登錄。在您的C#應用​​程序中,您使用的是集成安全性,這意味着您使用與您所運行的VS相同的用戶帳戶登錄到Sql Server。我會檢查Sql登錄(Windows帳戶)綁定的Sql用戶是否具有刪除相應數據庫用戶所需的權限。 – 2011-06-05 11:36:57

+0

我有權限在sql管理中刪除用戶和數據庫...並且我在那裏測試它......但正如我所說的,在c#代碼中,不工作...我不能將用戶放在那裏... – Q8Y 2011-06-07 07:53:18

1

DROP USER需要use DataBaseName;

或不同的連接字符串

Data Source=TheServerName;Integrated Security=True;database=DataBaseName 

也就是說,DROP USER不僅使你的數據庫的情況下感。稍後運行時,您將處於master = fail的情況下。

+0

它不工作:( – Q8Y 2011-06-07 07:28:06

+0

'select DB_NAME'呢?同樣的錯誤?與數據庫相同的憑據? – gbn 2011-06-07 07:32:21

+0

爲什麼要使用select DB_NAME ??我需要什麼?需要刪除一個用戶...我不明白你的意思......可以給我解釋一下,如果你請... – Q8Y 2011-06-07 07:50:48

相關問題