-1

Я уже создал сборку с VS 2010 и подписал ее с помощью ключа. Я побежал сценарий, как это показано ниже:Обновление сборки с асимметричным ключом

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 

Теперь мне нужно сделать, чтобы это сделать, и создать новый ключ и войти в систему каждый раз, когда я падаю сборку на БД и переустановить его обновить?

Когда я делаю это, я получаю:

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. 

Так что я думаю, так как сборка создания и подписаны таким же образом, я просто установить его. Это верно?

ответ

0

№. Создание логина (или, точнее, принципала сервера) из асимметричного ключа - это способ сказать «эй ... кто-то, кто имеет права на такое, вероятно, посмотрел на вашу среду CLR кода и дал ему большие пальцы ". После создания принципала сервера любые сборки, подписанные с ключом, который поддерживает его, будут в порядке запуска.

+0

О, ладно, так что я просто должен сделать это в первый раз, так как он был подписан с ключом, верно? – cdub

+0

Да. Чтобы убедиться в этом, проверьте sys.crypt_properties перед тем, как выйти из системы, выйти из системы, вернуться в систему и снова проверить ее. Вы увидите, что подпись на вашей сборке сохраняется. –

Смежные вопросы