gpt4 book ai didi

odbc - BIML GetDatabaseSchema 不适用于 ODBC 进度源数据库

转载 作者:行者123 更新时间:2023-12-02 02:04:27 33 4
gpt4 key购买 nike

我正在尝试使用 BIML 生成自动暂存区域。源数据库为Progress,通过ODBC连接。

我正在使用以下演练: https://www.cathrinewilhelmsen.net/2015/07/12/biml-extension-methods-getdatabaseschema/

http://bimlscript.com/walkthrough/Details/3121

1-2-Environment.biml:

<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<#@ template tier="0" #>

<Connections>
<OleDbConnection Name="Source" ConnectionString="Provider=MSDASQL;DSN=XXX;UID=XXX;PWD=XXX;" />
<OdbcConnection Name="Source2" ConnectionString="DSN=XXX;UID=XXX;PWD=XXX;" />
<OleDbConnection Name="Target" ConnectionString="Provider=SQLOLEDB;Server=localhost;Initial Catalog=DWH_Staging;Integrated Security=SSPI;" />
</Connections>
<Databases>
<Database Name="DWH_Staging" ConnectionName="Target" />
<Database Name="pa" ConnectionName="Source" />
</Databases>
<Schemas>
<Schema Name="test" DatabaseName="DWH_Staging" />
<Schema Name="pub" DatabaseName="pa" />
</Schemas>

Source2是普通的ODBC连接,Source是使用OLEDB for ODBC进行的测试。

1-2-CreateTableMetadata.biml

<#@ import namespace="System.Data" #>
<#@ import namespace="Varigence.Biml.CoreLowerer.SchemaManagement" #>

<#
var sourceConnection = RootNode.DbConnections["Source"];
var importResult = sourceConnection.GetDatabaseSchema();

#>
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Tables>
<# foreach (var table in importResult.TableNodes) { #>
<Table Name="Staging_<#=table.Schema.Name#>_<#=table.Name#>" SchemaName="DWH_Staging.test">
<Columns>
<# foreach (var column in table.Columns) { #>
<# if (column.DataType == System.Data.DbType.AnsiString) { #>
<Column Name="<#=column.Name#>" DataType="String" Length="<#=column.Length#>">
<Annotations>
<Annotation AnnotationType="Tag" Tag="ConvertToUnicode">yes</Annotation>
</Annotations>
</Column>
<# } else { #>
<#=column.GetBiml()#>
<# } #>
<# } #>
</Columns>
<Annotations>
<Annotation AnnotationType="Tag" Tag="SourceSchemaQualifiedName"><#=table.SchemaQualifiedName#></Annotation>
</Annotations>
</Table>
<# } #>
</Tables>
</Biml>

1-x-DeployTargetTables.biml:

<#@ template tier="2" #>
<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Packages>
<Package Name="MasterTableDeploy" ConstraintMode="Parallel">
<Tasks>
<# foreach (var table in RootNode.Tables) { #>
<ExecuteSQL Name="Create <#=table.Name#>" ConnectionName="Target">
<DirectInput><#=table.GetDropAndCreateDdl()#></DirectInput>
</ExecuteSQL>
<# } #>
</Tasks>
</Package>
</Packages>
</Biml>

问题是,生成的 MasterTableDeploy.dtsx 包不包含任何内容,它只是空的。作为测试,我使用我们自己的 SQL Server 作为源,效果非常好。使用 Progress ODBC 源不会执行任何操作,也不会出现错误消息。

有什么想法吗?

最佳答案

我在尝试使用 ODBC 连接连接到 Db2 数据库时遇到了类似的问题。我最终反编译了 BimlEngine.dll,发现该功能并未针对 ODBC 连接实现。抱歉

关于odbc - BIML GetDatabaseSchema 不适用于 ODBC 进度源数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41567894/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com