0

次のエラー メッセージが表示されます。

Msg 10314, Level 16, State 11, Line 1
An error occurred in the Microsoft .NET Framework while trying to load assembly id 66007. The server may be running out of resources, or the assembly may not be trusted with PERMISSION_SET = EXTERNAL_ACCESS or UNSAFE. Run the query again, or check documentation to see how to solve the assembly trust issues. For more information about this error: 
System.IO.FileLoadException: Could not load file or assembly 'powerstatregression, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)
System.IO.FileLoadException: 
    at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
    at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
    at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
    at System.Reflection.Assembly.Load(String assemblyString)

このコードを実行すると、最後の行で問題が発生します。

ALTER DATABASE dasolPSDev SET TRUSTWORTHY ON;
GO

CREATE ASSEMBLY PowerStatRegression
AUTHORIZATION [dbo]
from 'C:\SqlDlls\PowerStatRegression.dll'
WITH PERMISSION_SET = UNSAFE
GO

CREATE PROCEDURE [dbo].[SpCreatePowerStatCorr]
    @strUID [nvarchar](4000),
    @seqId [int],
    @flagProgress [int]
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [PowerStatRegression].[StoredProcedures].[SpCreatePowerStatCorr]
GO

CREATE PROCEDURE [dbo].[SpCreatePowerStatCorrEx]
    @strUID [nvarchar](4000),
    @seqId [int],
    @flagProgress [int]
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [PowerStatRegression].[StoredProcedures].[SpCreatePowerStatCorrEx]
GO


CREATE PROCEDURE [dbo].SpCheckCollinearity
    @strUID [nvarchar](4000),
    @seqId [int],
    @flagProgress [int]
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [PowerStatRegression].[StoredProcedures].[SpCheckCollinearity]
GO


CREATE PROCEDURE [dbo].[AboutPowerStatCorrelation]
WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [PowerStatRegression].[StoredProcedures].[AboutPowerStatCorrelation]
GO

--  To Test
dbo.AboutPowerStatCorrelation
GO

grant execute on SpCreatePowerStatCorr to db_executor
GO
4

2 に答える 2

0

@chris あなたのプロジェクトで参照している他のアセンブリは何ですか? そのエラーの原因となっているカスタム アセンブリの前に、SQL Server に追加する必要がある他のアセンブリがいくつかある場合があります。たとえば、JSON 解析のために Newtonsoft のようなものを参照している場合は、そのアセンブリを自分のアセンブリの前に追加する必要があります。

于 2012-08-15T22:07:04.080 に答える
0

x86 (32 ビット) をターゲットとしてビルドされた dll を読み込もうとしたときに、このエラー、または少なくとも非常によく似たエラーが発生しましたが、Sql サーバーは x64 でした。エラーは、登録した関数を実行しようとしたときにのみ表示されました...登録時に文句はありませんでした!

ビルドを「任意の CPU」をターゲットに変更し、アセンブリを再登録するとうまくいきました。

于 2013-10-07T11:26:15.943 に答える