我正在使用SQL Server的ASP.NET(VB.NET),並希望允許用戶從Web窗體創建服務器登錄和數據庫用戶。從用戶輸入創建數據庫登錄和用戶
我已通過執行創建登錄和用戶命令獲得這樣的工作:
Dim cmd As New OleDb.OleDbCommand(
"CREATE LOGIN [" & login & "] FROM WINDOWS WITH DEFAULT_DATABASE = Db; " & _
"CREATE USER " & username & " FOR LOGIN [" & login & "]; ",
connection)
cmd.ExecuteNonQuery()
的login
和username
是,我消毒的用戶輸入(如最好我可以),並在CommandText
直接插入。雖然這是行得通的,但我不覺得我應該這樣做。
,我希望類似的參數化查詢的東西,就像這樣:
Dim cmd As New OleDb.OleDbCommand(
"CREATE LOGIN [@login] FROM WINDOWS WITH DEFAULT_DATABASE = Db; " & _
"CREATE USER @username FOR LOGIN [@login]; ",
connection)
cmd.Parameters.AddWithValue("@login", login)
cmd.Parameters.AddWithValue("@username", username)
cmd.ExecuteNonQuery()
但是,這並不工作,因爲CREATE LOGIN
和CREATE USER
似乎並沒有允許參數值,由podiluska提到:
「@username」附近的語法不正確。
有沒有更好的方式從用戶輸入創建登錄和用戶?
@Jupaol:OP想要創建數據庫[登錄](http://msdn.microsoft.com/en -us/library/ms189751.aspx),而不是成員用戶。 – 2012-07-24 19:32:22
存儲過程如何? – 2012-07-24 19:35:13
@WaqarJanjua起初我沒有考慮過它,因爲'sp_addlogin'已被棄用,並且參數對我無效。感謝您提及它 - 您的評論讓我找到[this](http://stackoverflow.com/questions/837358/sql-create-logon-cant-use-parameter-as-username)。 – Zhihao 2012-07-24 21:54:18