ورود

View Full Version : خطا هنگام دریافت فایل excel روی سرور



m_u3fi
یک شنبه 16 مهر 1391, 08:28 صبح
من نیاز دارم که یک فایل excel رو دریافت کنم و توی دیتابیسم که sql 2005 هست بریزم با این دستورات این کار رو بدون خطا انجام میدم
INSERT INTO test ( .
.
.
)
SELECT * from OPENROWSET(''Microsoft.Jet.OLEDB.4.0'',''Excel 8.0;Database='+ @SourceFile+''',''SELECT * FROM [Sheet1$]'')

اما وقتی با دستگاه دیگه ایی به سرور وصل میشم و می خوام فایل رو دریافت کنم این خطا رو میده:
Cannot get the column information from OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "(null)".

جستجو هم کردم و یه سری کارها که گفته بودن انجام دادم ولی فایده ایی نداشت از جمله :

نصب Microsoft Access Database Engine 2010 Redistributable (http://www.microsoft.com/download/en/details.aspx?id=13255)که لازم هستش و

EXEC sp_configure 'Show Advanced Options', 1;
RECONFIGURE;
GO
EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;
GO

USE [master]
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
GO

این صفحه رو هم که راهنمایی بسیار خوبی رو خوندم و همه کارهایی رو که گفته انجام دادم http://www.excel-sql-server.com/excel-import-to-sql-server-using-distributed-queries.htm

اما مشکل پا برجاست لطفا راهنمایی بفرمایید.

m_u3fi
سه شنبه 18 مهر 1391, 12:58 عصر
مشکل هنوز برطرف نشده امروز که داشتم برای هزارمین بار چک میکردم متوجه شدم که پارامتر ها آدرس فایل SP مورد نظر سعی میکنه فایلی رو که من آپلود میکنم از یک آدرس دیگه بخونه :


exec dbo.File_Import @SourceFile='c:\windows\system32\inetsrv\File.xls'


در صورتی که وقتی به صورت local برنامه رو اجرا میکنم :

exec dbo.File_Import @SourceFile='D:\Code_91-06-18\Web\File.xls'


این هست که درسته و کار میکنه
اومدم و یه فایلم رو تو آدرس c:\windows\system32\inetsrv\File.xls کپی کردم و برنامه بدون خطا انجام شد ولی من نمی تونم به کاربر اجازه بدم فایلش رو توی سرور کپی کنه !

نمی دونم شاید توی قسمت آپلود دستورم مشکل داره :
string SourcePath=System.IO.Path.GetFullPath(SourceFilePa th.PostedFile.FileName);
اینجوری آدرس فایل رو میخونم
اگر کسی علت رو می دونه لطفا راهنمایی کنه

m_u3fi
یک شنبه 14 آبان 1391, 11:01 صبح
خوب مشکل من با تغییر در کد آپلود حل شد اینجا میذارم شاید به درد کسی بخوره :

string SourcePath = MapPath("~/SpermFile/" + FileUpload1.FileName);
FileUpload1.SaveAs(SourcePath);