2012-08-23 36 views
2

當我嘗試創建一個新的服務器下面的存儲過程,我得到錯誤「SqlBulkCopy的」未找到

消息6528,級別16,狀態1,過程usp_BulkCopy,3號線
大會「 SqlBulkCopy'在數據庫'master'的SQL目錄中找不到。

代碼:

USE [master] 
GO 

/****** Object: StoredProcedure [dbo].[usp_BulkCopy] Script Date: 08/22/2012 23:32:59 ******/ 
CREATE PROCEDURE [dbo].[usp_BulkCopy] 
    @sourceServer [nvarchar](255), 
    @sourceDatabase [nvarchar](255), 
    @sourceSelectQuery [nvarchar](4000), 
    @destinationServer [nvarchar](255), 
    @destinationDatabase [nvarchar](255), 
    @destinationTable [nvarchar](255), 
    @FlagKeepIdentity [bit], 
    @throwExceptionOnErrors [bit], 
    @SourceTrusted [bit], 
    @DestTrusted [bit], 
    @SourceUser [nvarchar](255), 
    @SourcePass [nvarchar](255), 
    @DestUser [nvarchar](255), 
    @DestPass [nvarchar](255) 
WITH EXECUTE AS CALLER 
AS 
EXTERNAL NAME [SqlBulkCopy].[StoredProcedures].[usp_BulkCopy] 
GO 

如何克服呢?我不確定會議是什麼,是否真的是一個真正的問題。

謝謝你的時間..

+1

好了,信息是很清楚的:即裝配'SqlBulkCopy'你是在'外部名引用[使用SqlBulkCopy ] [StoredProcedures]。[usp_BulkCopy]'不存在於'master'數據庫中 - 所以你需要首先用'CREATE ASSEMBLY'將它加載到master數據庫中 –

+4

這個存儲過程顯然引用了一個.NET CLR程序集該功能已經實施。爲此,該程序集需要存在於創建存儲過程的數據庫中,而不是如錯誤所示。在**之前,您需要**首先**將該程序集加載到數據庫中(使用'CREATE ASSEMBLY')**可以引用它。 Google +閱讀了「SQL CLR集成」或「SQL CLR存儲過程」以瞭解有關此主題的更多信息。 –

回答

0

謝謝馬克S.這是大會。

希望它可以幫助別人。這裏是我所做的細節。

我發現從另一個數據庫服務器的安裝和運行它這個服務器是這樣的:

CREATE ASSEMBLY [SqlBulkCopy] 
AUTHORIZATION [dbo] 
FROM 
[CODE in Hexadecimals-this would be unique I think] 

然後,我不得不這樣做:

ALTER DATABASE [master] SET TRUSTWORTHY ON 

,然後這樣的:

sp_configure 'clr enabled',1 
GO 
RECONFIGURE 
GO 
sp_configure 'clr enabled' -- make sure it took 
GO 

就是這樣。它工作得很好:

要確保安裝的組件,你可以運行這個命令:

SELECT * FROM sys.assemblies