كيف يمكنني نشر إجراء مخزن مُدار دون استخدام Visual Studio؟

StackOverflow https://stackoverflow.com/questions/124295

  •  02-07-2019
  •  | 
  •  

سؤال

كل ما قرأته يقول أنه عند إجراء إجراء مخزن مُدار، انقر بزر الماوس الأيمن في Visual Studio واختر نشر.يعمل هذا بشكل جيد، ولكن ماذا لو كنت أرغب في نشره خارج Visual Studio في عدد من المواقع المختلفة؟لقد حاولت إنشاء التجميع باستخدام ملف dll الذي أنشأه المشروع في SQL، وعلى الرغم من أنه أضاف التجميع، إلا أنه لم يقم بإنشاء الإجراءات خارج التجميع.هل اكتشف أحد كيفية القيام بذلك في SQL مباشرة، دون استخدام Visual Studio؟

هل كانت مفيدة؟

المحلول

انسخ ملف 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 لأول مرة.

للتوضيح، [YOUR_ASSEMBLY] هو الاسم الذي حددته في SQL؛[NAME_SPACE] هي مساحة اسم .NET داخل ملف DLL حيث يمكن العثور على طريقتك؛و[YOUR_METHOD] هو ببساطة اسم الطريقة ضمن مساحة الاسم تلك.

نصائح أخرى

لإضافة المزيد من التفاصيل/التوضيح إلى إجابة @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] 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top