Visual studio 2015 使用Visual Studio重新发布SQL Server CLR程序集

Visual studio 2015 使用Visual Studio重新发布SQL Server CLR程序集,visual-studio-2015,sqlclr,Visual Studio 2015,Sqlclr,我创建了一个包含多个实用程序函数的CLR程序集,并使用Visual Studio 2015将其发布到SQL Server 2012。一切顺利 我想将特定函数的输入参数从int?更改为long?。我做了更改,重建了项目并重新发布了它,但是更改后的CLR程序集没有被替换 我尝试从T-SQL中删除函数: drop function myFunc 并且它已成功从数据库中删除。然后我又从VisualStudio重新发布了,但是现在这个函数已经从数据库中消失了。它没有被共和国所取代 我尝试删除程序集,但删

我创建了一个包含多个实用程序函数的CLR程序集,并使用Visual Studio 2015将其发布到SQL Server 2012。一切顺利

我想将特定函数的输入参数从
int?
更改为
long?
。我做了更改,重建了项目并重新发布了它,但是更改后的CLR程序集没有被替换

我尝试从T-SQL中删除函数:

drop function myFunc
并且它已成功从数据库中删除。然后我又从VisualStudio重新发布了,但是现在这个函数已经从数据库中消失了。它没有被共和国所取代

我尝试删除程序集,但删除失败,错误是程序集中的函数之一的对象“foo”引用了“myAssemblyName”

Visual Studio中是否有一个内置功能,用于在对程序集中的单个项目进行选择性更新时处理服务器上的必要内务管理任务?这些步骤是否必须在VisualStudio之外的T-SQL中“手动”完成

编辑:

我查看了安装脚本,完成工作的部分是空白的。我不知道为什么。因此,我将项目从
Any CPU
更改为
x64
,并重建和重新发布,然后一切都恢复正常

<snip>
:setvar __IsSqlCmdEnabled "True"
GO
IF N'$(__IsSqlCmdEnabled)' NOT LIKE N'True'
    BEGIN
        PRINT N'SQLCMD mode must be enabled to successfully execute this script.';
        SET NOEXEC ON;
    END


GO
USE [$(DatabaseName)];


GO
PRINT N'Update complete.';

:setvar\uuuIsSqlCmdEnabled“True”
去
如果N'$(uuu IsSqlCmdEnabled)'不象N'True'
开始
必须启用“打印N”SQLCMD模式才能成功执行此脚本。“;
打开NOEXEC;
结束
去
使用[$(数据库名称)];
去
打印“更新完成”;

您是否100%确定已发布到正在检查的实例和数据库?函数和程序集的删除由发布过程自动处理。另外,不要将这些数据类型用于SQLCLR。使用
SqlInt32
SqlInt64
。是的,我确信指向了正确的数据库。我看了看剧本,它什么也没做!由于某种原因,脚本的工作部分是空白的,VS认为没有什么要做的。因此,我将项目从
Any CPU
更改为
64位
,并重建和重新发布,它成功了。我将把这些信息添加到我的问题中。架构不应该和它有任何关系。如果它确实起了作用,那么您可能已经在configuration manager中进行了更改。转到configuration manager,确保项目已设置为任何CPU,并且已选中构建和部署选项。然后再次尝试“发布解决方案”。@srutzky:我不知道VS会做什么来查看是否有任何东西要发布(程序集是否已更改?),但目标CPU的更改肯定会触发脚本的该部分执行某些操作并包含内容,这就是我做出特定更改的原因。问题是脚本在该部分是空白的。
USE[$(DatabaseName)]之后没有任何内容更换CPU后,出现了一些问题。然后将其放回任何CPU,看看它是否仍然发布。更改数据类型,即使更改为不合适的数据类型,也足以导致程序集的重新生成并发布它。