2012-07-02 2 views
2

Мне нужно программно заблокировать вход в SQL-сервер. Цель состоит в том, чтобы эмулировать автоматическую функцию в SQL, которая блокирует пользователя, который делает несколько попыток подключения с плохим паролем.Заблокировать SQL-запрос программно

Я могу легко разблокировать логин, но мне также нужно заблокировать его.

Я пробовал цикл через 20 раз с .NET sqlConnection, который содержал неверный пароль, и я получаю очень противоречивые результаты.

+0

Вы можете отключить вход с помощью 'ALTER LOGIN имя пользователя DISABLE'. Фактическое блокирование, по-видимому, невозможно сделать программно, см. Http://stackoverflow.com/questions/2605814/locking-user-account-created-under-windows-authentication-in-sql-server – driis

+0

Какое различие между заблокированной учетной записью и отключен аккаунт? – aquinas

ответ

1

SqlConnetion Использование клиента:

using (var con = new SqlConnection(MyConnectionString)) 
{ 
    con.Open(); 
    var cmd = new SqlCommand("ALTER LOGIN [Username] DISABLE", con); 
    cmd.ExecuteNonQuery(); 
} 

В качестве альтернативы вы можете запретить пользователю разрешения на подключение (до тех пор, пока пользователь не является членом sysadmin роли). Обратите внимание, что для того, чтобы сделать это, необходимо подключиться к базе данных master, поскольку это разрешение уровня сервера:

using (var con = new SqlConnection(MyConnectionStringToMasterDatabase)) 
{ 
    con.Open(); 
    var cmd = new SqlCommand("DENY CONNECT SQL TO [Username]", con); 
    cmd.ExecuteNonQuery(); 
} 
+0

Спасибо за ответ. К сожалению, ни одна из них, похоже, не блокирует учетную запись. Что беспокоит меня, так это то, что я не могу изобразить неверные попытки входа в систему, чтобы вызвать блокировку. ~ У До числа> 20 номер + = 1 NewSqlConn = Ничто NewSqlConn = New SqlConnection NewSqlConn.ConnectionString = sbConnString.ToString() NewSqlConn = New SqlConnection Попробуйте NewSqlConn.Open() Поймайте End Попробуйте Loop ~ –

+0

Вы уверены, что логин, который вы пытаетесь заблокировать, является фактическим именем входа в SQL Server (а не только пользователем, хранящимся в базе данных и поддерживаемым приложением)? –

+0

Да, я создал базу данных и логин. –

Смежные вопросы