-1

以前にVS2010でアセンブリを作成し、キーで署名しました。以下のようなスクリプトを実行しました。

USE master; 
GO  

CREATE ASYMMETRIC KEY SQLCLRPSBatch20Key FROM EXECUTABLE FILE = 'C:\Unsafe\MyDLL.dll';   
CREATE LOGIN SQLCLRPSBatch20Login FROM ASYMMETRIC KEY SQLCLRPSBatch20Key;  
GRANT UNSAFE ASSEMBLY TO SQLCLRPSBatch20Login;
GO

use MyDB;
GO

// create assembly script here to install unsafe assembly

アセンブリをDBにドロップし、再インストールして更新するたびに、これを実行して新しいキーを作成し、ログインする必要がありますか?

私がそれをするとき、私は得ます:

Msg 15396, Level 16, State 1, Line 2
An asymmetric key with name 'SQLCLRPSBatch20Key' already exists or this asymmetric key already has been added to the database.
Msg 15151, Level 16, State 1, Line 3
Cannot find the asymmetric key 'SQLCLRPSBatch20Key', because it does not exist or you do not have permission.
Msg 15151, Level 16, State 1, Line 4
Cannot find the login 'SQLCLRPSBatch20Login', because it does not exist or you do not have permission.

アセンブリは同じ方法で作成および署名されていたので、インストールする必要があると思います。これは正しいです?

4

1 に答える 1

0

いいえ。非対称キーからログイン(より正確にはサーバープリンシパル)を作成することは、「ねえ...そのようなことを行う権利を持っている人がおそらくあなたのCLRコードを見てそれを与えた」と言う方法です。親指を立てる」。サーバープリンシパルが作成された後、それをサポートするキーで署名されたアセンブリはすべて実行できます。

于 2013-02-27T03:45:36.727 に答える