SSIS выполняется успешно, но, похоже, не выполняет часть задачи сценария.C#

Место общения программистов C#
Ответить
Anonymous
 SSIS выполняется успешно, но, похоже, не выполняет часть задачи сценария.

Сообщение Anonymous »

У меня есть пакет SSIS, который запускает запрос SQL и экспортирует его в файл csv с помощью задачи потока данных. После создания CSV у меня есть «Задача сценария» для подключения к SMTP-серверу и отправки CSV-файла в качестве вложения.

На моем локальном компьютере пакет работает нормально, но когда я загружаю его в SQL Server Management Studio на сервере, он работает не так, как ожидалось. SQL Server MS сообщает, что пакет выполнен успешно, и файл csv создан в ожидаемом месте. Однако «Задача сценария», похоже, вообще не выполняется. Я включил в сценарий C# несколько операторов для записи в файл в целях отладки: один для блока исключений try/catch и несколько других для нормального выполнения.

Код: Выделить всё

    public void Main()
{
string sSubject = "Weekly PAX Test";
string sBody = "Test Message";
int iPriority = 2;

if (SendMail(sSubject, sBody, iPriority))
{
Dts.TaskResult = (int)ScriptResults.Success;
}
else
{
//Fails the Task
Dts.TaskResult = (int)ScriptResults.Failure;
}
}

public bool SendMail(string sSubject, string sMessage, int iPriority)
{
try
{
string sEmailServer = Dts.Variables["User::sEmailServer"].Value.ToString();
string sEmailPort = Dts.Variables["User::sEmailPort"].Value.ToString();
string sEmailUser = Dts.Variables["User::sEmailUser"].Value.ToString();
string sEmailPassword = Dts.Variables["User::sEmailPassword"].Value.ToString();
string sEmailSendTo = Dts.Variables["User::sEmailSendTo"].Value.ToString();
string sEmailSendFrom = Dts.Variables["User::sEmailSendFrom"].Value.ToString();
string sEmailSendFromName = Dts.Variables["User::sEmailSendFromName"].Value.ToString();
string sAttachmentPath = Dts.Variables["User::sAttachmentPath"].Value.ToString();

SmtpClient smtpClient = new SmtpClient();
MailMessage message = new MailMessage();

MailAddress fromAddress = new MailAddress(sEmailSendFrom, sEmailSendFromName);

//You can have multiple emails separated by ;
string[] sEmailTo = Regex.Split(sEmailSendTo, ";");
int sEmailServerSMTP = int.Parse(sEmailPort);

smtpClient.Host = sEmailServer;
smtpClient.Port = sEmailServerSMTP;

System.Net.NetworkCredential myCredentials =
new System.Net.NetworkCredential(sEmailUser, sEmailPassword);
smtpClient.Credentials = myCredentials;

message.From = fromAddress;

if (sEmailTo != null)
{
for (int i = 0; i < sEmailTo.Length; ++i)
{
if (sEmailTo[i] != null && sEmailTo[i] != "")
{
message.To.Add(sEmailTo[i]);
}
}
}

switch (iPriority)
{
case 1:
message.Priority = MailPriority.High;
break;
case 3:
message.Priority = MailPriority.Low;
break;
default:
message.Priority = MailPriority.Normal;
break;
}

//You can enable this for Attachments.
//sAttachmentPath is a string variable for the file path.

Attachment myAttachment = new Attachment(sAttachmentPath);
message.Attachments.Add(myAttachment);

message.Subject = sSubject;
message.IsBodyHtml = true;
message.Body = sMessage;

smtpClient.Send(message);
System.IO.File.WriteAllText("C:\\Users\\SQLCLservice\\SQLServerAgent\\file.txt", "Test");
return true;
}
catch (Exception ex)
{
System.IO.File.WriteAllText("C:\\Users\\SQLCLservice\\SQLServerAgent\\ex.txt", ex.ToString());
return false;

}
}
Электронное письмо не отправляется — файлы не записываются. Как будто задача вообще не выполняется, несмотря на «Успешное выполнение».

Я заметил, что служба SQL Server Integration Services 11.0 работает на моем локальном компьютере, но не на сервере. Однако если я отключу эту службу на своем локальном компьютере, задача все равно будет выполняться.

Я что-то еще упустил? Я новичок в SQL Server и работаю над этой проблемой уже несколько дней.

РЕДАКТИРОВАТЬ: я использую SQL Server 2012

EDIT2: Я также должен упомянуть, что я пробовал сохранить пакет с 64-битной средой выполнения, установленной на false, и запустить его в 32-битном режиме через агент SQL Server.

Подробнее здесь: https://stackoverflow.com/questions/312 ... script-tas
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»