Sql 在Visual Studio 2012中使用SSIS出价时出错
我必须从SQL Server 2000将几个表加载到SQL Server 2012中。我听说出价可以做到这一点,我对它相当陌生,希望得到一些帮助。我真的很感激能得到任何帮助 我已经安装了一个帮助程序。已经并使用了下面的代码。但它给了我错误的陈述 错误1187非法语法。应为有效的起始名称字符。 错误1188字符,十六进制值0x23在XML名称中是非法的。 错误1189 XML名称开头的字符“@”,十六进制值0x40非法Sql 在Visual Studio 2012中使用SSIS出价时出错,sql,sql-server,visual-studio-2012,ssis,biml,Sql,Sql Server,Visual Studio 2012,Ssis,Biml,我必须从SQL Server 2000将几个表加载到SQL Server 2012中。我听说出价可以做到这一点,我对它相当陌生,希望得到一些帮助。我真的很感激能得到任何帮助 我已经安装了一个帮助程序。已经并使用了下面的代码。但它给了我错误的陈述 错误1187非法语法。应为有效的起始名称字符。 错误1188字符,十六进制值0x23在XML名称中是非法的。 错误1189 XML名称开头的字符“@”,十六进制值0x40非法 这是在VisualStudio中尝试大量使用BimlScript的令人恼火的事
这是在VisualStudio中尝试大量使用BimlScript的令人恼火的事情。编辑器知道它在做XML标记,所以组成BimlScript的所有增强都是错误的,所以它将突出显示它们,并放置愤怒的红色曲线,让您怀疑这里是否真的有有效的代码 在我的错误列表中,我看到了与您看到的相同的内容,但这是您可以忽略VisualStudio内置错误检查器的少数几次之一 相反,测试代码是否正确的真正方法是右键单击.biml文件并选择Check biml for errors 你应该有这样的对话 如果是这样,请单击生成SSIS包,然后获取一些磁带,将您的思想重新连接到您的头脑中,因为它刚刚被吹走 操作说明
请注意,提供的代码将把所有数据从源复制到目标。但是,您还指定这将是一个每月一次的操作,因此您可能希望通过执行SQL任务添加一个截断步骤,或者考虑一个或两个查找转换,以确定新数据与现有数据的对比以及更改检测 上面的代码是由-@billinkcIf提供的。这是一个一次性操作,我只会使用SSMS中内置的导入/导出向导。不,这是一个每月一次的操作。如果你真的喜欢利用biml的.NET功能,那么你可能会对Mist的付费产品感兴趣。它的设计目的是混合XML和.NET脚本块,并提供使用转换器的能力,将biml转换为11。感谢代码。我必须从一个我权限有限的外部服务器复制数据。因此,由于权限问题,任务失败。我会纠正它们,然后再试一次。是的,在加载表之前,我必须执行任务清空表。
<#@ template language="C#" hostspecific="true" #>
<#@ import namespace="System.Data" #>
<#@ import namespace="System.Data.SqlClient" #>
<#@ import namespace="System.IO" #>
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<!--
<#
string connectionStringSource = @"Server=xxxxx;Initial Catalog=xxxx;Integrated Security=SSPI;Provider=sqloledb";
string connectionStringDestination = @"Server=xxxxxx;Initial Catalog=xxxxxxx;Integrated Security=SSPI;Provider=SQLNCLI11.1";
string SrcTableQuery = @"
SELECT
SCHEMA_NAME(t.schema_id) AS schemaName
, T.name AS tableName
FROM
sys.tables AS T
WHERE
T.is_ms_shipped = 0
AND T.name <> 'sysdiagrams';
";
DataTable dt = null;
dt = ExternalDataAccess.GetDataTable(connectionStringSource, SrcTableQuery);
#>
-->
<Connections>
<OleDbConnection
Name="SRC"
CreateInProject="false"
ConnectionString="<#=connectionStringSource#>"
RetainSameConnection="false">
</OleDbConnection>
<OleDbConnection
Name="DST"
CreateInProject="false"
ConnectionString="<#=connectionStringDestination#>"
RetainSameConnection="false">
</OleDbConnection>
</Connections>
<Packages>
<# foreach (DataRow dr in dt.Rows) { #>
<Package ConstraintMode="Linear"
Name="<#=dr[1].ToString()#>"
>
<Variables>
<Variable Name="SchemaName" DataType="String"><#=dr[0].ToString()#></Variable>
<Variable Name="TableName" DataType="String"><#=dr[1].ToString()#></Variable>
<Variable Name="QualifiedTableSchema"
DataType="String"
EvaluateAsExpression="true">"[" + @[User::SchemaName] + "].[" + @[User::TableName] + "]"</Variable>
</Variables>
<Tasks>
<Dataflow
Name="DFT"
>
<Transformations>
<OleDbSource
Name="OLE_SRC <#=dr[0].ToString()#>_<#=dr[1].ToString()#>"
ConnectionName="SRC"
>
<TableFromVariableInput VariableName="User.QualifiedTableSchema"/>
</OleDbSource>
<OleDbDestination
Name="OLE_DST <#=dr[0].ToString()#>_<#=dr[1].ToString()#>"
ConnectionName="DST"
KeepIdentity="true"
TableLock="true"
UseFastLoadIfAvailable="true"
KeepNulls="true"
>
<TableFromVariableOutput VariableName="User.QualifiedTableSchema" />
</OleDbDestination>
</Transformations>
</Dataflow>
</Tasks>
</Package>
<# } #>
</Packages>
</Biml>