powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL Server и почта
14 сообщений из 14, страница 1 из 1
SQL Server и почта
    #32032344
Фотография Евгений Фадеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема чем-то похожа на обсуждавшуюся ниже, "но есть нюанс".
Ситуация: SQL server, JScript (который подключается к серверу и к почте). При запуске скрипта из командной строки (логин под тем же аккаунтом что и SQL server) все работает как часики. При запуске через xp_cmdshell к базе подключается, а вот при подключении к почтовому ящику говорит E_MAPI_LOGONFAILED. Причем если подключаться не через профиль, а с указанием сервера/ящика (последнего параметра MAPI.Session.Logon), то все ОК. Есть какие-нибудь мысли?
...
Рейтинг: 0 / 0
SQL Server и почта
    #32032348
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAPI_E_LOGON_FAILED.

http://support.microsoft.com/default.aspx?scid=kb;en-us;Q315886
...
Рейтинг: 0 / 0
SQL Server и почта
    #32032393
Фотография Евгений Фадеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, конечно, но я это уже раз 10 перечитал...
В том-то и проблема, что стоит, вроде бы, все так как написано, а из под xp_cmdshell работать не хочет...
...
Рейтинг: 0 / 0
SQL Server и почта
    #32032395
Фотография Евгений Фадеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще в догонку: xp_sendmail работает через этот профиль совершенно чудесным образом...
...
Рейтинг: 0 / 0
SQL Server и почта
    #32032397
В одном из недавних топиков предлагалась ссылка на ext.st.proc "spsendmail"+OLE серверная библиотечка к ней
(SMTP) с исходником.Опробовал работает неплохо.И никаких MAPI,хотя я использую и то и другое...
...
Рейтинг: 0 / 0
SQL Server и почта
    #32032413
Кенгуру
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это что ли?
http://www.sql.ru/articles/mssql/02040201AlertServiceForSQLserv.shtml
...
Рейтинг: 0 / 0
SQL Server и почта
    #32032545
Фотография Евгений Фадеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как-то не густо с идеями...
Всякого рода алертеры мне нафиг не нужны, так как мне почту не только отправлять, но и разбирать надо. И смысл вопроса не в том как это еще можно сделать (это я и сам могу придумать), а в том как заставить работать то что есть.
Проблема, очевидно, где-то в настройках безопасности. Только вот где?
На всякий случай еще раз повторюсь:
1. Из cmd при логине под аккаунтом SQL server'а все работает
2. SQL Mail работает (xp_sendmail почту исправно отсылает)
3. При работе напрямую с Сервером\Почтовым ящиком работает
4. При запуске через xp_cmdshell через профиль не работает
5. При работе через xp_AO_blablabla и профиль не работает
...
Рейтинг: 0 / 0
SQL Server и почта
    #32032563
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какой логин/пользователь запускает xp_cmdshell и xp_AO_blablabla ? В какие группы/роли он входит ?
...
Рейтинг: 0 / 0
SQL Server и почта
    #32032674
Фотография Евгений Фадеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В домене есть аккаунт LALALA\sql. Под ним запускается SQL server. Насколько я понимаю xp_cmdshell должен выполняться под этим же аккаунтом. Security интегрированная (на уровне Windows). Но даже при подключении именно под аккаунтом LALALA\sql (интерактивно) все равно не работает.
...
Рейтинг: 0 / 0
SQL Server и почта
    #32032718
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Евгений Фадеев]
я понимаю xp_cmdshell должен выполняться под этим же аккаунтом
[/quot]

Если SQL user, запускающий xp_cmdshell, не входит в роль sysadmin, то в этом случае как раз НЕ будет использоваться аккаунт, под которым стартует SQL Server
...
Рейтинг: 0 / 0
SQL Server и почта
    #32032730
Кенгуру
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А SQL Server Agent под тем же эккаунтом стартует?
Блин, у меня ещё не разу не получалось, что бы хоть одна грабля с SQLMail или xp_***mail по башке стукнула... научите, как это можно сделать?
...
Рейтинг: 0 / 0
SQL Server и почта
    #32032924
Фотография Евгений Фадеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык стукает-то по башке не граблями xp_***mail и не SQL mail (они-то, как раз, отлично работают)... Может я как-то не очень удачно объясняю? Попробую последний раз (если не получится, значит не судьба).

Итак:
Есть некий JScript, который должен подключаться к БД и к почтовому ящику. На выполнение он должен пускаться job'ом (из под SQL Agent'а) на этом же SQL сервере (к которому будет подключаться), для чего используется xp_cmdshell. К почтовому ящику хочется подключаться через профиль (а не напрямую, через указание сервера/ящика). Безопасность интегрированная (на уровне домена). Аккаунт SQL сервера входит в админы домена и в локальные администраторы сервера.

Теперь собственно проблема:
При запуске этого JScript'а из cmd (интерактивный логин под аккаунтом SQL server) все работает на ура. При запуске из Query analyzer'а через xp_cmdshell не видит профиля (совсем точно: пишет MAPI_E_LOGINFAILED, но при работе через имя сервера/ящик все работает). Соответственно при запуске из под SQL Agent'а тоже дулю на воротник.

Не верю что никто с таким не сталкивался... Хоть намек дайте.
...
Рейтинг: 0 / 0
SQL Server и почта
    #32032931
Фотография jimmers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не сложно, опубликуйте JScript...
Попытаемся воспроизвести ситуацию.
...
Рейтинг: 0 / 0
SQL Server и почта
    #32032944
Фотография Евгений Фадеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
// Путь к параметрам базы данных в реестре
var DatabaseParamsPath = "HKEY_CURRENT_USER\\Software\\...\\Settings\\Database\\";

// Путь к параметрам транспорта в реестре
var TransportParamsPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\...\\Settings\\";

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
function Main()
{
  try
  {
    // Создаем объект для работы с реестром
    var objShell = new ActiveXObject( "WScript.Shell" );
    // Выясняем параметры подключения к базе данных
    var ADOConnectionString =  "Provider = SQLOLEDB;"  +
                               "Integrated Security = SSPI;"  +
                               "Data Source = "  + objShell.RegRead(DatabaseParamsPath +  "Server" ) +  ";"  +
                               "Initial Catalog = "  + objShell.RegRead(DatabaseParamsPath +  "Database" ) +  ";" ;
    // Выясняем параметры для работы с почтой
    var ProfileName = objShell.RegRead(TransportParamsPath +  "ProfileName" );
    var MailServer = objShell.RegRead(TransportParamsPath +  "MailServer" );
    var MailBox = objShell.RegRead(TransportParamsPath +  "MailBox" );
    var DoneFolderName = objShell.RegRead(TransportParamsPath +  "DoneTracksFolder" );
  }
  catch (e)
  {
    // Проблемы с получением параметров
    WScript.Quit(- 1 );
  }
  try
  {
    // Создаем подключение к базе данных
    var objConnection = new ActiveXObject( "ADODB.Connection" );
    // Открываем соединение (подключаемся)
    objConnection.Open(ADOConnectionString);
    // Ждем  10  минут (при большом пакете это нормально), причем это именно CommandTimeout, а не ConnectionTimeout
    objConnection.CommandTimeout =  600 ;
  }
  catch (e)
  {
    // Проблемы с подключением к базе
    WScript.Quit(- 2 );
  }
  try
  {
    // Данные лежат в почтовом ящике
    var objMAPISession = new ActiveXObject( "MAPI.Session" );
// ВОТ ТАК ВСЕ РАБОТАЕТ...
      objMAPISession.Logon( "", "  ", false, true, 0 , false, MailServer + "\n" + MailBox); 
// А ТАК НЕТ !
    // Пытаемся подключиться к почтовому ящику (все установки из профиля)
//    objMAPISession.Logon(ProfileName); 
    // Смотрим данные в почте
    HandleIncomingMail(objConnection, objMAPISession, DoneFolderName);
    // Отключаемся (нормальным образом)
    objMAPISession.Logoff();
  }
    catch (e)
    {
      // Закрываем соединение с базой данных
      objConnection.Close();
      // Проблемы с подключением к почтовому ящику
      WScript.Quit(- 4 );
    }
  // Закрываем соединение с базой данных
  objConnection.Close();
  // Баста карапузики - кончилися танцы!
  WScript.Quit( 0 );
}
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL Server и почта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]