提供的连接必须是AstDbConnectionNode类型

时间:2017-02-14 15:07:16

标签: ssis biml

我一直在研究一个简单的BIML解决方案,开始学习如何使用它。我不断收到错误消息:

  

对于此方法,提供的连接必须是AstDbConnectionNode类型。   at Varigence.Biml.Extensions.ExternalDataAccess.GetDatabaseSchema in:line 0

我一直在寻找和尝试不同的解决方案,但尚未找到答案。所以,我转向这里的每个人。我需要另外一套眼睛,这样我才能弄明白我做错了什么。

我的第一个BIML文件已将我的连接设置为本地盒子上的全球导入程序。

Distinct()

第二个BIML文件是抛出错误

<Biml xmlns="http://schemas.varigence.com/biml.xsd">

<#@ template language = "C#" tier="0" #>

<Connections>
<OleDbConnection
    Name="src" 
    ConnectionString="Data Source=localhost\SQL16;Initial Catalog=WorldWideImporters;Provider=SQLNCLI11.1;Integrated Security=SSPI;" 
    CreateInProject = "true">
</OleDbConnection>
</Connections>

<Databases>
    <Database Name="src" ConnectionName = "src" />
</Databases>

1 个答案:

答案 0 :(得分:1)

那个误导性的错误表面来自对GetDatabaseSchema的调用我说这是误导,因为根问题是srcDB为空。请在第二个Biml文件中使用此代码自行查看。

<#@ import namespace="System.Windows.Forms" #>
<#@ assembly name= "C:\Windows\Microsoft.NET\Framework\v4.0.30319\System.Windows.Forms.dll" #>
<# var srcDB = RootNode.OleDbConnections["ConnectionDoesNotExist"]; #>
<#
    if (srcDB == null)
    {
        MessageBox.Show("It's null");
    }
    else
    {
        MessageBox.Show("It's not null - {0}", srcDB.Name);
    }
#>

根问题

您正在访问不存在的连接集合中的对象 - 可能是因为在您的分层正确时,您需要在构建时“包含”所有文件。

你如何解决这个问题?

如果您正在使用BimlExpressBIDS Helper,则只需在解决方案菜单中选择file1.biml和file2.biml,然后右键单击以生成包。

如果您使用的是Mist/BimlStudio,那么我只需右键单击file1.biml并将其更改为转换为Live BimlScript。