SQL Server CREATE USER с параметрами (VB.net) - PullRequest
0 голосов
/ 16 октября 2010

Я пытаюсь выполнить CREATE USER с заданным именем пользователя (через параметр sql)

exec sp_executesql N'CREATE USER @LoginName 
                        FOR LOGIN @LoginName;',
                   N'@LoginName varchar(5)', @LoginName='myuser'

Вот код, который генерирует выше:

Dim myCommand As SqlCommand = New SqlCommand("CREATE USER @LoginName 
                                                 FOR LOGIN @LoginName;", 
                                             ClassDatabaseConnection.CustomInstance)
myCommand.CommandType = CommandType.Text
myCommand.Parameters.Add("@LoginName", SqlDbType.VarChar).Value = LoginName
myCommand.ExecuteScalar()

Я получаю и ошибка:

Incorrect syntax near '@LoginName'.

Я думаю, это связано с тем, что параметры, передаваемые как VarChar, вызывают MyUser, а не MyUser

Могу ли я не делать это с параметрами sql?

Ответы [ 2 ]

2 голосов
/ 16 октября 2010

Нельзя использовать параметры с оператором Create User.Поскольку вы уже в VB, попробуйте соединить утверждение.

Dim myCommand As SqlCommand = New SqlCommand("CREATE USER " + LoginName +
                                                " FOR LOGIN " + LoginName + ";", 
                                             ClassDatabaseConnection.CustomInstance)
myCommand.CommandType = CommandType.Text
myCommand.ExecuteScalar()
1 голос
/ 17 октября 2010

Как уже отмечалось, вы не можете параметризовать CREATE LOGIN.

Чтобы избежать SQL-инъекций (также, как отмечено), рассмотрите возможность использования SMO Login.Create

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...