Tuesday, November 27, 2018

SSIS SQL Server Integration Services - Using variable in SSIS Send Email Task, Send email to dynamic address

1. Create variables for FromLine, ToLine, Subject and Source

f.e EmailFrom, Email, EmailSource, EmailSubject


2. Fill variables (you can do it dynamically at script task)
3. Fill send email task as below

4. Fill expression tab as below




SAP ABAP: Get email from table with username

1. Create email variable at data section

DATAL_SMTP_ADDR type adr6-SMTP_ADDR.


2. Get username from ADR6 and USR21 tables

select ADR6~SMTP_ADDR INTO L_SMTP_ADDR FROM
  USR21 LEFT OUTER JOIN ADR6 On
   USR21~addrnumber =  ADR6~addrnumber
                and USR21~persnumber =  ADR6~persnumber
  WHERE USR21~BNAME sy-uname.
  ENDSELECT.

Monday, November 26, 2018

SSIS SQL Server Integration Services - execute query based on flat file csv datasource

SSIS SQL Server Integration Services - execute oracle query based on flat file csv datasource


1. Create variable to store file path

f.e. 

FilePath with value C:\file.txt
File.txt will be ";" separeted flat file. I will use second column of file with material numbers.

2. Create variable to store query you wish to execute

f.e Query which will later be referenced as User::Query

3. Create script task to read file contents and prepare query

4. Create Execute SQL Task to run query created inside previous script task, using variable User::Query



// Script

public void Main() { // TODO: Add your code here //get file path string FilePath = Dts.Variables["User::FilePath"].Value.ToString(); string temp; string email = "przemyslaw.wawrzyczek@valeo.com"; string content = ""; int i = 0; bool contentExists = false ; // Open file reader StreamReader sr = new StreamReader(FilePath); // Loop while end of file, read line while ((temp = sr.ReadLine()) != null) { // Split into columns string[] columns = temp.Split(';'); // Skip header if (i > 0) { //Get distinct values if (!content.Contains(columns[1])) { // add value content += "'" + columns[1] + "',"; email = columns[12].ToString(); contentExists = true; } } else { // open bracket content = "("; } i++; } //remove last coma content = content.TrimEnd(','); //close bracket content += ")"; if (contentExists) { // create query and pass it into ssis variable Dts.Variables["User::Query"].Value = "BEGIN DELETE FROM TABLE WHERE material_number in " + content + "; COMMIT; END;"; Dts.Variables["User::Email"].Value = email; content = content.Replace("'", ""); Dts.Variables["User::EmailSubject"].Value += " " + content; Dts.TaskResult = (int)ScriptResults.Success; } else { Dts.Variables["User::Query"].Value = ""; Dts.TaskResult = (int)ScriptResults.Failure; } }

Power Shell: Remove files, subfolders older than X days

Power Shell: Remove files, subfolders older than X days


1. Power shell script to remove files and subfolders older than 30 days from directory "E:\directory\

Get-ChildItem -path "E:\directory\" -recurse | where-object {$_.LastWriteTime -lt (Get-Date).AddDays(-30)} | Remove-Item -Recurse -Force

2. Schedule script: E:\RemoveFiles.ps1

Action: Start a program
Program: PowerShell.exe
Add arguments (optiona): -ExecutionPolicy Bypass E:\RemoveFiles.ps1

ORACLE RMAN: Delete archivelogs older than X hours batch

ORACLE RMAN: Delete archive logs older than X hours

Oracle, RMAN


1. Create .bat script to start rman script

rman @C:\RMAN_delete.rman


2. Create rman script at location from previous script. Script is deleting archive logs older than hours without prompting.

CONNECT TARGET SYS/SysPassword
RUN
{
DELETE NOPROMPT ARCHIVELOG UNTIL TIME 'sysdate-12/24';
}
EXIT;


3. Schedule .bat script at windows scheduler

4. Additionally setup retention policy at RMAN as below


SAP PU: Delete purchase requisition

SAP PU: Delete purchase requisition

SAP PU ME52


Single requisition

1. Go into ME52
2. Select item and press delete


3. Check deletion at transaction MD04 or SE16N (table: EBAN, deletion indicator not equal to 'X' expample below)



Tuesday, November 20, 2018

SSIS SQL Server Integration Services - convert string to number, replace special characters

SSIS SQL Server Integration Services - convert string to number, replace special characters

Type conversion

    1. Use data conversion component 
    2. Select desired type from data conversion component 

Replace special characters

1. Use delivered column component


2. Use formula expression to replace special charaters f.e REPLACE( [Target qty] , "-","0" )  replaces "-" with 0





SSIS SQL Server Integration Services - limit number of rows

SSIS SQL Server Integration Services - limit number of rows

SSIS Microsoft Sql server

1. Use Row Sampling component from toolbox

2. Double click at Row Sampling component to set number of rows

 3. Set Sampling selected output to redirect selected number of rows

4. Set Sampling unselected output to redirect all rows available




Problem with database open ORA-19804, ORA-19809, ORA-03113

1. Try to login to database with SYS AS SYSDBA user. If the instance is idle, run the startup command. 2. If ORA-03113 occured, check the la...