PDA

View Full Version : انتقال اطلاعات از اس کیو ال سرور به اکسل



tayebeh
چهارشنبه 27 دی 1385, 14:12 عصر
با سلام
من برای انتقال اطلاعات از sqlserver به اکسل ابتدا یه فایل اکسل می سازم . بعدش از قبل این sp رو که در sqlserver طراحی کرده ام صدا می زنم .

CREATE PROCEDURE [dbo].[SP_DTSExport1]

AS

INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\DTSExport.xls;', 'SELECT * FROM [input_material$]')
SELECT *
FROM [dbo].[input_material]
GO

و بعد در برنامه ام با استفاده از یک sqlcommand این sp رو اجرا می کنم . ولی پیغام system error می ده . لطفا مرا راهنمایی کنید.
باتشکر

eyelash
پنج شنبه 28 دی 1385, 00:35 صبح
شما System Error را داخل یک Try..Catch بذار ببین په خطایی داره بعد به راحتی می تونی خودت اون را حل کنی یا اینکه پیغام خطا را بذاری تا با راهنمایی دوستان مشکلت حل بشه.

tayebeh
شنبه 30 دی 1385, 07:04 صبح
باتشکر از حسن توجه شما جناب آقا/خانم eyelash کاری رو که گفتید انجام دادم . error که میده اینه :

Ad hoc access to OLE DB provider 'Microsoft.Jet.OLEDB.4.0' has been denied. You must access this provider through a linked server

AminSobati
شنبه 30 دی 1385, 10:22 صبح
از پیغام اینطور به نظر میرسه که باید Linked Server تعریف کنید و بعد ازش استفاده کنید. در Books Online راهنمای sp_addlinkedserver رو ببینید

whitehat
شنبه 30 دی 1385, 20:56 عصر
کد زیر را در قالب فایلی با پسوند reg ذخیره و اجرا کنید


[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\ Providers\Microsoft.Jet.OLEDB.4.0]
"AllowInProcess"=dword:00000001
"DisallowAdhocAccess"=dword:00000000



اطلاعات بیشتر (http://support.microsoft.com/kb/327489)

tayebeh
یک شنبه 01 بهمن 1385, 09:26 صبح
باتشکر از حسن توجه شما
جناب whitehat میشه در مورد کدی که گزاشتین توضیح بدین.باعث شد که مشکلم حل شود .

whitehat
یک شنبه 01 بهمن 1385, 21:21 عصر
این خطا زمانی روی می دهد که شما بخواهید خارج از محیط Enterprise Manager از توابع OPENROWSET و OPENDATASOURCE استفاده کنید (این توابع برای درج در فایل هایی نظیر اکسل بکار می روند) برای دادن اجازه دسترسی به این توابع در خارج طبق همان لینکی که دادم باید خاصیت DisallowAdHocAccess را غیر فعال کنید که با مسیری که در لینک میسر است امکان پذیر است. من دستورات لازم را برای غیر فعال کردن آن در قالب یک فایل نوشتم.اما شما این کار را می توانستید از طریق رجیستری انجام دهید.(بصورت پیشفرض این کلید ها وجود ندارد باید آنها را ایجاد کنید)