我正在使用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