Как развернуть управляемую хранимую процедуру без использования Visual Studio?

Все, что я прочитал, говорит о том, что при создании управляемой хранимой процедуры нужно щелкнуть правой кнопкой мыши в Visual Studio и выбрать развертывание. Это нормально работает, но что, если я захочу развернуть его за пределами Visual Studio в нескольких разных местах? Я попытался создать сборку с dll проекта, построенного на SQL, и хотя он добавлял сборку, он не создавал процедуры из сборки. Кто-нибудь понял, как это сделать в SQL напрямую, без использования Visual Studio?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
7
0
3 017
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Скопируйте файл DLL сборки на локальный диск на различных серверах. Затем зарегистрируйте свою сборку в базе данных:

create assembly [YOUR_ASSEMBLY]
from '(PATH_TO_DLL)'

... затем вы создаете функцию, ссылающуюся на соответствующий общедоступный метод в DLL:

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

Обязательно используйте скобки [, особенно вокруг NAME_SPACE. Пространства имен могут иметь любое количество точек, но идентификаторы SQL не могут, если части явно не разделены квадратными скобками. Когда я впервые использовал SQL CLR, это было источником многих головных болей.

Чтобы быть ясным, [ВАША_КОБКА] - это имя, которое вы определили в SQL; [NAME_SPACE] - это пространство имен .NET внутри DLL, где находится ваш метод; а [YOUR_METHOD] - это просто имя метода в этом пространстве имен.

Я обнаружил, что это является полезным ресурсом для выполнения всего этого из командной строки.

user2426679 18.08.2016 21:08

Чтобы добавить более подробную информацию / пояснение к ответу @ kcrumley выше:

[NAME_SPACE] - это полное имя типа, а не только пространство имен
- т.е. если ваш класс называется StoredProcedures в пространстве имен My.Name.Space, вы должны использовать [My.Name.Space.StoredProcedures] для части [NAME_SPACE].

Если ваши управляемые хранимые процедуры находятся в классе без определенного пространства имен, вы просто используете простое имя класса (например, [StoredProcedures]).

Я также немного боролся, пытаясь понять, как добавить процедуру с аргументами / параметрами. Итак, вот образец для всех, кто пытается это сделать:

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

Другие вопросы по теме