Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Не работает хранимая процедура

1.8K
19 февраля 2009 года
rSolanov
106 / / 04.05.2005
Есть вопросик: не работает хранимая процедура, причем так, что это зависит от параметров строки соединения. Видимо она просто не запускается.
Если для проверки подлинности используются текущие реквизиты учетной записи Windows (Integrated Security = true), то:
 
Код:
string ConnectionString = "Data Source=RSOLANOV\\SQL_SRV;Initial Catalog=MBASE;Integrated Security=True";
SqlConnection Connection = new SqlConnection(ConnectionString)
Connection.Open();
SqlCommand Command = new SqlCommand();
Command.Connection = Connection;
Command.CommandType = System.Data.CommandType.StoredProcedure;
Command.CommandText = "dbo.USP_CashLimits_Insert";
Command.ExecuteNonQuery();
Connection.Close();


Все работает.
Если же написать в командной строке что Integrated Security=False и указать User ID с паролем:
Код:
string ConnectionString = "Data Source=RSOLANOV\\SQL_SRV;Initial Catalog=MBASE;Integrated Security=False;";
SqlConnectionStringBuilder SB = new SqlConnectionStringBuilder(ConnectionString);
SB.UserID = "RSolanov";
SB.Password = "1234567";
SqlConnection Connection = new SqlConnection(SB.ConnectionString);
Connection.Open();
SqlCommand Command = new SqlCommand();
Command.Connection = Connection;
Command.CommandType = System.Data.CommandType.StoredProcedure;
Command.CommandText = "dbo.USP_CashLimits_Insert";
Command.ExecuteNonQuery();
Connection.Close();


То в этом случае появляется такая же ошибка "Доступ к удаленному серверу запрещен из-за отсутствия сопоставления с именем входа".
Что же может не хватать для входа под заданным логином?
5
19 февраля 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: rSolanov
в этом случае появляется такая же ошибка "Доступ к удаленному серверу запрещен из-за отсутствия сопоставления с именем входа".
Что же может не хватать для входа под заданным логином?


Настройка SQL сервера скорее всего такова, что отключена SQL-аутентификация и доступ к SQL-серверу осуществляется посредством системы безопасности Windows.

1.8K
19 февраля 2009 года
rSolanov
106 / / 04.05.2005
Цитата: hardcase
Настройка SQL сервера скорее всего такова, что отключена SQL-аутентификация и доступ к SQL-серверу осуществляется посредством системы безопасности Windows.


На самом деле логин "RSolanov" - SQL SERVER Authentication. Пользователь заходит в Windows под своей учетной записью и запускает программу с этим кодом.
Разрешение на запуск хранимой процедуры у логина "RSolanov" имеется.

14
19 февраля 2009 года
Phodopus
3.3K / / 19.06.2008
Я так понял что когда подключаешься с Integrated Security=False поток/процесс на сервере, который должен выполнить SP имперсонируется под специальным пользователем имеющим очень мало привелегий. Это догадка.
Должна быть настройка типа "используя указанный контекст безопасности"...
1.8K
19 февраля 2009 года
rSolanov
106 / / 04.05.2005
Цитата: Phodopus
Я так понял что когда подключаешься с Integrated Security=False поток/процесс на сервере, который должен выполнить SP имперсонируется под специальным пользователем имеющим очень мало привелегий. Это догадка.
Должна быть настройка типа "используя указанный контекст безопасности"...


Вы совершенно правы.
По строке соединения видно, что подключение идет с указанием того, что при проверки подлинности используются не текущие реквизиты учетной записи Windows, а самого SQL-SERVER'а. Это исходит из того, что в строке соединения явно указываются Integrated Security=False, а также логин и пароль. Теперь далее. По-умолчанию всем логинам устанавливается роль public. До кучи я еще задал Permission на execute хранимой процедуры логину "RSolanov".
А теперь вдумаемся во фразу: "Доступ к удаленному серверу запрещен из-за отсутствия сопоставления с именем входа". И действительно, я просто забыл о том что эта хранимая процедура обращается к данным из удаленных серверов! А для получения таких данных SQL-SERVER говорит что You must be a member of the sysadmin role to perform this operation. То есть логину "RSolanov" необходимо было выставить роль sysadmin, что я и сделал. После этого все заработало. Всем огромное спасибо за участие и за помощь!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог