2

我有一个将存储过程部署到服务器的 SQL CLR 项目。2 年来,我一直能够右键单击项目并进行部署。昨天,当我尝试这样做时,我开始出现错误。上周我能够部署新版本,但本周不行。

 ------ Build started: Project: '', Configuration: Debug Any CPU ------
  '' -> E:\Development\Code\SqlDeployables\''\bin\Debug\''.dll
------ Deploy started: Project: '', Configuration: Debug Any CPU ------
Error: Class not registered.
Looking for object with CLSID: {475E0C1F-1E61-4197-9324-10A148C512F8}.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========
========== Deploy: 0 succeeded, 0 failed, 0 skipped ==========

我一直在四处寻找,找不到任何有关错误的信息。自从我上次部署以来,sql server 上没有任何更新。我已经卸载了我的机器上的 VS2010 更新以及 .net 更新,但没有做任何事情。我没有卸载的唯一更新是办公室更新,我认为这不是问题。

有任何想法吗?我试过在 sql 机器上重置权限。手动删除存储过程并重新部署。我已经回到项目的先前版本并尝试部署。重新启动计算机上的 SQL Server 服务。

视觉工作室 2010 SQL Server 2008

谢谢

4

2 回答 2

0

我有同样的问题,我不知道如何解决它。我认为它可能与 VS2012 的并行安装有关,但我不确定。

作为一种解决方法,我编写了自己的 T-SQL 部署脚本。该项目可以正常构建,并且可以正常输出dll。所缺少的只是数据库部署(即 VS 针对数据库运行的命令,以将您的类型和方法实际部署到服务器)。在项目的 bin 文件夹中,您可能会找到 VS 生成的 .sql 文件;您可以将其用作模板。部署脚本最终看起来像这样:

USE SomeDatabase
GO

IF OBJECT_ID('dbo.[SomeFunction]') IS NOT NULL DROP FUNCTION dbo.[SomeFunction]
IF EXISTS (SELECT * FROM sys.assemblies WHERE NAME = 'SomeAssembly') DROP ASSEMBLY [SomeAssembly]
GO

CREATE ASSEMBLY [SomeAssembly] AUTHORIZATION dbo
FROM '\path\to\your\dll'
WITH PERMISSION_SET = SAFE
GO

CREATE FUNCTION [dbo].[SomeFunction] ....
EXTERNAL NAME [SomeAssembly].[SomeAssembly.UserDefinedFunctions].[SomeMethod]
GO

然后通过 SSMS 手动部署你的东西。

于 2014-03-18T21:50:35.700 回答
0

不知何故,你的 Visual Studio 安装搞砸了。该 CLSID 指向Microsoft.VisualStudio.Data.Schema.Package.Sql.Internal.ManagedBuildLoggerComClasscom 对象中的类C:\Windows\system32\mscoree.dll

我建议尝试在 Visual Studio 上进行修复安装,看看是否能解决您的问题。

于 2014-03-04T17:34:36.453 回答