PDA

View Full Version : مشکل در ارتباط با SQL Server 2005



mermaid
سه شنبه 29 خرداد 1386, 14:23 عصر
امیدوارم تالار مناسبی رو برای پرسیدن سوالم انتخاب کرده باشم!

باید توضیح مفصلی بدم تا مشکلم رو مشخص کنم ، اشکالی نداره؟! :لبخند:

خب ، ما اینجا یه اینترانت داخلی داریم ، صفحات با ASP3.0 نوشته شده اند و از بانک اطلاعاتی SQL Server 2000 استفاده می کنیم ... تا اینجا مشکلی نیست ...

برای انجام یک عملیات خاص ، لازم شده که ما به یه بانک دیگه که روی سرور جداگانه ای موجود هست متصل بشیم ، این بانک SQL Server 2005 هست .... مشکل اینجاست! ما با دسترسی Win NT (یعنی بدون Username و Password مربوط به SQL Server) سرور جدید رو روی Enterprise Manager (ورژن 2000) اضافه کردیم ... بگذریم که به دلایل امنیتی دسترسی ما محدود تعریف شده و فقط به اطلاعات یکی از بانک ها و آنهم فقط یکی از جداولش دسترسی داریم ...

حالا مشکل من اینه :

با تعریف Connection که در زیر شبیه سازیش می کنم ، با خطایی که در زیرش آوردم برخورد می کنم:



dbcon.Open "PROVIDER=SQLOLEDB;DATA SOURCE=New-Server-Name;Integrated Security=SSPI;DATABASE=DB-NAME"


خطای مربوطه :


Microsoft OLE DB Provider for SQL Server error '80004005'
[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied


خب .... آقایان و خانمهای اهل فن، نظری نبود؟!:چشمک:

MAiLDEREMi
جمعه 01 تیر 1386, 18:09 عصر
فکر می کنم نیازی به توضیح نداشته باشه ولی برای بعضی ها که از این موضوع خبر ندارند بگم که کلیپی از هک کردن ASP Admin که توسط SQL Injection انجام شده.


Simple ASP Administrator SQL Injection
http://str0ke213.tradebit.com/pub/8/21.swf


امیدوارم بدرتون بخوره

mermaid
شنبه 02 تیر 1386, 08:45 صبح
خیلی ممنون ... ولی این چه ربطی داشت به مشکل من؟!

mermaid
دوشنبه 04 تیر 1386, 15:30 عصر
هنوز کسی پیدا نشده یه نگاهی با این مشکل من بندازه؟!

(پست جدید زدم تا ببینید بعد از ۶ روز هیچ کس کمکی به من نکرده! چقدر این سایت سوت و کور شده!)

azmoodeh
دوشنبه 04 تیر 1386, 15:45 عصر
خوب اینکه مسلمه که شمت نمی تونید به پایگاه داده روی سرور دیگه وصل بشید و احتمال زیاد از طرز نوشتن ConnectionString هست . پارامتر هایی که استفاده کردید درسته ولی باید دید چجور نوشتینش ، Syntaxهم مهمه که شما به دلال امنیتی ننوشتید . شماره پورت اتصال هم اگه اشتباه نکنم باید برای SQL Server2005 بنویسید چون فکر می کنم تغییر کرده.
چک کنید ببینید با telnet میتونید به پورت سرویس دهنده SQL Server روی کامپیوترتون وصل بشید. کاربر دیتابیس روی اون سرور تعریف کنید و ببینید با User های دیتابیس می تونید وصل بشید.خلاصه خیلی دلایل می تونه داشته باشه که ننوشتن شفاف ConnectionString مزید علت میشه برای جلوگیری از نزدیک شدن به علت خطا !!!

موفق باشید

mermaid
دوشنبه 04 تیر 1386, 15:59 عصر
خب... سعی می کنم شفاف سازی کنم!

ما اینجا چند تا سرور داریم... یکی که صفحات روش نگهداری میشه! یکی که اینترانت نتیجه زحمات اونه (یعنی همون IIS ماست)، یکی روش بانکهای اطلاعاتی SQL Server 2000 قرار گرفته (یعنی روش SQL Server 2000 نصبه) یکی هم که همین غریبه تازه وارد نامتجانسه که SQL Server 2005 روش نصبه و بانک اطلاعاتی سیستم مالی شرکت روی اون سواره ...

ما روی سرور اصلی IIS یک سری dsn تعریف کردیم برای دسترسی به بانکها (البته ما نه ، اونا : بچه های واحد سخت افزار) ... برای سرور جدید هم اینکار انجام شده و ظاهرا در ایجاد dsn و برقراری ارتباط مشکلی نبوده ... ولی من از اون QueryString که نتیجه نگرفتم ، از این dsn جدید هم ایضا تحویل گرفته نشدم ...

درباره اون پورت SQL بیشتر توضیح بدید ، شاید اون بتونه کمکی بکنه! در مورد TelNet هم ، نمنه؟!؟!؟!؟ ... بیخیال! ما از این کارا بلد نیستیم!

azmoodeh
دوشنبه 04 تیر 1386, 16:16 عصر
خوب
گفتید که dsn جواب نداد ؟!؟!؟ عجیبه
برای 2005 موقع درست کردن dsn باید درایوری که انتخاب می کنید SQL native client باشه هاااااا

نباشه ایراد میده . این درایور هم باید روی کامپیوتر IIS تون موجود و نصب باشه

احتمال زیاد از اینه.
یه تست کنید

mermaid
دوشنبه 04 تیر 1386, 16:20 عصر
ببخشید من اینقدر مزاحم میشم!

این درایورشو باید از کجا گیر آورد و چه جوری نصب کرد ؟! می دونید؟! (آخه این بچه های سخت افزار اگر بهشون کامل توضیح ندی تحویل نمی گیرن یا میزنن یه چیزی رو خراب می کنن!)

azmoodeh
دوشنبه 04 تیر 1386, 16:26 عصر
با نصب 2005 خودش نصب میشه ، اما اگر جداگونه بخواید نصب کنید
فکر می کنم لینک زیر بتونه کمک کنه
http://download.microsoft.com/download/f/7/4/f74cbdb1-87e2-4794-9186-e3ad6bd54b41/sqlncli.msi

موفق باشید

mermaid
دوشنبه 04 تیر 1386, 16:30 عصر
مرسی ... چون خیلی کمک کردی همه اش ازت تشکر کردم ... تو هم موفق باشی ;)

azmoodeh
دوشنبه 04 تیر 1386, 16:34 عصر
ممنون ، حالا درست شد یا نه؟

mermaid
دوشنبه 04 تیر 1386, 16:39 عصر
والا نمی دونم ! چون باید فردا بدم بچه های سخت افزار اینو روی سرور نصب کنن ببینیم دست میشه یا نه! (نمی دونم چرا همه چی یه سرش به اینا وصل میشه!)

اگر نتیجه بگیرم (یا نگیرم!) حتما اینجا میگم تا برای بقیه درس عبرتی بشه :D

mermaid
یک شنبه 17 تیر 1386, 15:51 عصر
اومدم بگم تا برای بقیه درس عبرت بشه :D

مشکلم حل نشده! :( همچنان دارم تلاش می کنم دستم رو به یه جایی بند کنم!

Azmoodeh عزیز ... اومدی یه پست کوچیک اینجا بزن من مشکلم رو توضیح بدم...
(بقیه که تحویل نمی گیرن!)

sarasara
یک شنبه 14 مرداد 1386, 13:20 عصر
Provider برایSQL Native Client OLE DB به صورت زیر تعریف می شه:

Provider=SQLNCLI;Server=myServerAddress;Database=m yDataBase;Uid=myUsername;Pwd=myPassword;

majid.nozad
پنج شنبه 25 مرداد 1386, 20:46 عصر
آیا شما میتونید یه sql server رو سیستمتون بزنید و اون سرور رو تو سیستم خودتون رجیستر کنید ؟ اینجوری معلوم میشه که شما اصلا میتونید به این SQL server وصل بشید یا نه .
من معمولا sql هایی رو که از سرور های مختلف خریداری میکنم رو sqlserver خودم اول رجیسترش میکنم ، یعنی با SQL خودم چک میکنم که میتونم بهش وصل بشم یا نه

mermaid
چهارشنبه 30 آبان 1386, 11:28 صبح
سلام دوستان!

من یه مدتی سرم گرم پایان نامه بود نیومده بودم تو سایت...

از راهنمایی هایی که توی این مدت کردید ممنونم ;) دوست دارم این بحث به نتیجه برسه چون هنوز که هنوزه امکان برقراری ارتباط به سرور موردنظر وجود ندارد... از طرفی اگرچه فرآیند ماست مالیزاسیون برای مدتی سبب تاخیر در اجرای سیستم فوق گردید، لیکن امروز مدیر محترم با تحکم فراوان به اینجانب گفتند یا این سیستم رو اجرا می کنی یا بساطتو جمع می کنی با پای خودت از شرکت میری بیرون! ... بگذریم (اینو گفتم که بدونید قضیه چقدر حیاتی شده!)

آهان ... باید یه بار دیگه صورت مساله رو بازبینی کنید، چون پس از بررسی های پرسنل محترم واحد سخت افزار، مشخص شد چشماشون آلبالو گیلاس چیده و ورژن SQL Server فوق ۲۰۰۵ نیست، همون 2000 هستش!


Provider برایSQL Native Client OLE DB به صورت زیر تعریف می شه:

Provider=SQLNCLI;Server=myServerAddress;Database=m yDataBase;Uid=myUsername;Pwd=myPassword;

سارا جان، ممنون از راهنماییت .. همونطور که گفتم پس از کشتی گرفتن بسیار با انواع ConnectionString مربوط به SQL Server 2005 ملتفت شدیم که Server مزبور 2000 هستش!
الان Connection String زیر رو استفاده می کنم (همه تنظیمات از قبیل نام کاربری، رمز عبور ، نام سرور و ... درسته):


Provider=SQLOLEDB.1;Password=12345;Persist Security Info=True;User ID=mermaid;Initial Catalog=mali_system;Data Source=Mali_SQL

اینم مال dsn هستش که خدا رو شکر هیچ کدوم جواب نمیدن:

dbcon.open ("dsn=mali_dsn"),"mermaid","12345"



آیا شما میتونید یه sql server رو سیستمتون بزنید و اون سرور رو تو سیستم خودتون رجیستر کنید ؟ اینجوری معلوم میشه که شما اصلا میتونید به این SQL server وصل بشید یا نه .
من معمولا sql هایی رو که از سرور های مختلف خریداری میکنم رو sqlserver خودم اول رجیسترش میکنم ، یعنی با SQL خودم چک میکنم که میتونم بهش وصل بشم یا نه

دوست عزیز

منظورت از رجیستر احتمالا همون اتصال هستش درسته؟! بله با Enterprise می تونم بهش متصل بشم، البته بعد از اینکه یک yes محکم به این پیغام میدم:


The SQL Server \\Mali_SQL is not known to be running. Are you sure you wish to connect?

اگر در جواب این سوال Yes بزنم به سرور متصل میشه بدون مشکل(از قبیل عدم دسترسی یا نداشتن مجوز...)

راستی خطایی هم که در کد ASP دریافت می کنم رو اینجا میذارم، شاید برای کسی آشنا باشه:


Microsoft OLE DB Provider for SQL Server error '80004005'

[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied

آهان این رو هم بگم... در سایت مایکروسافتوقتی دنبال علت بروز این خطا بودم نوشته بود این خطا هیچ ارتباطی به نداشتن دسترسی یا مجوز نداره! بعدش یه عالمه توضیح داده بود که من فقط بهشون لبخند زدم، چون احساس کردم از سطح فهم بنده یه کمی بالاتره :D


من مطمئنم اینجا بچه های با سابقه و تکنیکی فراوون هستند، فقط چون سرشون شلوغه حال ندارن جواب بدن... بابا راه دوری نمیره که! شاید منم یه روز توی PHP بهتون کمک کردم!

کمکم کنید، منم قول میدم زیاد مسخره بازی در نیارم!