--The BIML code that can be placed inside a BIML file.
<#
string pRepServerName = "localhost";
string pRepDatabaseName = "Repository";
string pRepProvider = "SQLNCLI11.1;Integrated Security=SSPI";
string pRepSchema = "rep";
string pSourceServerName = "localhost";
string pSourceDBName = "AdventureWorks2014";
string pSourceProvider = "SQLNCLI11.1;Integrated Security=SSPI";
string pSourceSchema = "Sales";
string pTargetServerName = "localhost";
string pTargetDBName = "Staging";
string pTargetProvider = "SQLNCLI11.1;Integrated Security=SSPI";
string pTargetSchema = "Sales";
#>
<#
string pLayer = "Staging";
#>
<#
string csRepository = String.Format("Data Source={0};Initial Catalog={1};Provider={2};Auto Translate=False;"
,pRepServerName, pRepDatabaseName, pRepProvider);
string csSource = String.Format("Data Source={0};Initial Catalog={1};Provider={2};Auto Translate=False;"
,pSourceServerName, pSourceDBName, pSourceProvider);
string csTarget = String.Format("Data Source={0};Initial Catalog={1};Provider={2};Auto Translate=False;"
,pTargetServerName, pTargetDBName, pTargetProvider);
#>
<
connections
>
<
oledbconnection
connectionstring="<#=csSource #>" name="OLEDB Source"></
oledbconnection
>
<
oledbconnection
connectionstring="<#=csTarget #>" name="OLEDB Target"></
oledbconnection
>
</
connections
>
<
packages
>
<
package
constraintmode
=
"Parallel"
name
=
"SSIS STG Load STG Tables SQL"
protectionlevel
=
"EncryptSensitiveWithUserKey"
>
<
tasks
>
<#
StringBuilder sMETAGetTableName = new System.Text.StringBuilder();
sMETAGetTableName.Append("SELECT ");
sMETAGetTableName.Append(" TableName ");
sMETAGetTableName.Append(" , SchemaName ");
sMETAGetTableName.Append(" , WhereClause ");
sMETAGetTableName.Append("FROM ");
sMETAGetTableName.Append(pRepSchema);
sMETAGetTableName.Append(".TableList AS TAB ");
sMETAGetTableName.Append("INNER JOIN ");
sMETAGetTableName.Append(pRepSchema);
sMETAGetTableName.Append(".Layer AS LYR ");
sMETAGetTableName.Append(" ON ( TAB.LayerId = LYR.LayerId) ");
sMETAGetTableName.Append("WHERE 1 = 1 ");
sMETAGetTableName.Append(" AND TAB.ActiveInd = 1 ");
sMETAGetTableName.Append(" AND LYR.LayerName = '");
sMETAGetTableName.Append(pLayer);
sMETAGetTableName.Append("' ");
sMETAGetTableName.Append("ORDER BY ");
sMETAGetTableName.Append(" TAB.LoadOrderNr");
DataTable tblMETATableNames = ExternalDataAccess.GetDataTable(csRepository, sMETAGetTableName.ToString());
foreach (DataRow METATableNameRow in tblMETATableNames.Rows) {
#>
<
container
name="SEQC - Load <#=pTargetSchema#> <#=METATableNameRow[" schemaname=""> <#=METATableNameRow["TableName"] #>" ConstraintMode="Linear">
<
tasks
>
<
executesql
name="SQL - TRUNCATE TARGET TABLE <#=pTargetSchema #> <#=METATableNameRow[" tablename="">"
ResultSet="None"
ConnectionName="OLEDB Target">
<
directinput
>TRUNCATE TABLE <#=pTargetSchema #>.<#=METATableNameRow["TableName"] #>
</
directinput
>
</
executesql
>
<
dataflow
name="DFT - Load <#=pTargetSchema#> <#=METATableNameRow[" tablename="">">
<
transformations
>
<
oledbsource
name
=
"OLESRC - Source <#=METATableNameRow["
tablename
=
""
>"
ConnectionName="OLEDB Source"
ValidateExternalMetadata="false">
<
directinput
>SELECT
CAST(1 AS INTEGER) AS DUMMY_COLUMN
<# StringBuilder sGETSelectColumn = new System.Text.StringBuilder();
sGETSelectColumn.Append("SELECT " );
sGETSelectColumn.Append(" col.name AS column_name " );
sGETSelectColumn.Append("FROM sys.columns AS col " );
sGETSelectColumn.Append("INNER JOIN sys.objects AS obj " );
sGETSelectColumn.Append(" ON(col.object_id = obj.object_id) " );
sGETSelectColumn.Append("INNER JOIN sys.types AS typ " );
sGETSelectColumn.Append(" ON(col.user_type_id = typ.user_type_id)" );
sGETSelectColumn.Append("WHERE 1 = 1 " );
sGETSelectColumn.Append(" AND obj.name = '"+ METATableNameRow[0].ToString() +"'");
DataTable tblSelectColumn = ExternalDataAccess.GetDataTable(csSource, sGETSelectColumn.ToString());
foreach (DataRow SelectColumn in tblSelectColumn.Rows) {
#>
, [<#=SelectColumn["COLUMN_NAME"] #>]
<# } #>
FROM <#=METATableNameRow["SchemaName"] #>.<#=METATableNameRow["TableName"] #>
WHERE <#=METATableNameRow["WhereClause"] #>
</
directinput
>
</
oledbsource
>
<
oledbdestination
name="OLE DEST - <#=pTargetSchema#> <#=METATableNameRow[" tablename="">"
ConnectionName="OLEDB Target">
<
externaltableoutput
table="<#=pTargetSchema#>.<#=METATableNameRow[" tablename="">" />
</
externaltableoutput
></
oledbdestination
>
</
transformations
>
</
dataflow
>
</
tasks
>
</
container
>
<# } #>
</
tasks
>
</
package
>
</
packages
>
</
biml
>
<#@ template language="C#" hostspecific="true"#>
<#@ import namespace="System.Data"#>
<#@ import namespace="System.Data.SqlClient"#>
<#@ import namespace="System.Text"#>