ورود

View Full Version : استفاده از اسکریپتهای ActiveX در DTS و یک سئوال



majid_afra222
پنج شنبه 18 خرداد 1385, 20:14 عصر
سلام
اول اینکه با این پست میخوام به دوستانی که تا بحال در محیط DTS از ActiveX ها استفاده نکردن 2 تا مثال نشون داده باشیم،
دوم از دوستانی که بلدن هم میخوام جواب سئوال ما رو بدن.
اولی برای ارتباط با بانک اطلاعاتی هستش و اجرای query (اینجا جواب تعداد مشتریهاست):


Function Main()
dim myRecordset
dim iRowCount

set myConn = CreateObject("ADODB.Connection")
set myRecordset = CreateObject("ADODB.Recordset")

myConn.Open = "Provider=SQLOLEDB.1;Data Source=(local); Initial Catalog=Northwind;user id = 'sa';password=''"

mySQLCmdText = "Select 'rowcount' = Count(*) from Customers"
myRecordset.Open mySQLCmdText, myConn

set Flds = myRecordset.Fields
set iRowCount = Flds("rowcount")

If iRowCount.Value = 0 then
Main = DTSTaskExecResult_Failure
Else
MsgBox "The number of customers is: " & iRowCount.Value
Main = DTSTaskExecResult_Success
End If
End Function

دومی هم برای ایجاد یک فایل متنی :


Function Main()
Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("c:\testfile.txt", True)
MyFile.WriteLine("This is a test.")
MyFile.Close
Main = DTSTaskExecResult_Success
End Function


نکته : برای دوستانی که کد رو نفهمیدن، تو SQL Server میشه با VBScript یا JScript اسکریپتهای ActiveX رو نوشت.

و اما سئوال خود ما :

من نتونستم یک صفحه وب aspx ناقابل رو با هیچ دستوری از داخل بانک اطلاعاتیم اجرا کنم. اگه کسی از دوستان اینکار رو کرده به ما هم بگه. یعنی آدرس صفحه و اطلاعات مورد نیازش رو بدیم بعد بگیم برامون اجرا کن اونم اجرا کنه.
یادآوری : ما یک پست در بخش ASP.NET بعنوان انجام عملیات زمانبندی شده داشتتیم که جواب داده نشد، یعنی رو سرور جواب نگرفتیم، برای همین با SQL Server میخوایم اینکار رو بکنیم، تو job.

اینم آدرس صفحه :
http://www.barnamenevis.org/forum/showthread.php?t=46011
پیشاپیش ممنون.

AminSobati
جمعه 19 خرداد 1385, 10:27 صبح
مجید جان من دقیقا متوجه منظور شما از "اجرای aspx توسط SQL Server" نشدم. یعنی SQL Server صفحه مورد نظرتون رو Browse کنه؟ اگر بله، خود SQL Server به صورت Builtin چنین قابلیتهایی نداره. اما COM Objectهایی هستند که براحتی Request میفرستند و باعث اجرای Page میشن. من مثالش رو در VB دیده بودم. حتما میدونین که توسط دستورات TSQL میشه COM Object رو Initialize کرد (sp_OACreate). پس این میتونه یک روش باشه. در SQL Server 2005 با توجه به دسترسی به name spaceهای NET Framework این کار باید راحت تر باشه.
از طرفی اگر میتونین توسط VB یا هر زبان دیگه ای برنامه exe بنویسید که این کار رو انجام بده، بوسیله xp_cmdshell در SQL Server اون رو فراخوانی کنید.

majid_afra222
جمعه 19 خرداد 1385, 13:40 عصر
سلام
دقیقا مثالهای بالا هم داره از COM Object ها استفاده میکنه


set myConn = CreateObject("ADODB.Connection")

من فقط اون Object رو که برای فراخوانی صفحه وب هست میخوام برای اینکه اونرو با دستوری مثل server.execute فراخوانی کنم.
در مورد xp_cmdshell هم سرور این اجازه رو نمیده، والا از خدام بود، در ضمن اگه روشی برای راضی کردن سرور هست بگید ممنون میشم.

AminSobati
جمعه 19 خرداد 1385, 14:17 عصر
اصولا استفاده از Resourceهای خارج از SQL Server نیاز به سطح دسترسی sysadmin داره که طبیعتا Host به شما نمیده. حتی sp_OACreate هم همین دسترسی رو میخواد. در این مورد فقط ادمین Host میتونه کمک کنه!

majid_afra222
جمعه 19 خرداد 1385, 15:22 عصر
سلام
خوب، در این مورد باهاش کنار اومدیم که خودش اسکریپت رو برامون ایجاد کنه نه ما.
و ما فقط کد رو بهش بدیم.
راستی اون مثال VB رو هم اگه دارید ممنون میشم برام بفرستید (البته اگه win app هستش و com).

ممنون

AminSobati
جمعه 19 خرداد 1385, 20:43 عصر
مجید جان اون چیزی که میخواستم رو پیدا نکردم، ولی دیدن این مثال هم خالی از لطف نیست. امیدوارم کمکت کنه...
در این Sample یک Request به سایت yahoo فرستاده میشه برای اینکه username و Password رو try کنه. البته جدیدا yahoo سایت رو در مقابل این روشها محافظت میکنه اما برای هدف شما مهم نیست، نحوه کار این sample مهمه.

majid_afra222
شنبه 20 خرداد 1385, 15:40 عصر
سلام
ممنون نه با این نمیشه.
بنابراین یه جوری سمبل کردیم رفت.

AminSobati
شنبه 20 خرداد 1385, 16:01 عصر
سمبل کردن خودش هنریه!