PDA

View Full Version : سوال: اشکال در اتصال به پایگاه داده SQL Server 2005



شاهرخ عشایری
یک شنبه 17 بهمن 1389, 18:50 عصر
با عرض سلام خدمت دوستان.
مشکلی در ارتباط با پایگاه داده وجود داره و اون اینکه:

من یک سایتی ایجاد کردم که باید به SQL Server 2005 متصل بشه. تا زمانیکه سایت رو Publish نکردم، هیچ مشکلی وجود نداره و بدرستی کار میکنه. اما زمانیکه اون رو Publish میکنم با error زیر مواجه میشم.


A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

از همه عجیب تر اینکه بعد از publish سایت، مقدار Connection string رو به مقدار مورد نظر تغییر میدم. اما باز هم کار نمیکنه. البته معما اینجاست که اگر حالا همون connection string رو در web.config سایت که بصورت لوکال هست و از روی کامپیوتر شخصی خودم اجرا میشه قرار بدم، سایت لود میشه و مشکلی وجود نداره.

به نظر شما اشکال از چی میتونه باشه؟

Javad_Darvish_Amiry
یک شنبه 17 بهمن 1389, 19:11 عصر
منظورتون از پابلیش کردن اینه که سایت رو روی هاستینگتون نصب می کنید؟ یا رو همون لوکال پابلیش میکنید و کار نمیکنه؟ اگه ممکنه کانکشن استرینگتون رو قرار بدید.

smhz777
یک شنبه 17 بهمن 1389, 19:19 عصر
سلام دوست عزیز
من قبلا مشکلی مثل شما داشتم
مشکل سطح دسترسی به فایل دیتابیسته از تو ویندوزه
روی خود فایل دینابیس راست کلید کن و بعد تو سطح دسترسی هاش اجازه دست رسی به مهمان رو هم بد

شاهرخ عشایری
یک شنبه 17 بهمن 1389, 22:27 عصر
منظورتون از پابلیش کردن اینه که سایت رو روی هاستینگتون نصب می کنید؟ یا رو همون لوکال پابلیش میکنید و کار نمیکنه؟ اگه ممکنه کانکشن استرینگتون رو قرار بدید.

درسته. منظورم اینه که اون رو روی هاست قرار میدم.

Javad_Darvish_Amiry
یک شنبه 17 بهمن 1389, 22:33 عصر
دوست عزیز کانکشن استرینگ رو قرار بدید تا بتونیم بررسیش کنیم.

mehrdad85
دوشنبه 18 بهمن 1389, 11:08 صبح
سلام
دوست عزیز مشکل فکر میکنم از تنظیمات خود sql باشه
وارد فایل پایگاه که شدی یه user برای iis باید بسازی و سطح دسترسی اونو ست بکنی


موفق باشی

شاهرخ عشایری
دوشنبه 18 بهمن 1389, 21:55 عصر
در ادامه سوالم باید بگم که اون مشکل ارتباط با جدول SQL Server 2005 حل شد. ایراد از این بود که Provider مربوط به Membership رو درون فایل Web.Config تنظیم نکرده بودم.
اما حالا با یک مشکل دیگه ای مواجه شدم و اون اینکه Error زیر به نمایش در میاد:


The 'System.Web.Profile.SqlProfileProvider' requires a database schema compatible with schema version '1'. However, the current database schema is not compatible with this version. You may need to either install a compatible schema with aspnet_regsql.exe (available in the framework installation directory), or upgrade the provider to a newer version.

کسی در مورد این پیغام خطا اطلاعاتی داره؟

Javad_Darvish_Amiry
دوشنبه 18 بهمن 1389, 22:55 عصر
اشکال از schema version هست. به این پست مراجعه کنید. (http://barnamenevis.org/showthread.php?269964-%D8%AE%D8%B7%D8%A7-%D8%AF%D8%B1-mebership-%D8%B1%D9%88%DB%8C-%D9%87%D8%A7%D8%B3%D8%AA&p=1193972&highlight=#post1193972)

شاهرخ عشایری
دوشنبه 18 بهمن 1389, 23:16 عصر
اشکال از schema version هست. به این پست مراجعه کنید. (http://barnamenevis.org/showthread.php?269964-%D8%AE%D8%B7%D8%A7-%D8%AF%D8%B1-mebership-%D8%B1%D9%88%DB%8C-%D9%87%D8%A7%D8%B3%D8%AA&p=1193972&highlight=#post1193972)

دوست عزیز، از کمکتون خیلی ممنونم. یه سوالی که اینجا برام پیش اومد اینه که در روشی که فرمودید، آیا بعد از انجام ایجاد User و Role و ... اگر اینکارو انجام بدم، رکوردهای Membership به دیتا بیس سرور منتقل خواهد شد یا خیر؟

Javad_Darvish_Amiry
سه شنبه 19 بهمن 1389, 00:35 صبح
نه دوست عزیز. این کار دیتابیس رو برای استفاده ASP.NET آماده میکنه و ربطی به دیتابیس خاص شما نداره. اگه میخواید رکورد های لوکال رو انتقال بدید یه راهش اینه که اسکریپت بگیرید و راه ساده ترش اینه که یه بک اپ از لوکال بگیرید و تو سرور ریستور کنید. اینطوری عین دیتابیس منتقل میشه و مشکل بالا (شماورژن) هم دیگه ندارید. رکورد ها هم منتقل میشن. موفق باشید.

شاهرخ عشایری
سه شنبه 19 بهمن 1389, 00:50 صبح
دوست عزیر، من هم اسکریپت رو امتحان کردم و هم Export رو. اما باز هم این مشکل حل نشد.

Javad_Darvish_Amiry
سه شنبه 19 بهمن 1389, 02:03 صبح
کدوم مشکل حل نشد؟ شماورژن یا رکورد های لوکال؟!
خوب بک اپ بگیرید دوست من. یه بک آپ از لوکال بگیرید و رو هاست ریستور کنید. اینو امتحان کردید؟

شاهرخ عشایری
سه شنبه 19 بهمن 1389, 22:35 عصر
دوست گرامی برای اینکه بتونم سوالم رو بهتر مطرح کنم فکر می کنم که باید یکسری اطلاعات در مورد سرور و فایل Web.config بدم:
اول اینکه سرور پایگاه داده هاست من از نوع SQL Server 2005 هستش.
دوم اینکه من می خوام جداول Membership درون دیتابیسی ایجاد بشه که خودم از قبل درون SQL Server 2005 ایجاد کردم. (این کار رو از طریق asp_regSql انجام دادم. اما تنها برای دیتابیس لوکال قابل انجام بود نه برای دیتابیسی که در هاست قرار داره!!!)
سوم اینکه من دیتا بیسم رو از طریق ایجاد Script به همراه تمام Store-Procedure هاش به هاست منتقل کردم.
سوال اینجاست که چرا دوباره با خطای Schema-Version مواجه می شم.

Javad_Darvish_Amiry
سه شنبه 19 بهمن 1389, 23:51 عصر
این کار رو از طریق asp_regSql انجام دادم. اما تنها برای دیتابیس لوکال قابل انجام بود نه برای دیتابیسی که در هاست قرار داره!!!
یه خورده عجیبه. اول این که اصلا به دیتابیس وصل شد یا نه؟ دوم این که اگه وصل شد تونست تغییرات رو اعمال کنه یا نه؟ و سوم این که اگه تغییرات هم ایجاد شد، باز از شماورژن اشکال میگرفت؟؟؟
سوال بعدی اینه که اگه مرحله اول درست انجام شد و جداول درست ایجاد شدن، آیا اسکریپت مورد اشاره تون رو بعد از استفاده از aspnet_regsql رو سرور ران کردید؟ یا قبلش؟
اگه اسکریپت رو بعدش اجرا کرده باشید، اسکریپت جداول، پروسیجرها و ویو ها رو پاک می کنه و خودش دوباره میسازه. یعنی این که انگار اصلا از aspnet_regsql استفاده نکرده باشیم. اگه اینطوریه شما وقتی میخواید از دیتابیس لوکال اسکریپت بگیرید، هر چیزی که مربوط به ASP.NET میشه (اعم از جدول، پروسیجر، ویو، و یادم نیست که فانکشن داره یا نه، اگه داره فانکشن ها) همه رو پاک کنید و بعد اسکریپت بگیرید. چون در غیر این صورت همونطور که بالا گفتم تمام تغییراتی که با aspnet_regsql ایجاد شده از بین میرن.
اما روش بک-آپ رو که عرض کردم خدمتتون تو این شرایط بهتره. در این شرایط تمام اشیاء موجود تو دیتابیس سرور رو باید حذف کنید، و فقط خود دیتابیس باشه. حالا از لوکالتون یه بک-آپ بگیرید و روی دیتابیس هاست ریستور کنید. تو این شرایط علی القلعده نباید هیچ مشکلی پیش بیاد مگه این که اشکال از جای دیگه ای باشه.
راستی برنامه تون دات نت چنده؟

شاهرخ عشایری
چهارشنبه 20 بهمن 1389, 10:26 صبح
من ابتدا جداول خودم رو درون دیتابیس ایجاد کردم. سپس توسط Asp_reqsql جداول membership رو به دیتابیسم اضافه کردم. در این حالت دیتابیس من هم شامل جداولی هست که خودم ایجاد کردم و هم جداول membership هست. بعد از این مرحله یک script از تمام دیتابیس گرفتم و اون رو در هاست اجرا کردم. زمانیکه دیتابیس هاست رو بررسی کردم تمام جداول membership و جداول خودم و تمام اشیای پایگاه داده وجود داره.
در ضمن من از net 3.5 استفاده می کنم.

Javad_Darvish_Amiry
چهارشنبه 20 بهمن 1389, 13:22 عصر
بعد از این مرحله یک script از تمام دیتابیس گرفتم و اون رو در هاست اجرا کردم.
یه سوال: آیا قبل از این که این اسکریپت رو اجرا کنید باز هم از شماورژن ایراد میگیره؟
بعد از اجرای این اسکریپت همونطور که تو پست قبلی خدمتتون توضیح دادم تمام اشیاء پایگاه پاک میشن و دوباره ساخته میشن و مثل اینه که اصلا از aspnet_regsql استفاده نکرده باشید. درسته، وقتی شما چک میکنید جداول رو میبینید. اما اون جداول، با اسکریپت ایجاد شدن نه با ابزار رگ. شما این مورد رو مشخص کنید. اگه قبل از اجرای اسکریپت باز هم از شماورژن ایراد می گیره، باید اشکال از جای دیگه ای باشه که باید دنبال اون بگردیم.
اما بازم عرض می کنم، تو همچین شرایطی که شما میخواید رکورد های لوکال رو به هاستینگتون منتقل کنید، بهتره به جای اسکریپت (که مشکلات اینجوری همراهش هست) از بک-آپ استفاده کنید.
(لطفا نتیجه رو اطلاع بدید. برای خودمم جالب شده که اشکال از کجاست). موفق باشید.
***
راستی این هم میتونه اتفاق بیفته. برنامه تون دات نت 3.5 هست. ابزار رگ رو از کدوم پوشه اجرا کردید؟ اگه دات نت 4 نصب داشته باشید، ممکنه از ابزار اون استفاده کرده باشید. یعنی اگه از خط فرمان ابزار رو اجرا کنید، مال 4 اجرا میشه. در حالی که برای دات نت 3.5 باید از ابزار مربوط به دات نت 2 استفاده کنید.

شاهرخ عشایری
چهارشنبه 20 بهمن 1389, 14:11 عصر
بله. من هم از Backup و هم از Script استفاده کردم اما نشد. همچنین باید بگم که بعد از ایجاد جداول membership (استفاده از Asp_RegSql) اون رو در هاست اجرا می کنم.
اگر امکان داره یک بار مراحل انجام کار رو به صورت مختصر اما مرحله به مرحله عنوان کنید.
با تشکر

شاهرخ عشایری
چهارشنبه 20 بهمن 1389, 14:26 عصر
لازم به ذکر هست که من از پوشه v2.0.50727 این کار رو انجام میدم. (پوشه مربوط به asp_regSql)

Javad_Darvish_Amiry
چهارشنبه 20 بهمن 1389, 14:31 عصر
دوست عزیز سلام. خسته نباشید. ببینید، یک بار با دقت پست ها رو بخونید، و ببینید گیر کجاست. بنده خدمتتون دو سه بار عرض کردم اگه بعد از استفاده از رگ، اسکریپت رو اجرا کنید، پایگاه بر میگرده به حالت اول. یعنی انگار اصلا از رگ استفاده نشده. حالا شما یه زحمتی باید بکشی. اول جداول خودتونو ایجاد کنید، بعد از رگ استفاده کنید. و بدون اجرای اسکریپتی که میفرمایید، تو همین وضعیت، چک کنید ببینید باز ایراد میگیره یا نه. اصلا کاری به کار اسکریپت و رکورد های لوکال نداشته باشید. اینو اول مشخص کنید.
0- هر چیزی که تو پایگاه هست، پاک کنید. (یا بانک رو حذف و دوباره ایجاد کنید)
1- ایجاد جداول خودتون (با اسکریپت یا هر جور که خودتون راحتید). اگه میخواید اسکریپت بگیرید برای این مرحله، همه جداول و پروسیجر ها و ویو های مربوط به دات نت رو از بانک لوکال حذف کنید و بعد اسکریپت بگیرید و اون اسکریپت رو برای ایجاد اشیاء خودتون اجرا کنید. یادتون باشه، اگه قصد استفاده از اسکریپت در این مرحله رو دارید، اشیاء دات نت نباید تو اسکریپتتون باشن.
2- ابزار رگ رو اجرا کنید.
3- هیچ کار اضافه تری انجام ندید. ببینید تا اینجا چه اتفاقی افتاده. آیا ممبرشیپ کار میکنه یا باز هم اشکال میگیره.
تا این مرحله رو انجام بدید. و ببینید چی میگه.


له. من هم از Backup و هم از Script استفاده کردم اما نشد
از بک-آپ استفاده کردید یا اکسپورت؟ اینو مطمئن بشید.

شاهرخ عشایری
چهارشنبه 20 بهمن 1389, 15:08 عصر
با عرض سلام مجدد.
خدمتتون عرض می کنم که من به ترتیب کارهای زیر رو انجام دادم:

1: دیتابیس رو کلا حذف کردم
2: یک دیتابیس جدید ایجاد کردم
3: جداول مخصوص به خودم رو مجددا ایجاد کردم
4: asp_regSql رو اجرا کردم و دیتابیسی که در مرحله 2 ایجاد کرده بودم برای اون مشخص کردم
5: Connection_string رو بروز رسانی کردم
(توجه:تمام کارهای انجام شده فوق در دیتابیس لوکال انجام شده و هنوز اون رو به سرور منتقل نکردم)

سایت بصورت لوکال کار کرد!!!

Javad_Darvish_Amiry
چهارشنبه 20 بهمن 1389, 15:11 عصر
نه برادر من. رو لوکال که فرمودی از قبلم کار میکرد. رو سرور تست کن اینا رو.

شاهرخ عشایری
چهارشنبه 20 بهمن 1389, 15:34 عصر
بعد از کارهایی که ذکر کردم:
1: دیتابیس سرور رو پاک کردم و مجددا ایجاد نمودم
2: یک اسکریپت از database لوکال گرفتم و اون رو در سرور اجرا کردم

اما باز هم با پیغام زیر مواجه می شم

The 'System.Web.Profile.SqlProfileProvider' requires a database schema compatible with schema version '1'. However, the current database schema is not compatible with this version. You may need to either install a compatible schema with aspnet_regsql.exe (available in the framework installation directory), or upgrade the provider to a newer version.

Javad_Darvish_Amiry
چهارشنبه 20 بهمن 1389, 16:12 عصر
: یک اسکریپت از database لوکال گرفتم و اون رو در سرور اجرا کردم
برادر بزرگوار من، لطفا نوشته ها رو با دقت بیشتری بخون. اسکریپت نه عزیزم. چندین بار خدمتتون توضیح دادم.

شاهرخ عشایری
چهارشنبه 20 بهمن 1389, 16:27 عصر
دوست عزیز، واقعا ازتون ممنونم. انشاا... از جوونیتون خیر ببینید.
درست شد.