有没有办法在u-sql数据库项目中声明依赖关系?

时间:2019-08-06 07:11:07

标签: u-sql

简介和问题描述

我们正在开发Datalake Analytics解决方案。我们一直在使用常规的U-SQL项目,这很好,但是您不得不进行打包和部署。 因此,我们尝试了U-SQL数据库项目。从理论上讲,它们要好得多,并且非常适合我们想要的。 我们创建了一个到目前为止包含以下内容的数据库项目:

  • 某些表类型
  • 一些接收和/或返回某些表类型的TVF
  • 一些接收和/或返回某些表类型的过程

它是从Visual Studio构建的,我可以看到usqldbpack的输出。到目前为止,一切都很好。当我尝试部署它时,它总是会失败并显示隐秘消息

Deployment failed with Deployment failed with exception 'Failed to deploy DDL script, SDK helper app return failure '-1'' -> Failed to deploy DDL script, SDK helper app return failure '-1'

然后我检查了日志,看到了类似的东西

*** Error : (9,59) 'Type 'DatabaseProject1.dbo.MyTableType' does not exist.'
*** Compile failed !

然后,我看到了项目生成的ddl.usql,并且Table Type在使用它的函数的下面。因此,难怪它会失败。

所以我想应该有一种方法可以让项目知道TVF取决于表类型,以便它可以正确地构建脚本。

有办法吗?

重现问题的步骤

  1. 在Visual Studio中创建一个U-SQL数据库项目
  2. 使用以下代码创建名为MyTableType的表类型
CREATE TYPE IF NOT EXISTS [dbo].[MyTableType]
       AS TABLE
       (
           [id] string,
           [name] string
       );
  1. 使用以下代码创建一个名为MyProcedure的过程
CREATE PROCEDURE IF NOT EXISTS [dbo].[MyProcedure](@table dbo.MyTableType)  
AS  
BEGIN 
    OUTPUT @table
    TO "/Output/ReferenceGuide/DDL/Procedure/MyTable.csv"  
    USING Outputters.Csv();    
END;
  1. 构建解决方案。它将顺利构建
  2. 部署数据库,它将失败
  3. 检查日志,它会说
*** Error : (9,59) 'Type 'DatabaseProject1.dbo.MyTableType' does not exist.'
*** Compile failed !

0 个答案:

没有答案