SQL CLR生成的文件顺序错误

时间:2014-04-10 14:57:23

标签: c# .net sql-server publish sqlclr

我在Visual Studio 2013中有一个非常简单的SQL项目,但无法发布到另一个数据库。

在obj文件夹中,它生成“MYPROJECT.generated.sql”文件,但Microsoft.SqlServer.Server属性在CREATE ASSEMBLY上方输出。

CREATE PROCEDURE ....
AS EXTERNAL NAME [MyProject].[StoredProcedures].[MyMethod]
GO

CREATE TRIGGER ....
FOR INSERT
AS EXTERNAL NAME [MyProject].[Triggers].[MyTrigger]
GO

CREATE ASSEMBLY [MyProject] AUTHORIZATION [dbo]
FROM 0x234234...... (DLL as Binary Hex)
WITH PERMISSION_SET = SAFE

我的问题是,这会产生错误,因为在SQL目录中找不到[MyProject]。如果我手动将CREATE ASSEMBLY移动到顶部,那么它可以根据需要工作。

我假设T4模板正在生成此文件,并且想知道是否有人知道如何更新/交换模板以便我可以随机调整顺序(并且可能将模式添加到SqlProcedureAttribute)

[UPDATE]

我的目标数据库需要30分钟才能发布,我需要更快地转向开发/调试SQLCLR项目。我的SQLCLR是一个单独的项目,它被设置为我的大型目标数据库(构建顺序)的依赖项。在过渡期间,我创建了一个在SQLCLR post build事件中调用的vbScript,用于复制SQLCLR / prebuild.sql,并将generated.sql + top of generated.sql + SQLCLR / postbuild.sql的底部合并到一个合并的Target中/PostBuild.sql。这两个脚本是从目标数据库的pre和post构建脚本中触发的。这可以确保我的程序集十六进制是最新的并且目标是正确的配置(DEBUG | RELEASE),我可以在目标项目之外手动部署它。 (3秒对30分钟重新部署我的程序集)

[UPDATE2]

我将其从生成脚本以附加到主项目,修改为包含链接文件的独立项目。这样大型数据库项目部署保持不变并使用dacpac进行部署,我有一个单独的项目可用于快速构建和部署测试

0 个答案:

没有答案