PDA

View Full Version : use کردن یک Dll بعنو ان یک Stored Procedure



ardvisoor
دوشنبه 18 اردیبهشت 1385, 10:08 صبح
سلام
من در .net 2005 یک StoreedProcedure نوشتم و اون رو به هیچ پایگاه داده خاصی Bind نکردم ,و ازش یک Dll ساختم، که شامل چندین StoredProce است، حالا می خواهم در Sql server 2005 این Dll رو Deploy کنم به هر پایگاه داده ای که بخواهم و در واقع Storedها به اون پیاگاه اضافه بشوند اما نمی تونم این کار رو بکنم، کسی راه حلی داره؟
ممنون

AminSobati
دوشنبه 18 اردیبهشت 1385, 22:56 عصر
بهتون تبریک میگم! این اولین سوال مبحث SQL-CLR در تالار بود!


CREATE ASSEMBLY MyProcs
FROM 'c:\MyFile.dll'

با دستور بالا فایل DLL شما، بایت به بایت داخل SQL Server قرار میگیره به شکلی که حتی به خود فایل روی دیسک نیازی نخواهید داشت. بعد از اون، باید از CREATE PROC استفاده کنید، با این Syntax کلی:


CREATE PROC ProcName
@parameter1 TYPE,
@parameter2 TYPE,
...
AS
EXTERNAL NAME Assembly.[RootNameSpace.Class].MethodName
GO

دقت کنید که در قسمت EXTERNAL NAME از بعد از Assembly، تمام کلمات Case Sensitive هستند و باید عینا مثل چیزی که در Dot NET نوشتین ظاهر بشن. اگر DLL رو با #C نوشتین، قسمت Root NameSpace رو نباید بدین.

ardvisoor
سه شنبه 19 اردیبهشت 1385, 09:54 صبح
با سلام
ممنون از پاسختون ، راستش من از ClR استفاده کردم تا دیگر مجبور به نوشتن Proc ها در SqlServer نباشم، اما گویا در این روش باز هم باید از Create استفاده کنم، پس راهی موجود نیست که فقط با قرار گرفتن Dll خودبخود Storedها ذخیره شوند؟

باز هم سپاسگذارم

AminSobati
سه شنبه 19 اردیبهشت 1385, 11:48 صبح
چرا، میتونین Auto Deploy استفاده کنین. بعد از Build، عمل Deploy انجام بدین

ardvisoor
سه شنبه 19 اردیبهشت 1385, 14:21 عصر
ممنون فکر کنم در اون صورت حتما باید موقع نوشتن Storedها در پروزه ام اون رو Deploy هم بکنم، مشکل در اینجاست که من نمی خواستم این کار را بکنم در واقع هدف من این بود که یکسری Stored عمومی بنویسم(که نوشتم) و برای هر پایگاه داده ای که بخواهم در زمان دلخواه Deploy کنم ، که فکر کنم راه حلی که شما در بالا فرمودید بهترین باشد.

سپاسگذارم

AminSobati
پنج شنبه 21 اردیبهشت 1385, 00:00 صبح
شما میتونین یکبار Script رو بسازید و این رو برای هر دیتابیسی Run کنید. حتی خود Assembly به شکل باینری در Script قابل ذخیره هستش، یعنی موقع CREATE ASSEMBLY نیازی به وجود DLL رو دیسک نیست. برای ساخت Script از Assembly، کافیه روی نام Assembly رایت کلیک کنید و ...