2008-09-23 16 views
7

Wszystko, co przeczytałem, mówi, że podczas tworzenia zarządzanej procedury składowanej, kliknij prawym przyciskiem myszy w programie Visual Studio i wybierz wdrożenie. Działa to dobrze, ale co, jeśli chcę wdrożyć go poza Visual Studio w wielu różnych lokalizacjach? Próbowałem utworzyć zestaw z biblioteką dll, którą projekt zbudował w SQL, a podczas dodawania złożenia nie tworzył on procedur poza złożeniem. Czy ktoś wymyślił, jak to zrobić w SQL bezpośrednio, bez korzystania z Visual Studio?Jak wdrożyć zarządzaną procedurę składowaną bez użycia Visual Studio?

Odpowiedz

6

Skopiuj plik DLL zespołu na dysk lokalny na różnych serwerach. Następnie zarejestrować swój zespół z bazą danych:

create assembly [YOUR_ASSEMBLY] 
from '(PATH_TO_DLL)' 

... następnie utworzyć funkcję odsyłania odpowiednią metodę publiczną w DLL:

create proc [YOUR_FUNCTION] 
as 
external name [YOUR_ASSEMBLY].[NAME_SPACE].[YOUR_METHOD] 

należy użyć przycisków [wsporniki, zwłaszcza okolice NAME_SPACE. Obszary nazw mogą zawierać dowolną liczbę kropek, ale identyfikatory SQL nie mogą, chyba że części są wyraźnie oddzielone za pomocą nawiasów kwadratowych. Było to źródłem wielu bólów głowy, kiedy po raz pierwszy korzystałem z SQL CLR.

Aby było jasne, [YOUR_ASSEMBLY] to nazwa zdefiniowana w SQL; [NAME_SPACE] to przestrzeń nazw .NET wewnątrz biblioteki DLL, w której można znaleźć twoją metodę; a [YOUR_METHOD] to po prostu nazwa metody w tym obszarze nazw.

+0

znalazłem [to] (https://msdn.microsoft.com/en-us/library/ms254956 (v = vs.90) aspx), aby być pomocnym źródłem do wykonania całej rzeczy z linii poleceń – user2426679

2

Aby dodać trochę więcej szczegółów/wyjaśnienia do użytkownika @ kcrumley anwser powyżej:

[NAME_SPACE] jest pełną typ nazwa a nie tylko nazw
- czyli jeśli klasa nazywa StoredProcedures w obszarze nazw z My.Name.Space, musisz użyć [My.Name.Space.StoredProcedures] dla części [NAME_SPACE].

Jeśli zarządzane zarządzane procedury przechowywane są w klasie bez zdefiniowanego obszaru nazw, wystarczy użyć nazwy klasy głównej (np.

Zmagałem się też trochę, próbując dowiedzieć się, jak dodać procedurę z argumentami/parametrami. Więc heres próbki dla nikogo próbuje zrobić:

CREATE PROCEDURE [YOUR_FUNCTION] 
( 
    @parameter1 int, 
    @parameter2 nvarchar 
) 
WITH EXECUTE AS CALLER 
AS 
EXTERNAL NAME [YOUR_ASSEMBLY].[StoredProcedures].[YOUR_FUNCTION] 
Powiązane problemy