-1

J'ai précédemment créé un assemblage avec VS 2010 et l'ai signé avec une clé. J'ai couru un script comme celui-ci ci-dessous: le DBMise à jour d'un assemblage avec une clé asymétrique

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 

Maintenant, dois-je faire cela et de créer une nouvelle clé et connectez-vous à chaque fois que je laisse tomber l'assemblage et réinstalle le mettre à jour?

Quand je fais cela, je reçois:

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. 

Je pense que oui puisque l'assemblée a été crée et signé de la même façon, je viens de l'installer. Est-ce correct?

Répondre

0

Non. La création d'un login (ou, plus précisément, d'un serveur principal) à partir de la clé asymétrique est une façon de dire "hé ... quelqu'un qui a le droit de faire une telle chose a probablement regardé votre CLR code et lui a donné le pouce en l'air ". Une fois le serveur principal créé, tous les assemblys signés avec la clé qui le supporte fonctionneront.

+0

oh okay donc je dois le faire la première fois, car il a été signé avec la clé, non? – cdub

+0

Oui. Pour le prouver à vous-même, consultez sys.crypt_properties avant de vous déconnecter, de vous déconnecter, de vous reconnecter et de le vérifier à nouveau. Vous verrez que la signature de votre assemblage persiste. –

Questions connexes