2014-03-04 24 views
2

我有一個將存儲過程部署到服務器的SQL CLR項目。 2年來,我一直能夠右鍵單擊項目並進行部署。昨天當我嘗試這樣做時,我開始犯錯。上週我能夠部署新版本,但本週不能。SQL CLR不再部署到SQL 2008

------ 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機器上重置權限。手動刪除存儲的procs並重新部署。我已經回到該項目的以前版本並嘗試部署。在計算機上重新啓動SQL Server服務。

Visual Studio 2010中 SQL Server 2008中

感謝

回答

0

不知您的Visual Studio安裝已經變得一團糟。該CLSID指向com對象C:\Windows\system32\mscoree.dll中的Microsoft.VisualStudio.Data.Schema.Package.Sql.Internal.ManagedBuildLoggerComClass類。

我會建議嘗試在Visual Studio上進行修復安裝,看看是否解決了您的問題。

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手動部署你的東西。