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

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

Если SQL user, запускающий xp_cmdshell, не входит в роль sysadmin, то в этом случае как раз НЕ будет использоваться аккаунт, под которым стартует SQL Server
...
Рейтинг: 0 / 0
14.06.2002, 01:03:12
    #32032730
Кенгуру
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Server и почта
А SQL Server Agent под тем же эккаунтом стартует?
Блин, у меня ещё не разу не получалось, что бы хоть одна грабля с SQLMail или xp_***mail по башке стукнула... научите, как это можно сделать?
...
Рейтинг: 0 / 0
17.06.2002, 13:43:39
    #32032924
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Server и почта
Дык стукает-то по башке не граблями 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
17.06.2002, 14:08:20
    #32032931
jimmers
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Server и почта
Если не сложно, опубликуйте JScript...
Попытаемся воспроизвести ситуацию.
...
Рейтинг: 0 / 0
17.06.2002, 15:50:47
    #32032944
Евгений Фадеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQL Server и почта
// Путь к параметрам базы данных в реестре
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
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL Server и почта / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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