PDA

View Full Version : مشکل اتصال با پایگاه sqlserver



radan63
پنج شنبه 18 اسفند 1384, 10:46 صبح
من برای اتصال از windows account استفاده کردم و رشته اتصالم را به این صورت نوشتم
server=localhost;trusted_connection=true;database= mydatabase;
ولی اشکال میگیرد login failed for user
وحالا اگر هم نام کاربر بدهم یه نه باز هم فرقی نمیکند.

taherbaghal
پنج شنبه 18 اسفند 1384, 10:48 صبح
باید با استفاده از دستورات رجیستری بری و از تو رجیستری نام سرور رو پیدا کنی و با جای نام سرورت قرار بدس
موفق باشید

hamed_bostan
پنج شنبه 18 اسفند 1384, 11:02 صبح
اولا احتمالا اسمسیستم خودت رو به user های دیتا بیس add نکردی دوم اینکه راحت تر اینه که شما همیشه به sa یک پسورد بدی و همیشه اینطوری استفاده کنی:
server=(local);uid=sa;pwd=yourpassword;database=da tabasename

M.kavyani
پنج شنبه 18 اسفند 1384, 11:07 صبح
میتونی مام سرور رو نیز نقطه(.) قرار بدی

karrabi
جمعه 19 اسفند 1384, 23:14 عصر
همیشه سعی کن در این طور موارد یکبار از ویزاردهای خود .net استفاده کنی. با کشیدن یک table که در پنجره server explorer ببین خود دات نت چه connection string می نویسه از اون استفاده کن.

M.kavyani
شنبه 20 اسفند 1384, 00:09 صبح
همیشه سعی کن در این طور موارد یکبار از ویزاردهای خود .net استفاده کنی. با کشیدن یک table که در پنجره server explorer ببین خود دات نت چه connection string می نویسه از اون استفاده کن.
دوست عزیز اون ConnectionString که ساخته میشه رو چه جوری میخوای تغییر بدی؟؟:متفکر:

meh_secure
شنبه 20 اسفند 1384, 00:23 صبح
این نوع کانکشن استرینگ ها read only هستند. اما فکر می کنم منظورش این بود که ببینی شکل کانکشن استرینگی که توسط ویزارد ها ساخته میشه چجوریه و از اون در کانکشن استرینگ خودت استفاده کنی.

HO457
شنبه 20 اسفند 1384, 00:24 صبح
به نظر من اصلا" ویزارد خود دات نت برای دیتابیس چیز جالبی نیست، خودت کد بنویسی بهتره، ولی میتونی از اون کانکشن استرینگ که ویزارد تولید کرده استفاده کنی توی کدت.

M.kavyani
شنبه 20 اسفند 1384, 00:32 صبح
به نظر من اصلا" ویزارد خود دات نت برای دیتابیس چیز جالبی نیست، خودت کد بنویسی بهتره، ولی میتونی از اون کانکشن استرینگ که ویزارد تولید کرده استفاده کنی توی کدت.
خوب زمانی که کانکشن استرینگ Readonly باشه مشکل تولید میکنه. بهتره که همون کد بنویسیم
در حالی که ویزارد های 2005 خیلی قدرتمند هستند.

meh_secure
شنبه 20 اسفند 1384, 00:39 صبح
بله کد بهتره. منتها حرف دوستمون این بود که کانکشن استرینگ استاندارد رو با استفاده از ویزاردها تولید کنیم بعد از اون در کدهای خودمون استفاده کنیم.

M.kavyani
شنبه 20 اسفند 1384, 10:54 صبح
باید با استفاده از دستورات رجیستری بری و از تو رجیستری نام سرور رو پیدا کنی و با جای نام سرورت قرار بدس
موفق باشید
با سلام
شما میتونید در Command Prompt عبارت hostName را تایپ کنید تا نام سرور رو به شما بدهد.

M.kavyani
شنبه 20 اسفند 1384, 10:57 صبح
من برای اتصال از windows account استفاده کردم و رشته اتصالم را به این صورت نوشتم
server=localhost;trusted_connection=true;database= mydatabase;
ولی اشکال میگیرد login failed for user
وحالا اگر هم نام کاربر بدهم یه نه باز هم فرقی نمیکند.
دوست عزیز کم پیدایی. آیا مشکلت حل شده؟
آیا از SQL استفاده می کنی؟ آگر بله از کدام نسخه و ویرایش( هر چند که تفاوتی نمی کند ولی تجربه....)
در پناه حق موفق و کامروا باشید

taherbaghal
شنبه 20 اسفند 1384, 12:55 عصر
دوست عزیز بهترین راه اینه که کنکشن استرینگتو خودت بسازی چون اگر اسم سرور رو بنویسی ممکن روی سیستم دیگه ای که برنامه رو اجرا میکنی اسم سرور همون نباشه و هیچوقت هم از . بجای نام سرور استفاده نکنید وبرای اینکه اسم سرور رو بصرت دینامیک پیدا کنی تنها یک راه وجود داره اونم خوندن نام سرور از رجیستری هستش
موفق باشید

M.kavyani
شنبه 20 اسفند 1384, 14:07 عصر
دوست عزیز بهترین راه اینه که کنکشن استرینگتو خودت بسازی چون اگر اسم سرور رو بنویسی ممکن روی سیستم دیگه ای که برنامه رو اجرا میکنی اسم سرور همون نباشه و هیچوقت هم از . بجای نام سرور استفاده نکنید وبرای اینکه اسم سرور رو بصرت دینامیک پیدا کنی تنها یک راه وجود داره اونم خوندن نام سرور از رجیستری هستش
موفق باشید
آها. تازه متوجه منظورت شدم.
خوب دوست عزیز ما برای اینکار یه بخش در نظر میگیریم که کار بر بتونه خودش نام سرور مورد نظرش رو وارد کنه چون ممکنه بیش از یک سرور روی سیستم باشه. بخش تنظیمات در VS2005 گزینه مناسبی برای اینکار است.

taherbaghal
شنبه 20 اسفند 1384, 15:24 عصر
بدترین راه رو انتخاب کردین
چون نام سرور رو نمیتونید یک استرینگ بگیرید
شما میتونید نام سرور فعال رو از رجیستری بخونید

karrabi
شنبه 20 اسفند 1384, 15:41 عصر
از اینکه هوای من رو داشتید ممنونم
بله منظور من این بود که از شکل اون کانکشن استرینگ برای نوشتن کدهای خودمون استفاده کنیم.

M.kavyani
شنبه 20 اسفند 1384, 19:59 عصر
بدترین راه رو انتخاب کردین
چون نام سرور رو نمیتونید یک استرینگ بگیرید
شما میتونید نام سرور فعال رو از رجیستری بخونید
چرا نمیشه String گرفت؟؟؟
:متفکر:

meh_secure
شنبه 20 اسفند 1384, 23:48 عصر
من با استرینگ می گیرم. شما اگه مثالی در رابطه با رجیستری داری مارو بی نصیب نزار.

taherbaghal
یک شنبه 21 اسفند 1384, 09:53 صبح
دوست عزیز آخه این چه کاریه که اسم سرور رو ازکاربر بخای اومدیم و کاربر اصلاٌ از این چیزا چیزی نمیدونست اون وقت چی؟ برنامت باگ میگیره و یه نقص بزرگ برای برنامته دوماٌ اگر اسم سرور رو عوض کرد چی؟ اگر سرور فعال عوض شد چی؟ و.............................
Dim regver As RegistryKey
Dim value As String
value = "SOFTWARE\\Microsoft\\MSSQLServer\\MSSQLServer"
regver = Registry.LocalMachine.OpenSubKey(value, False)
Me.SqlConnection1.ConnectionString = "workstation id=" + regver.GetValue("DefaultDomain", 0) + ";packet size=4096;integrated security=SSPI;data source=" + regver.GetValue("DefaultDomain", 0) + ";persist security info=False;initial catalog=Database_Name"
اگر تنظیمات SQl شما متفاوت بود مثلاٌ اندازه پکیج و .... میتونید اونها رو تغییر بدید
موفق باشید

M.kavyani
یک شنبه 21 اسفند 1384, 13:25 عصر
دوست عزیز آخه مبحث اینجاست که میشه روی یک سیستم در آن واحد N تا سرور فعال وجود داشته باشه. همین الان روی سیستم من دوتا سرور فعال وجود داره یکی با نام Mohsen و دیگری با نام Kavyani . حالا منظورت از سرور فعال چیه؟( هنوز روی کدت کار نکردم).

taherbaghal
یک شنبه 21 اسفند 1384, 13:47 عصر
منظور من از سرورفعال اون سروری است که اطلاعات فروت رو از اون میخونی چون توی ممکنه توی یه فرم چند کنکشن داشته باشی میتونی برای هر کدوم این کد رو استفاده کنی
من توی تمام برناه هام از ای کد استفاده میکنم مطمئن باش جواب میده

M.kavyani
یک شنبه 21 اسفند 1384, 14:22 عصر
دوست عزیز مشکل اساسی اینجاست که من منظورت رو در مورد سرور های فعال متوجه نمیشم میشه کمی در این مورد توضیح بدی؟؟
شرمنده

meh_secure
یک شنبه 21 اسفند 1384, 14:27 عصر
من هیچ وقت اجازه نمیدم که کاربر نام سرور رو وارد کنه و اونو به مدیر سیستم یا شبکه واگذار می کنم.

M.kavyani
یک شنبه 21 اسفند 1384, 14:35 عصر
من هیچ وقت اجازه نمیدم که کاربر نام سرور رو وارد کنه و اونو به مدیر سیستم یا شبکه واگذار می کنم.
با سلام
با تشکر از توجه شما دوستان. این تایپک برام جالب شده.( شایدبه خاطر اینه که موضوع رو نمیگیرم). خوب مهدی جان این یک قانو است. عموما" کابران با این کار ها سر و کار ندارند و پیکر بندی رو برنامه نویس و یا ادمین شبکه انجام میدهند و هنگامی که برنامه اجرا میشه User با دادن پسورد وارد برنامه میشه.

meh_secure
یک شنبه 21 اسفند 1384, 14:40 عصر
درسته. کاربر نباید اسم سرور رو بدونه یا رمز بانک و ... اینها فقط به عهده مدیر هستش.

taherbaghal
یک شنبه 21 اسفند 1384, 14:57 عصر
منظور من از سرور فعال اون سروری است که شما توی فرمتون اطلاعات رو از بانکی توی اون میخونید البته ممکنه بگید ممکنه یه فرم چند کانکشن داشته باشه که هرکدوم به یه سرور جدا وصلن بای این جور مواقعهم باید برای هر کانکشن جداگانه توی رجیستری بگردی
این مساله به نظرم خیلی سادس چرا دارید اینقدر پیچیدش میکنید با عناوین های مختلف
:متفکر: