Próbuję wykonać add an assembly do bazy danych w SQL2008 przy użyciu asymmetric key.asymetryczne tworzenie klucza za pośrednictwem sieci
Dodajemy montaż przy użyciu ciąg szesnastkowy (dodawanie zestawów do serwerów przez tylko zapytań SQL)
USE [master]
GO
IF NOT EXISTS (SELECT * from sys.asymmetric_keys where name = 'ManagedAsymmetricKey')
BEGIN
CREATE ASYMMETRIC KEY ManagedAsymmetricKey FROM FILE = 'C:\Managed.dll'
CREATE LOGIN CLRLogin FROM ASYMMETRIC KEY ManagedAsymmetricKey
GRANT UNSAFE ASSEMBLY TO CLRLogin
END
GO
USE [$dbName]
GO
CREATE ASSEMBLY [Managed]
AUTHORIZATION [dbo]
FROM 0x4D5A....
WITH PERMISSION_SET = UNSAFE
GO
To będzie działać na lokalnej instancji jednak przez sieć otrzymujemy; The certificate, asymmetric key, or private key file does not exist or has invalid format.
I mogą być błędnie zakładając, że należy najpierw dodać klucz, powinienem być dodanie zespół potem robić coś wzdłuż linii CREATE ASYMMETRIC KEY ManagedAsymmetricKey FROM ASSEMBLY [workingDB].[dbo].[Managed]
?
Do tymczasowego montażu, nie trzeba ustawić '' UNSAFE' PERMISSION_SET' się, ponieważ nie trzeba wykonywać kod z zespołu, aby utworzyć klucz. Oznacza to również, że nie musisz ustawiać "TRUSTWORTHY" w dowolnym miejscu. Poza tym, dzięki za sprytny hack! –
Stawiam niebezpieczne, ponieważ montaż w pytaniu jest niebezpieczny. jeśli masz bezpieczny montaż, to naprawdę nie jest potrzebne. –
Nie jestem w 100% na tym, ale nie sądzę, że zgromadzenia są z natury (nie) bezpieczne. Mój zestaw zawiera kod, który działa tylko z uprawnieniami "UNSAFE", ale SQL Server nie narzeka, gdy utworzę zestaw z 'PERMISSION_SET = SAFE'. –