PDA

View Full Version : سوال: خطای دریافت اطلاعات از دیتابیس



رامین مرادی
چهارشنبه 11 آبان 1401, 10:35 صبح
سلام وقت بخیر دوستان یکی از کلاینتهام تو شعبه شهر دیگه خطایی دریافت میکنه با این مضمون
A transport-level error has occurred when receiving results from the server. (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe.)

جالبه لاگین میشه و پسورد و یوزرش از دیتابیس چک میشه ولی برای بقیه فرم ها که میخواد باز بشه و اطلاعاتی از دیتابیس فراخوانی میشه این خطا به وجود میاد. برای بقیه کاربرها همچین مشکلی نیست
ممکنه از تایم اوت کانکشن باشه؟ به دلیل اختلالات اینترنتی موجود؟

علیرضا حسن زاده
پنج شنبه 12 آبان 1401, 11:03 صبح
سلام کدی که این خطا رو ایجاد میکنه رو بزارین

رامین مرادی
پنج شنبه 12 آبان 1401, 11:20 صبح
سلام کدی که این خطا رو ایجاد میکنه رو بزارین
کلا هر کوئری که اجرا میشه خطا میده فقط هنگام لاگین یه کوئری بررسی نام کاربری و رمز درست کار میکنه

ROSTAM2
پنج شنبه 12 آبان 1401, 12:25 عصر
سلام.
احتمالا دیتابیس حسابهای کاربری بصورت پیشفرض هست و خودتون اون دیتابیس رو ایجاد نکردید و می تونه با Connection String دیتابیس اطلاعات شما مرتبط نباشه!

رامین مرادی
پنج شنبه 12 آبان 1401, 12:30 عصر
سلام.
احتمالا دیتابیس حسابهای کاربری بصورت پیشفرض هست و خودتون اون دیتابیس رو ایجاد نکردید و می تونه با Connection String شما مرتبط نباشه!
سلام. نه به اون مربوط نیست چون کلا از صفر تا صد کد نویسی شده و به صورت کتابخونه هست. اون متدی که کوئری کاربر رو اجرا میکنه بقیه کوئری ها رو هم اجرا میکنه.
تقریبا به یه چیزایی رسیدم اون دستوراتی که از نظر اجرایی زمان زیاد نیاز داره برا برگردوندن نتیجه با شکست مواجه میشه . خط رو وصل کردیم سرعت نت به شدت اومده پایین در حد دایل آپ و پشتیبانی گفتن مشکل نویز هست. گفتم درخواست پشتیبانی حضوری بدن ببینیم چی میگن. این مشکل اونجور که متوجه شدم به دلیل طول کشیدن برگشت پاسخ، کوئری کانکشن قبلی منقضی میشه. حالا اگه امکانش بود تایم اوت کانکشن رو زیاد کرد یه تستی میگرفتیم چون با سرعت های پایین قبلا مشکلی نبود .

علیرضا حسن زاده
شنبه 21 آبان 1401, 11:18 صبح
خب اگه با اینترنت به سرور SQL وصل میشید این مشکل رو تقریباهمیشه دارید مخصوصا اگه دیتایه برگشتی زیاد باشه
من قبلا با این مشکل برخورد داشتم
اولین راه که ساده ترین هست timeout کانکشن رو زیاد بذار تو سرور هم یه تنظیمی برای این مورد هست اونم باید تغییر بدی
اما دومین و بهترین راه استفاده از WebApi هست که هم امنیت سرورSQL رو تامین کنی که کاربر مستقیم با دیتابیس درارتباط نباشه هم مدیریت کانکشن از طریق HttpClient و اینا میشه و قطعی به حداقل میرسه البته برای اینکه سریع تر هم کارت راه بیافته خود SQL سرور هم این قابلیت رو داره که براتApi بسازه و درگیرش نشی ولی خب انعطاف پذیریش کمه یا شاید من بلد نبودم خوب باهاش کار کنم

رامین مرادی
شنبه 21 آبان 1401, 12:17 عصر
خب اگه با اینترنت به سرور SQL وصل میشید این مشکل رو تقریباهمیشه دارید مخصوصا اگه دیتایه برگشتی زیاد باشه
من قبلا با این مشکل برخورد داشتم
اولین راه که ساده ترین هست timeout کانکشن رو زیاد بذار تو سرور هم یه تنظیمی برای این مورد هست اونم باید تغییر بدی
اما دومین و بهترین راه استفاده از WebApi هست که هم امنیت سرورSQL رو تامین کنی که کاربر مستقیم با دیتابیس درارتباط نباشه هم مدیریت کانکشن از طریق HttpClient و اینا میشه و قطعی به حداقل میرسه البته برای اینکه سریع تر هم کارت راه بیافته خود SQL سرور هم این قابلیت رو داره که براتApi بسازه و درگیرش نشی ولی خب انعطاف پذیریش کمه یا شاید من بلد نبودم خوب باهاش کار کنم

بله درست میفرمایید api خیلی بهینه تر و امنتر هست. اما بنا به دلایلی این روش پیش گرفته شده البته به طور مستقیم با آی پی ثابت اینترنتی به سرور وصل نیست. بین شعب تانل با میکروتیک زده شده و با آی پی های داخلی ارتباط برقرار میشه. برای تایم اوت در کانکشن استرینگ چه دستوری باید نوشته بشه تا بحال استفاده نکردم

علیرضا حسن زاده
دوشنبه 23 آبان 1401, 15:16 عصر
از این کد میتونید ایده کانکشن استرینگ رو بگیری

private static void OpenSqlConnection(){ string connectionString = GetConnectionString(); using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); Console.WriteLine("State: {0}", connection.State); Console.WriteLine("ConnectionTimeout: {0}", connection.ConnectionTimeout); }}static private string GetConnectionString(){ // To avoid storing the connection string in your code,// you can retrieve it from a configuration file, using the// System.Configuration.ConfigurationSettings.AppSett ings propertyreturn"Data Source=(local);Initial Catalog=AdventureWorks;" + "Integrated Security=SSPI;Connection Timeout=30";}