View Full Version : attach کردن بانک به برنامه
bahar2008
جمعه 11 مرداد 1387, 16:15 عصر
سلام به همه دوستان خوبم
من فایل exe برنامم رو ساختم و برای اینکه بانکها رو atach کنم اول sql server رو نصب می کنم و بعد بانکهام رو بهش atach می کنم ولی در این حالت کاربر اگر این راه رو برای attach کردن برود می تواند به بانک ها دسترسی داشته باشه و می تونه بانکها رو تغییر یا ویرایش کنه :ناراحت::ناراحت::ناراحت::نار حت:
می خواستم بدونم آیا کدی وجود داره که در برنامه قرار بدم تا خود برنامه بانکها رو attach کنه و این کد رو در کجای برنامه باید قرار بدم ؟( در ماژول باید بنویسم یا در لود فرم برنامه؟)
سوال دیگه ای هم که داشتم اینه که در کد برنامه حتما باید مسیر بانکها رو بهش بدم یا بدون مسیر هم می شود بانکها رو attach کرد؟(آخه هر دفعه که کاربر برنامه رو از روی cd کپی می کنه که مسیر بانکها عوض می شه :ناراحت: )
ممنون می شم از دوستان گلم که کمکم کنند تا بتونم با استفاده از کد نویسی بانکهای برنامم رو attach کنم :قلب::قلب::قلب::قلب:
__H2__
شنبه 12 مرداد 1387, 01:24 صبح
سلام
برای attach کردن اجرای تک دستور ساده زیر کافیست.
EXEC sp_attach_db
@dbname = N'DatabaseName',
@filename1 = N'mdf-Filepath',
@filename2 = N'ldf-FilePath' ;
که میتوانید آن را یکبار، در زمان setup یا اولین اجرای برنامه در خود VB عملی کنید.
و میتوانید فقط به نصب هسته اصلی اجرایی SQL بسنده کنید، تا دیگر کسی نتواند دستکاری خارج از برنامه انجام دهد.
اگر هم برنامه تان میخواهید قابل حمل و اصطلاحاً پرتابل باشد، بهتر است از نسخه sqlexpress استفاده کنید، این نسخه کوچک و جمع و جور توانایی کار با دیتابیس بدون attach متعارف را دارد.
bahar2008
شنبه 12 مرداد 1387, 10:59 صبح
يعني اگر من موقع نصب برنامه sql server مربوط به خود visual studio رو جزو برنامه هاي نصبي قرار بدم و اين كد رو در برنامم بنوبيسم بانكها به راحتي attach مي شن؟
آخه مي خوام نرم افزاري باشه كه كاربر كار اضافي به جز نصب برنامه انجام نده
ali_md110
شنبه 12 مرداد 1387, 14:57 عصر
به نظر من یک کپی از فایل mdf و فایل ldf بانک اسکیول رو به پوشه bin واقع در مسیر برنامتون در کامپیوتر خودتون بگیرید و کانکشن استرینگ برنامتون رو بر اساس کد زیر توی کل برنامون بکار ببرید
Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|Data.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True
و این دوفایل رو در پکیج برنامه نصب قرار دهید
اگر از اسکیول اکسپرس استفاده کنید مناسبتر است
میتونید از این مسیر هم استفاده کنید و بانک رو توی مسیر زیر کپی کنید: \bin\Debug
Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\bin\Debug\Data.MDF;Integrated Security=True;Connect Timeout=30;User Instance=True
__H2__
شنبه 12 مرداد 1387, 23:16 عصر
سلام
يعني اگر من موقع نصب برنامه sql server مربوط به خود visual studio رو جزو برنامه هاي نصبي قرار بدم و اين كد رو در برنامم بنوبيسم بانكها به راحتي attach مي شن؟
آخه مي خوام نرم افزاري باشه كه كاربر كار اضافي به جز نصب برنامه انجام نده
شما میتوانید هر نسخه ای را خواستید نصب کنید، و express هم مشکلی ندارد.
برای اجرای دستوری که من گفتم و attach شدن دیتابیس هم کافیست بعد زا اتمام نصب و کپی فایلهای اصلی mdf و ldf یک نمونه SqlConnection بسازید (بدون نام دیتابیس) و بعد هم SqlCommand و در آخر دستور SQL فوق را هر کجا دوست داشتید اجرا کنید.
البته روش کاربر ali_md110 هم با حصول شرایط بد نیست.
این روش فقط روی نسخه express جواب میدهد و نسخه های دیگر SQLServer آن را ساپورت نمیکنند.
اگر برنامه تان تک نمونه ای و غیر شبکه ای ( و زیر 2G دیتا دارد !!!!!؟) استفاده از ConnectionStriing ای که کاربر ali_md110 گفتند شاید کارتان را راه بیاندازد.
این شیوه دیتابیس SQLServer را مثل یک دیتابیس Jet یا همان Access در دسترس قرار میدهد.
در کل معیار اصلی اجرای این روش، عدم نیاز به کار کرد شبکه ای است.
موفق باشید.
pouyalatif
یک شنبه 20 مرداد 1387, 13:13 عصر
سلام
اگه میخوان زمان نصب بانک رو به Sql اضافه کنی .میتونی از نرم افزار Setup سازی مثل InstallShield استفاده کنی. این نرم افزار این قدرت رو به تو میده که بانکتو تبدیل به اسکریپت کنی. بعد در هنگام نصب نرم افزار ازت میخواد تا فقط با بانک اطلاعاتی ارتباط برقرار کنی. تمام مراحل ساخت و افزودن بانک اطلاعاتی را به Sql خودش به صورت اتوماتیک انجام میده.
bahar2008
چهارشنبه 23 مرداد 1387, 18:45 عصر
من کدی که گفتید که به هر 2 صورت در برنامم قرار دادم ولی هیچ کدومش جواب نداد :ناراحت: :ناراحت:
آیا باید تغییرات دیگه ای هم بدم تا کار کنه یا اینکه محل گذاشتنش اشتباهه؟ :ناراحت:
من کد attach رو در جایی قرار دادم که قرار هست در برنامه فقط 1 بار اجرا بشه و به صورت زیر نوشتمش
Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
If TextBox1.TextLength = 0 Or TextBox2.TextLength = 0 Or TextBox3.TextLength = 0 Or TextBox4.TextLength = 0 Or TextBox5.TextLength = 0 Then
MessageBox.Show("لطفا اطلاعات را كامل وارد کنید ")
ElseIf TextBox4.Text <> TextBox5.Text Then
MessageBox.Show("تكرار رمز عبور اشتباه است ")
Else
Dim cn As New SqlClient.SqlConnection
cn.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=I:\\project_d ata;Integrated Security=True;User Instance=True"
Dim cmd As New SqlClient.SqlCommand
cn.Open()
cmd.Connection = cn
cmd.CommandType = Data.CommandType.Text
و یکی هم به این صورت نوشتم
Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
If TextBox1.TextLength = 0 Or TextBox2.TextLength = 0 Or TextBox3.TextLength = 0 Or TextBox4.TextLength = 0 Or TextBox5.TextLength = 0 Then
MessageBox.Show("لطفا اطلاعات را كامل وارد کنید ")
ElseIf TextBox4.Text <> TextBox5.Text Then
MessageBox.Show("تكرار رمز عبور اشتباه است ")
Else
Dim cn As New SqlClient.SqlConnection
cn.ConnectionString = "Data Source=(local);Initial Catalog=project;Integrated Security=True"
Dim cmd As New SqlClient.SqlCommand
cn.Open()
cmd.Connection = cn
cmd.CommandType = Data.CommandType.Text
cmd.CommandText = "EXEC sp_attach_db @dbname,@filename1,@filename2"
cmd.Parameters.Add("@dbname", SqlDbType.VarChar, 260).Value = "project"
cmd.Parameters.Add("@filename1", SqlDbType.VarChar, 260).Value = "I:\\project_data.mdf"
cmd.Parameters.Add("@filename2", SqlDbType.VarChar, 260).Value = "I:\\project_log.mdf"
cmd.ExecuteNonQuery()
cmd.CommandText = " INSERT INTO [user](id,name,vahed,pass1,pass2)VALUES(@TextBox1,@TextB ox2,@TextBox3,@TextBox4,@TextBox5)"
cmd.Parameters.AddWithValue("textbox1", Me.TextBox1.Text)
cmd.Parameters.AddWithValue("textbox2", Me.TextBox2.Text)
cmd.Parameters.AddWithValue("textbox3", Me.TextBox3.Text)
cmd.Parameters.AddWithValue("textbox4", Me.TextBox4.Text)
cmd.Parameters.AddWithValue("textbox5", Me.TextBox5.Text)
cmd.ExecuteNonQuery()
MessageBox.Show("اطلاعات با موفقیت به ثبت رسید ")
cn.Close()
ولی هیچ کدوم از این حالت ها درست اجرا نشد و موقع اجرای برنامه خطا می داد که نمی تونم به بانک project وصل بشم :ناراحت:
morteza_261
چهارشنبه 23 مرداد 1387, 19:33 عصر
سلام
منم خیلی با کدها بازی کردم
اما به هیچ طریقی نتونستم استفاده کنم
اگه امکان داره یه سورس بزارید
bahar2008
چهارشنبه 23 مرداد 1387, 19:48 عصر
فکر می کنم نرم افزار install shiel این همه دردسر نداشته باشه چون تعریفش رو توی همین انجمن زیاد شنیدم :متفکر:
کسی لینک دانلودش رو داره؟؟؟
ali_md110
چهارشنبه 23 مرداد 1387, 21:03 عصر
یه مثال پروژه نصب حتما بدرتت میخوره
باید ابتدا بانک برنامت رو بصورت اسکریپت اسکیول تبدیل کنی و بزاری تو برنامت وقتی شروع به نصب بکنی بانک و جداول رو برات نصب میکنه
bahar2008
پنج شنبه 24 مرداد 1387, 14:15 عصر
ممنونم از لطفت دوست عزیز :قلب::قلب::قلب:
این راه رو هم امتحان می کنم ببینم جوابی می ده یا نه :اشتباه:
__H2__
پنج شنبه 24 مرداد 1387, 23:49 عصر
سلام
از دوستان بابت عدم سر زدن به سایت و پاسخ به موقع عضر خواهی میکنم.
متاسفانه معمولاً باید به علت تاخیر در سر زدن و جواب شرمنده دوستان بشوم!
ولی خوشبختانه دستم پر است.
من یک نمونه برای سایت دیگری حاضر کرده بودم، دوستان میتوانند دانلود کنند و ببینند.
نمونه بانک را attach و detach میکنید و میتواند یک Login بسازد و یا Login را حذف کند.
در پروژه نمونه یک dll هم وجود دارد، که اصلاً مهم نیست و فقط از یک کنترلرش برای اماکن ویرایش ConnectionString در runtime توسط کاربر استفاده شده و مطلقاً ربطی به ذات کد ندارد.
البته برای کار کردن قسمت Login باید اعتبار سنجی sqlserver را روی sqlserver and windows ست کنید.
ولی بخش attach در هر شرایط باید کار کند.
متن دستورات SQL را به صورت مجتمع در زیر میتوانید ببینید:
Project->ProjectName Properties->Resources
(ارتفاع سطرها را با ماوس بزرگ کنید، تا دستورات واضح تر دیده شوند.)
دیتابیس نمونه را در ریشه درایو D کپی کنید و اول دکمه Attach و بعد هم CreateLogin و در آخر TestConnectionWithLogin را کلیک کنید.
www.h02.ir/Download.aspx?File=Temp\SqlDatabaseInstall.zip (http://www.h02.ir/Download.aspx?File=Temp\SqlDatabaseInstall.zip)
سعی میکنم حتماً در دو سه روز آینده، مدام سر بزنم تا سوالات احتمالی را جواب دهم.
مجدداً عضر خواهی میکنم و موفق باشید.
bahar2008
دوشنبه 28 مرداد 1387, 09:43 صبح
h2 عزيز ممنون از نمونه پروژه اي كه گذاشتي ولي نيم دونم چرا هر چي مسير ديتا بيس ها رو ردست بهش مي دم و نام ديتا سرور رو هم درست ميدم و دكمه attach رو مي زنم پيغام خطا مي ده كه ديتا بيس ها رو پيدا نكرده :ناراحت:
چند بار در جاهاي مختلف ديتابيس ها رو كپي كردم و آدرس درست رو بهش دادم ولي باز هم پيغام خطا مي ده كه فايل mdf رو پيدا نكرده :ناراحت:
bahar2008
دوشنبه 28 مرداد 1387, 09:57 صبح
مشكل ديگه هم كه داره اين هست كه فايل sln برنامه وجود نداره و وقتي هم مي خوام با open project برنامه رو باز كنم پيغام خطا مي ده و باز نمي كنه :ناراحت: و مجبورم كدها رو با استفاده از note pad ببينم :اشتباه:
bahar2008
دوشنبه 28 مرداد 1387, 10:36 صبح
ali_md110 عزيز من برنامه شما رو هم اجرا كردم ولي موقعي كه مي خوام اجراش كنم پيغام خطا مي ده ....البته يك فايل install هم وجود داشت در پروژه شما كه توي visual studio باز مي شد و موقعي كه اجرا مي زدم پيغام خطا مي داد :ناراحت:
ali_md110
دوشنبه 28 مرداد 1387, 13:44 عصر
شما برنامه رو باز کنید و پروژه نصب موجود در اون رو حذف کنید و سپس یک پروژه جدید نصب از طریق FILEو سپس ADD و NEW PROJECT , و OTHER project و setup And deployment اضافه کنید به پروژه
در قسمت Application Folder پروژه نصب کلیک راست کرده ADD رو بزنید PROJECT OUTPUT رو انتخاب و گزینه PRIMARY OUT PUT رو انتخاب و به پروژه اضافه کنید حالا از طریق منوی BUILD گزینه BUILD SOLUTION یا گزینه BUIELD SETUP1 رو یزنید SETUP1 نام پروژه نصب هستش پس از کامپایل با کلیک راست بر رو ی پروژه نصب و انتخاب INSTALL یک بانک با جداول به نام ASPState ساخته میشه
اگر دقت کنید دو فایل TXT به نام inatall.txt و uistall.txt در پروژه وجود داره اینها همون اسکریپتها هستند
شما پس از ساخت اسکریپت بانکتون در mangmet یا sql query Aalizer اونها
رو بنام همین دو فایل install , unistall یکی برای نصب یکی برای جذف میسازید و جایگزین میکنید اگر بر روی فایل ScriptInstall.vb در پروژه کلیک راست و کد ها رو ببینید خودتون متوجه میشید
من استفاده کردم خیلی خوب جواب داده
اگر باز هم مشکلی هست پیا م بده
در ضمن شما اگر پروژه رو run کنید این خطا رو میده
A project with an Output Type of Class Library cannot be started directly.
In order to debug this project, add an executable project to this solution which references the library project. Set the executable project as the
A project with an Output Type of Class Library cannot be started directly.
In order to debug this project, add an executable project to this solution which references the library project. Set the executable project as the
این یک کلاس نصب هستش که واسط اجرایی مثل یک فرم نداره یعنی باید ابتدا یک پروژه نصب به اون اضافه کنید و کامپایل کنید و اون فایل ست اپ رو اجرا کنید فایل ست اپ رو هم توی پوشه setup1 یا هر اسم دیگه ای براش گزاشتی در پوشه Debug یا Relase قرار میگیره
میتونی همونطور که گفتم جهت تست بر روی پروژه نصب در سولوشن کلیک راست کنی و install رو بزنی
علت خطا در اجرا اینه
__H2__
دوشنبه 28 مرداد 1387, 15:41 عصر
سلام
h2 عزيز ممنون از نمونه پروژه اي كه گذاشتي ولي نيم دونم چرا هر چي مسير ديتا بيس ها رو ردست بهش مي دم و نام ديتا سرور رو هم درست ميدم و دكمه attach رو مي زنم پيغام خطا مي ده كه ديتا بيس ها رو پيدا نكرده
1- مطمئن شوید مسیر انتخابی مشکل مجوز دسترسی ویدوز را ندارد.
مثل Desktop و MyDocument و... که زیاد جالب نیستند.
پیشنهاد میکنم در root یک درایو مثل D تست کنید، ببینید جواب میدهد؟
2- از نسخه sqlserver2005 استفاده میکنید؟
3- مطمئن شوید هیچ Connection ای از هیچ جا از این فایلهای دیتابیس استفاده نمیکنند. همه برنامه ها را ببندید و تستی کنید.
4- از دیتابیس نمونه داخل خود برنامه استفاده کرده اید؟
.. فايل sln برنامه وجود نداره ..
نیست چون فایل vbproj وجود دارد. با vbproj کد را در vs باز کنید.
morteza_261
دوشنبه 28 مرداد 1387, 21:05 عصر
سلام
این برنامه برای sql2005 ؟؟؟
__H2__
سه شنبه 29 مرداد 1387, 00:06 صبح
سلام
این برنامه برای sql2005 ؟؟؟
اگر منظورتان برنامه ای بوده که من گذاشتم، باید بگویم من دستورات SQL را بر اساس مستندات نسخه 2005 تهیه کرده ام و احتمال دارد در 2000 جواب ندهد.
bahar2008
سه شنبه 12 شهریور 1387, 11:12 صبح
من تمام conection string ها رو در كل برنامم (حتي در app.config ) به اين صورت تغيير دادم و sql exprees رو همراه برنامه exe خودم گذاشتم ولي وقتي فايل exe رو در كامپيوتر ديگري اجرا مي كنم باز هم پيغام خطا مي ده كه بانك رو نمي شناسه :اشتباه: :ناراحت:
اين كد مربوط به app هست
<add name="project.My.MySettings.projectConnectionString" connectionString="Data Source=.\SQLExpress;AttachDbFilename=|DataDirector y|project_Data.MDF;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
اين كد مربوط به داخل خود برنامه هست كه در همه جاي برنامه به صورت زير به كار رفته
cn.ConnectionString = "Data Source=.\SQLExpress;AttachDbFilename=|DataDirector y|project_Data.MDF;Integrated Security=True;User Instance=True"
آيا كار ديگه اي هم لازمه كه انجام بدم؟:ناراحت:
__H2__
سه شنبه 12 شهریور 1387, 14:43 عصر
سلام
شما دارید از مکانیزم غیر attach نسخه express استفاده میکنید.
این باید همیشه و بدون attach جواب دهد.
- حتماً باید در مقصد نسخه SQLServer Express را نصب کنید.
- باید نسخه sqlserver در ram در حال اجرا باشد و به بیان دیگر با رایانه بالابیاید.
Start->ProgramFile->Microsoft SQL Server 2005->Configuration Tools->SQL Server Configuration Manager->SQL Server 2005 Services-> SQL Server (SQLEXPRESS)->RightClick->Property
{
->Log On tab->Start
->Service tab->Start Mode->Automatic
}
- دیتابیستان در محل فایلها باشد.
اگر مشکلتان حل شد و نتوانستید یک نمونه بگذارید تا از نزدیک تستش کنم.
bahar2008
چهارشنبه 13 شهریور 1387, 09:38 صبح
ممنونم از راهنماييتون دوست عزيز :قلب:
تمام نكاتي كه گفتيد رو چك كردم و درست مثل اوني بود كه شما گفتيد ولي بازم موقعي كه برنامه رو نصب مي كنم نمي تونه بانكها رو بشناسه و پيغام خطاي زير رو مي ده :ناراحت:
http://i36.tinypic.com/oityde.jpg (http://s4.tinypic.com/oityde.jpg)
sekhavat
جمعه 15 شهریور 1387, 00:28 صبح
در یک برنامه دات نت ، اولین بار که به بانک اطلاعاتی (Sql Server 2005) وصل می شویم ، حدود 10 تا 15 ثانیه برای اینکار زمان صرف می شود ، اما از بار دوم به بعد در مینیمم ثانیه این اتفاق می افتد ! در برنامه هایی شاهد بوده ام که با پیام "در حال اتصال به بانک اطلاعاتی" و سپس نمایش یک میله پیشرفت این مشکل را حل می کنند که بنظر من راه حل مطلوبی نیست. ولی در بعضی برنامه هم این مشکل حل شده است و از همان بار اول تاخيري وجود ندارد !!! اگر از این مسئله هم اطلاع دارید ممنون می شوم.
اين هم كد مورد استفاده من :
Public Connection As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DataBase.mdf;Integrated Security=True;User Instance=True")
Connection.Open()
cmdBackup.ExecuteNonQuery()
Connection.Close()
__H2__
جمعه 15 شهریور 1387, 12:47 عصر
سلام
تمام نكاتي كه گفتيد رو چك كردم و درست مثل اوني بود كه شما گفتيد ولي بازم موقعي كه برنامه رو نصب مي كنم نمي تونه بانكها رو بشناسه و پيغام خطاي زير رو مي ده
- ویندوزتان چیست؟
- آیا نرم افزار SQL Server Management Studio را دارید و یک تستی کنید ببینید چه دیتابیس هایی Attach شده اند.
http://www.microsoft.com/downloads/details.aspx?familyid=6053C6F8-82C8-479C-B25B-9ACA13141C9E&displaylang=en
البته جور دیگری هم میشود فهمید، هم با کد و هم با یک Connection جدید که در کامبو دیتابیس، دیتابیس های attach شده نشان داده خواهند شد.
چون خطای شما یک حدسی را هم روی تداخل نام با دیتابیس های موجود مطرح کرده.
- در آخر اگر میتوایند روی MyDocument تست نکنید.
برنامه را حداقل برای امتحان هم که شده در یک درایو مستقل و آزاد تست کنید، مثلاً ریشه یک درایو غیر C
بعد اگر انشا ا... کار کردف مذاکره میکنیم!!!!
من هم باز یک برسی میکنم و جواب میدهم.
در یک برنامه دات نت ، اولین بار که به بانک اطلاعاتی (Sql Server 2005) وصل می شویم ، حدود 10 تا 15 ثانیه برای اینکار زمان صرف می شود ، اما از بار دوم به بعد در مینیمم ثانیه این اتفاق می افتد ! در برنامه هایی شاهد بوده ام که با پیام "در حال اتصال به بانک اطلاعاتی" و سپس نمایش یک میله پیشرفت این مشکل را حل می کنند که بنظر من راه حل مطلوبی نیست. ولی در بعضی برنامه هم این مشکل حل شده است و از همان بار اول تاخيري وجود ندارد
بدیهی است، بدون شک.
مکانیزم ADO.Net یک مخزن برای کش Connection ها دارد.
یعنی وقتی شما به ظار یک Connection را باز و بسته میکنید، در واقعاینطور نیست و در بانکی مثل SQLServer اوضاع فرق میکند.
ADO.Net Connection را که میبندید، نمی بندد.!
و در اصل دستور Close شما موجب ازاد شدن Connection و برگشتن ان به مخزن Connection های ADO.Net برای استفاده در دیگر ریسمان ها و نقاط میشود و در SQLServer همچنان Connection به برنامه شما باز می ماند.
و وقتی شما در خواست یک New Connection میدهدف اول مخزن داخلی ADO.Net چک میشود و اگر Connection آماده و بی کاری باشد، برای این کار به شما داده میشود که این کار طبیعتاً خیلی سریع انجام میشود.
ولی اگر Connection در مخزن نباشد (چه در شروع برنامه و چه اینکه در جاهای دیگر این Connection ها هنوز در حال استفاده باشند و Close نشده باشد.) ADO.Net یک ارتباط جدید را شروع میکند که هم از طرف ADO.Net و هم از طرف SQLServer برای ارتباط و پیدا کردن بانک و امنیت و... مسئله زمان بر میشود.
راه حل هم ساده است.
برنامه شما وقتی بالا می آید و احتمالاً یک صفحه SplashScreen را نمایش میدهد.
شما میتوانید یک Connection جدید بسازید و ببندید!
این کار دو مزیت دارد.
این کار دو مزیت دارد.
-----
1) عملاً در شروع برنامه رشته مهم ConnectionString تست میشود و اگر نتوانید به بانک وصل شوید و خطایی پیش اید میتوانید هشدار لازم را در همان شروع کار به کاربر بدهید و از ادامه کار برنامه و خطاهای بعدی که پیش می ایند جلوگیری کنید و محترمانه و پیغام مناسب برنامه را ببندید.
2) یک Connection آماده استفاده و آزاد به مخزن ADO.Net اضافه میکنید، تا در اجرای برنامه در خواست New Connection تان سریعتر اجرا شود.
bahar2008
جمعه 15 شهریور 1387, 15:05 عصر
ممنونم از راهنماییتون دوست عزیز :قلب::قلب::قلب:
واقعا یک دنیا ممنونم که این بحث رو دنبال می کنید و جواب سوالات من رو می دهید :قلب::قلب:
ویندوزم xp هست
البته من هیمشه در دسکتاپ امتحان می کردم و این راهی که شما گفتید رو هم امتحان می کنم حتما :قلب:
مشکل دیگه ای که جدیدا بهش برخوردم این هست که من همون پروژه رو در کامپیوتر خودم کپی کردم و اجرا کردم و موقع اجرا پیغام error زیر رو داد
Error 1 Unable to find manifest signing certificate in the certificate store. project
و البته با همین پیغام هم اجرا شد و درست کار می کرد ولی موقعی که می خواستم exe پروژه رو بسازم باز هم همین پیغام با چند پیغام خطای دیگه رو صادر کرد و exe رو نساخت :ناراحت:
دلیل این پیغام خطا چی هست؟ آیا تا بحال شما به این پیغام برخوردید؟:ناراحت:
__H2__
جمعه 15 شهریور 1387, 21:18 عصر
سلام
البته با همین پیغام هم اجرا شد و درست کار می کرد ولی موقعی که می خواستم exe پروژه رو بسازم باز هم همین پیغام با چند پیغام خطای دیگه رو صادر کرد و exe رو نساخت
دلیل این پیغام خطا چی هست
کلاً پروژه ای که کامپایل نمیشود، حتماً ایراد تابلویی دارد!!!
مثل ایرادهای اشتباه هات نوشتاری در سینتکس یا فقدان یک dll که Reference شده.
یا ...
شما میتوانید شرح بیشتر ایراد و محل ایراد را با دبل کیک در پنجره View->Error List ببینید.
با توجه به متن خطایتان به نظر میرسد در یکی از strong name ها دچار مشکل هستید.
اگر از فایلها مربوطه استفاده میکنید، انها را چک کنید که هم وجود داشته باشند و هم منقضی نشده باشند و هم ...
bahar2008
شنبه 16 شهریور 1387, 09:33 صبح
ممنونم از راهنماييتون دوست عزيز
مشكل اينجاست كه هر چي هم 2 بار كليك مي كنم روي خطاي گرفته شده به جايي هدايت نمي كنه و خطي كه مشكل داره رو نشون نمي ده :ناراحت:
من تمام فايلهارو كامل كژي مي كنم ولي باز هم مشكل داره
من يك پروژه كوچيك به همون روشي كه از sqlexpress2005 استفاده شده در تمام برنامه به عنوان نمونه در كامپيوتري كه فقط sql express2005 نصب بود روش نوشتم و ديدم كه در خط cn.open خطا مي ده و مي گه كه نمي تونه sql2005 رو باز كنه :ناراحت:
با اينكه visual studio 2005 نصب كردم ولي نمي دونم چرا با sql 2005 مشكل داره :ناراحت:
__H2__
دوشنبه 18 شهریور 1387, 01:22 صبح
سلام
من اول یک چیز را خودم متوجه بشم!
یعنی ما الآن با دو خطای متفاوت طرف هستم، درسته؟
1-یکی اینکه یک Exe شما در رایانه دیگر نمیتواند به دیتابیس وصل شود.
2-یک پروزه دیگر هم کامپایل نمیشود و اصلاً exe نمی سازد
اگر اینطور است
-----
در مورد مشکل اول و اگر همچنان همان متن خطای پست 22 را که تصویر هم داشت، دریافت میکنید.
شما لغت |DataDirectory| را از رشته اتصال حذف کنید و به جایش یک مسیر ثابت را قرار دهید، مثلاً D:\files.mdb (فعلاً) پروزه را کامپایل کرده و با exe جدید در رایانه مقصد تست کنید(فراموش نکنید که دیتابیس را به همان محل ثابت کپی کنید.)
اگر دیگر خطا نداد، راه حل نهایی را خدمتتان عرض میکنم.
-----
در مورد خطای دوم
این یک خطای مجوز است،
فایل snk یا pfx یا cer در پروژه دارید؟
سری هم به Project->Propertoes->Singing بزنید.
آیا از فایل dll خاصی استفاده کرده اید؟
bahar2008
دوشنبه 18 شهریور 1387, 09:50 صبح
ممنونم از راهنمايي مفيدتون دوست عزيز :قلب: :قلب:
ولي بازم پيغام خطا مي ده ولي اين دفعه از دستور AttachDbFilename خطا مي گيره :ناراحت:
با اينكه يك نمونه پروژه ساده رو نوشتم كه امتحانش كنم ولي يك جاييش رو درست مي كنم يك جاي ديگش پيغام خطا مي ده و هنوز نتونستم فايلهام رو attach كنم به برنامه :گریه: :گریه:
پيغام خطايش هم اينه
http://i34.tinypic.com/jq11g1.jpg (http://s4.tinypic.com/jq11g1.jpg)
در مورد مشكل دوم هم فايل هايي كه گفتيد رو ندارم :ناراحت:
__H2__
سه شنبه 19 شهریور 1387, 02:23 صبح
سلام
ولي بازم پيغام خطا مي ده ولي اين دفعه از دستور AttachDbFilename خطا مي گيره
یعنی مقداری که برایش وارد کردید، صحیح نیست، احتمالاً اشتباه تایپی دارید. دقت بیشتری کنید.
شما بیاید اصلاً بدون برنامه هم یک تست کنید
فایل زیر را دانلود کنید بعد در رایانه مقصد راست کلیک کنید و Property را انتخاب کنید.
به برگه Connection بروید و به جای project_Data نام فایل دیتابیس خود را قرار دهید و دکمه TestConnection را بزنید.
سعی کنید با تغییر تنظیمات بالاخره موفق به برقراری ارتباط شوید.
(من خودم همین الآن تست کردم و جواب هم گرفتم)
bahar2008
سه شنبه 19 شهریور 1387, 10:23 صبح
ممنونم از لطفتون دوست عزيز :قلب::قلب:
با چند بار پيغام خطا بالاخره الان جواب داد و successfull اعلام كرد :قلب::قلب:
خيلي برنامه راحت و عالي هست اگر من اين رو در كنار پروژه exe خودم بزارم آيا مشكل بريا هميشه حل مي شه؟
__H2__
چهارشنبه 20 شهریور 1387, 01:02 صبح
سلام
...الان جواب داد و successfull اعلام كرد ..
خوبهف حله!
پس ایراد شما از ConnectionString تان بوده.
.. در كنار پروژه exe خودم بزارم آيا مشكل بريا هميشه حل مي شه؟..
نه ولی راه حل این است:
- همین فایل را که بالاخره وصل شد را با Notapad باز کنید.
- از خط آخر بخش ";Provider=SQLOLEDB.1" را حذف کنید،
- حال خط آخر را به جای ConnectionString در برنامه تان استفاده کنید.
- شاید هم بهتر باشه به جای |DataDirectory| خودتان مسیر جاری را با System.Windows.Forms.Application.StartupPath در اورید و ConnectionString را اصلاح کنید.
______________
البته پیشنهاد من برای برنامه های کامل تر این است که شما در پنجره Options برنامه تان، امکان ویرایش ConnectionString را به کاربرتان بدهید.
مثل این نمونه:
www.h02.ir/Download.aspx?File=Temp\SqlConnectionString.zip
البته چون من این نمونه را برای کسی درست کردم که دیتابیس اش attach میشد و کار میکرد، بخش انتهایی گرفتن مسیر فایل برای نسخه Express را مخفی کردم تا کوچک تر و ساده تر باشد.
شما کافیست پروژه را در VS2008 باز کنید و ارتفاع فرم frmOptions2 را زیاد کنید و خصوصیت ShowAttachDatabase کنترلر SCS را True کنید.
با این نمونه کد میتوانید برگه Connection فوق را که مشکلتان را حل کرد، به صورت runtime به داخل برنامه تان اضافه کنید، تا در صورت بروز هر مشکل، بتوانید در محل نصب برنامه از طریق منوی Options (تنظیمات) خود برنامه مشکل را حل کنید و رشته مطلوب ConnectionString را ست کنید.
اینطوری حتی اگر دیتابیس attach هم شود، شما نباید کد خود را تغییر دهید، فقط کافیست تنظیم برنامه خودتان را عوض کنید.
(البته شاید خیلی ها ترجیح بدهند برای پروژه های کوچک اصلاً این پنجره و Option را نداشته باشند ولی من خودم همیشه ترجیح میدم باشه)
bahar2008
چهارشنبه 20 شهریور 1387, 09:32 صبح
ممنونم از راهنمايي مفيدتون دوست عزيز ولي مثل اينكه اين مشكل من حل شدني نيست :گریه:
با اينكه تمام كارهايي كه شما گفتيد رو انجام دادم ولي باز پيغام خطاي زير رو مي ده
http://i36.tinypic.com/mkveyf.jpg (http://s4.tinypic.com/mkveyf.jpg)
احتمالا اين پيغام بريا اين نيست كه من با sql2000 كار مي كنم و توي اين كامپيوتر مي خوام با sql expres كار كنم؟:ناراحت:
bahar2008
چهارشنبه 20 شهریور 1387, 09:34 صبح
اين كد برنامم هست كه گفته بودم يك نمونه كوچيك رو امتحان مي كنم
Public Class Form1
Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
If TextBox1.TextLength = 0 Or TextBox2.TextLength = 0 Or TextBox3.TextLength = 0 Or TextBox4.TextLength = 0 Or TextBox5.TextLength = 0 Then
MessageBox.Show("لطفا اطلاعات را كامل وارد کنید ")
ElseIf TextBox4.Text <> TextBox5.Text Then
MessageBox.Show("تكرار رمز عبور اشتباه است ")
Else
Dim cn As New SqlClient.SqlConnection
cn.ConnectionString = "Data Source=Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Persist Security Info=False;Initial File Name=D:\project_Data.mdf"
Dim cmd As New SqlClient.SqlCommand
cn.Open()
cmd.Connection = cn
cmd.CommandType = Data.CommandType.Text
cmd.CommandText = " INSERT INTO [user](id,name,vahed,pass1,pass2)VALUES(@TextBox1,@TextB ox2,@TextBox3,@TextBox4,@TextBox5)"
cmd.Parameters.AddWithValue("textbox1", Me.TextBox1.Text)
cmd.Parameters.AddWithValue("textbox2", Me.TextBox2.Text)
cmd.Parameters.AddWithValue("textbox3", Me.TextBox3.Text)
cmd.Parameters.AddWithValue("textbox4", Me.TextBox4.Text)
cmd.Parameters.AddWithValue("textbox5", Me.TextBox5.Text)
cmd.ExecuteNonQuery()
MessageBox.Show("اطلاعات با موفقیت به ثبت رسید ")
cn.Close()
Me.Hide()
End If
End Sub
End Class
__H2__
پنج شنبه 21 شهریور 1387, 11:03 صبح
سلام
با اينكه تمام كارهايي كه شما گفتيد رو انجام دادم ولي باز پيغام خطاي زير رو مي ده
یعنی از همان رشته اتصالی که در نمونه پست 30 به دست آورده بودید استفاده کردید؟؟؟
با چند بار پيغام خطا بالاخره الان جواب داد و successfull اعلام كرد
این دیگه خیلی عجیب است، چون من تا حالا ندیدم با اون فایل بتوان وصل شد ولی در کد نویسی نتوان!!! یعنی در هیچ شرایطی ندیدم. وقاعاً خیلی خیلی تعجب بر انگیزه ... یعنی یکجورهایی امکان نداره!
وقتی پیغام successfull را دریافت کردید، آیا فایل را با Apply-OK ذخیره کردید یا نه؟؟؟؟
چون همینطوری ذخیره نمیشود؟ و شاید شما اصلاً Apply-OK را نزده اید و چیزی که در Notepad دیدید همان نباشد که با آن وصل شدید؟
لطفاً با صبر و دقت بیشتری یک بار دیگر عمل کنید ، چون یک جورهایی امکان ندارد آن وصل شود و کد شما وصل نشود.
من حتی آنقدر به این فایلها اطمینان دارم که چندین سال پیش که یک برنامه برای فروشگاهی با چند صندوق کامپیوتری نوشتم، از همین فایلها برای دینامیک کردن ConnectionString استفاده کردم و برنامه موقع بالا آمدن به صورت ini و Text فایل را میخواند و بخش اضافه را حذف میکرد و به راحتی به سرور کانکت میشد.
و هر موقع هم که میخواستم میتوانستم ConnectionString را اصلاح کنم.
آیا فایل را با Notepad باز کرید، داخلش فقط این بود؟
Data Source=Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Persist Security Info=False;Initial File Name=D:\project_Data.mdf
ضمناً برای تست اتصال کد زیر کافی است.
Using cn As New SqlClient.SqlConnection("Data Source=Data Source=.\SQLEXPRESS;Integrated Security=SSPI;Persist Security Info=False;Initial File Name=""D:\project_Data.mdf""")
cn.Open
End Using
=====
من یک کار دیگر هم کردم همان پست 30 را یادتون است که بالاخره وصل شدید؟
من یک نمونه دات نتی شبیه همان با تغییرات روی سورسی که در همین تاپیک گذاشتم، تهیه کردم.
این exe رشته اتصال را از فایل SqlServerConnectionString.txt میخواند و در همان هم Save میکند.
یک بار دیگر همان کاری را که با پست 30 کردید با این هم انجام دهید، دکمه Advanced میتواند تمام معیارهای رشته اتصال را برای تغییر به شما عرضه کند.
حتماً اگر TextConnection را زدید و وصل شد، برای ذخیره تغییرات OK را فراموش نکنید.
(متوجه شدم یک ایراد کوچک در زمان خواندن از SqlServerConnectionString.txt و در فعال کردن دکمه رادیویی attach a database file داره که فعلاً مهم نیست و درستش میکنم)
http://www.h02.ir/Download.aspx?file=Temp\SqlConnectionString.exe.zi p
bahar2008
شنبه 23 شهریور 1387, 10:47 صبح
بله فكر مي كنم Apply-OK رو زدم :متفکر:
ممنونم از نمونه برنامه اي گذاشتيد دوست عزيز :قلب:
برنامه رو كه اجرا كردم پيغام خطاي زير رو داد :ناراحت:
http://i35.tinypic.com/2eph8yh.jpg (http://s4.tinypic.com/2eph8yh.jpg)
يك سوال ديگه اي كه داشتم اين هست كه از كجا مي تونم بفهمم كه فايلهام attach شده در sql express2005 يا نه؟ :متفکر:
سوال ديگه ام اين هست كه اگر attach شده باشه و من دستور attach رو دوباره بزنم آيا پيغام خطا مي ده يا روي همون قبلي attach مي كنه؟:متفکر:
__H2__
یک شنبه 24 شهریور 1387, 00:28 صبح
سلام
برنامه رو كه اجرا كردم پيغام خطاي زير رو داد
درسته خطا میده ولی مثل همان نمونه پست 30 تنظیمات این یکی را هم سعی کنید در بخش Advanced دستکاری کنید، تغییر دهید تا بالاخره درست وصل شود.
يك سوال ديگه اي كه داشتم اين هست كه از كجا مي تونم بفهمم كه فايلهام attach شده در sql express2005 يا نه؟
در همین برنامه آخری یا آن نمونه پست 30 در بخش Select the database on the server یک combobox دارد که نام تمام دیتابیس های attach شده تحت servername را برمیگرداند.
اگر بتوانید برنامه کامل SQL Server Management Studio را هم تهیه و نصب کنید میتوانید بسیار کمک کند.
http://www.microsoft.com/downloads/details.aspx?familyid=6053C6F8-82C8-479C-B25B-9ACA13141C9E&displaylang=en
سوال ديگه ام اين هست كه اگر attach شده باشه و من دستور attach رو دوباره بزنم آيا پيغام خطا مي ده يا روي همون قبلي attach مي كنه؟
شما اگر دو دیتابیس مختلف در دو مسیر مختلف با یک نام یکسان را بخواهید attach کنید به خطا میخورید چه رسد به مسیر ثابت و نام ثابت.
یک راه حل کاربردی که به ذهنم میرسد که میتواند این مشکل را خاتمه دهد، ولی چندان ساده و در عرف نیست.
اگر ip اینترنتی مجاز و مشخصی داشته باشید، شاید بتوان با RemoteDesktop مشکل را حل کرد.
چون این مشکل شما متعارفاً باید خیلی وقت پیش حل میشد، من خودم همیشه در حد چند دقیقه مشکلم را با sqlserver حل کرده بودم، ولی حتماً باید ک نکته ای از قلم افتاده باشد.
bahar2008
دوشنبه 25 شهریور 1387, 09:02 صبح
ممنونم از راهنماييتون دوست عزيز :قلب:
اين دفعه هر كاري مي كنم با اينكه تمام تنظيماتش رو هم درست كردم نمي تونم با اين برنامه كار كنم و مدام پيغام خطا ميده :ناراحت:
راه حل آخرتون خيلي سخته فكر نيم كنم بتونم انجامش بدم
bahar2008
دوشنبه 25 شهریور 1387, 09:11 صبح
تيكه برانمه كوچيكي كه براي امتحان استفاده مي كنم اين هست
Imports System.Data
Imports System.Data.SqlClient
Imports System.DBNull
Imports System.Data.SqlClient.SqlConnection
Imports System.Data.Common.DbConnection
Imports System.Data.SqlClient.SqlCommand
Imports System.Data.SqlClient.SqlDataAdapter
Public Class Form1
Private Sub Button11_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button11.Click
If TextBox1.TextLength = 0 Or TextBox2.TextLength = 0 Or TextBox3.TextLength = 0 Or TextBox4.TextLength = 0 Or TextBox5.TextLength = 0 Then
MessageBox.Show("لطفا اطلاعات را كامل وارد کنید ")
ElseIf TextBox4.Text <> TextBox5.Text Then
MessageBox.Show("تكرار رمز عبور اشتباه است ")
Else
Dim cn As New SqlClient.SqlConnection
cn.ConnectionString = "Data Source=.\SQLEXPRESS;Integrated Security=True;AttachDbFilename=e:\project_Data.MDF ;Initial Catalog=project"
Dim cmd As New SqlClient.SqlCommand
cn.Open()
cmd.Connection = cn
cmd.ExecuteNonQuery()
cmd.CommandType = Data.CommandType.Text
cmd.CommandText = " INSERT INTO [user](id,name,vahed,pass1,pass2)VALUES(@TextBox1,@TextB ox2,@TextBox3,@TextBox4,@TextBox5)"
cmd.Parameters.AddWithValue("textbox1", Me.TextBox1.Text)
cmd.Parameters.AddWithValue("textbox2", Me.TextBox2.Text)
cmd.Parameters.AddWithValue("textbox3", Me.TextBox3.Text)
cmd.Parameters.AddWithValue("textbox4", Me.TextBox4.Text)
cmd.Parameters.AddWithValue("textbox5", Me.TextBox5.Text)
cmd.ExecuteNonQuery()
MessageBox.Show("اطلاعات با موفقیت به ثبت رسید ")
cn.Close()
Me.Hide()
End If
End Sub
End Class
ولي موقع اجرا اين پيغام خطا رو ميده :ناراحت::ناراحت:
http://i37.tinypic.com/9i5s2s.jpg (http://s4.tinypic.com/9i5s2s.jpg)
fat_roze2000
دوشنبه 25 شهریور 1387, 15:09 عصر
Try
Dim strMDF As String = ""
Dim strDB As String = ""
If Not EMACoABFAResource.Common.clsUtility.CheckConnectio n("data source=" + txtQABFAServerName.Text + ";persist security info=False;user id=" & txtQABFAUserName.Text + ";packet size=4096;password=" & txtQABFAPassword.Text + ";initial catalog=master") Then Return
If sender Is Me.btnAttachCallerID Then
strMDF = Me.txtCallerIDBank_MDF.Text
strDB = Me.txtCallerIDBank.Text
ElseIf sender Is Me.btnAttachIsfahanPoints Then
strMDF = Me.txtPoints_MDB.Text
strDB = Me.txtPoints.Text
ElseIf sender Is Me.btnAttachQAbfa Then
strMDF = Me.txtQABFA_MDF.Text
strDB = Me.txtQABFADatabaseName.Text
End If
strMDF = strMDF.ToUpper
Dim strLDF As String = strMDF.ToUpper.Replace("MDF", "LDF")
Dim fiInfo As New IO.FileInfo(strMDF)
If Not (IO.File.Exists(strMDF) And IO.File.Exists(strLDF)) Then
clsMain.frmMessage.ShowMessage(EMACoComponents.Enu ms.eMessage.eCustomMessage, "تمامی فایل های مربوط به بانک اطلاعاتی وجود ندارد", EMACoComponents.Enums.eMessageBoxButtons.eOk, EMACoComponents.Enums.eMessageBoxIcon.eStop)
Return
ElseIf fiInfo.Extension <> "MDF" Then
clsMain.frmMessage.ShowMessage(EMACoComponents.Enu ms.eMessage.eCustomMessage, "فایل های مورد نظر جهت بانک اطلاعاتی مناسب نمی باشد", EMACoComponents.Enums.eMessageBoxButtons.eOk, EMACoComponents.Enums.eMessageBoxIcon.eStop)
Return
Else
Dim cnn1 As New SqlClient.SqlConnection("data source=" + txtQABFAServerName.Text + ";persist security info=False;user id=" & txtQABFAUserName.Text + ";packet size=4096;password=" & txtQABFAPassword.Text + ";initial catalog=master")
Dim cmd1 As New SqlClient.SqlCommand("SELECT name FROM sysdatabases WHERE name = N'" + strDB + "'", cnn1)
cmd1.CommandType = CommandType.Text
cmd1.Connection.Open()
Dim rdr As SqlClient.SqlDataReader = cmd1.ExecuteReader
If rdr.HasRows Then
clsMain.frmMessage.ShowMessage(EMACoComponents.Enu ms.eMessage.eCustomMessage, "چنین بانک اطلاعاتی وجود دارد. نام دیگری انتخاب کنید.", EMACoComponents.Enums.eMessageBoxButtons.eOk, EMACoComponents.Enums.eMessageBoxIcon.eStop)
Return
Else
rdr.Close()
cmd1.CommandText = "SELECT name FROM sysdatabases WHERE filename = N'" + strMDF + "'"
cmd1.CommandType = CommandType.Text
rdr = cmd1.ExecuteReader
If rdr.HasRows Then
clsMain.frmMessage.ShowMessage(EMACoComponents.Enu ms.eMessage.eCustomMessage, "چنین بانک اطلاعاتی با نام دیگری ضمیمه شده است.", EMACoComponents.Enums.eMessageBoxButtons.eOk, EMACoComponents.Enums.eMessageBoxIcon.eStop)
Return
End If
End If
End If
Dim cnn As New SqlClient.SqlConnection("data source=" + txtQABFAServerName.Text + ";persist security info=False;user id=" & txtQABFAUserName.Text + ";packet size=4096;password=" & txtQABFAPassword.Text)
Dim cmd As New SqlClient.SqlCommand("EXEC sp_attach_db @dbname = N'" + strDB + "', @filename1 = N'" + strMDF + "',@filename2 = N'" + strLDF + "';", cnn)
cmd.CommandType = CommandType.Text
cmd.Connection.Open()
cmd.ExecuteNonQuery()
Catch ex As Exception
End Try
__H2__
سه شنبه 26 شهریور 1387, 00:17 صبح
سلام
cn.ConnectionString = "Data Source=.\SQLEXPRESS;Integrated Security=True;AttachDbFilename=e:\project_Data.MDF ;Initial Catalog=project"
ولي موقع اجرا اين پيغام خطا رو ميده
گرچه امیدهایم دارد ته میکشد ولی به نظر ConnectionString ای که در پست اخریتان (39) استفاده کردید، چندان صحیح نیست.
به جایش از همچین چیزی استفاده کنید:
Data Source=.\SQLEXPRESS;AttachDbFilename=E:\project_Da ta.MDF;Integrated Security=True;User Instance=True
saman_itc
سه شنبه 26 شهریور 1387, 08:23 صبح
اگر بتوانید برنامه کامل SQL Server Management Studio را هم تهیه و نصب کنید میتوانید بسیار کمک کند.
http://www.microsoft.com/downloads/details.aspx?familyid=6053C6F8-82C8-479C-B25B-9ACA13141C9E&displaylang=en
.
سلام استاد.مجانی!!!؟
bahar2008
سه شنبه 26 شهریور 1387, 11:57 صبح
ممنونم از لطفت h2 عزيز :قلب: من كدي كه شما دادي رو هم نوشتم ويل باز هم پيغام خطاي قبيل رو داد
تصميم گرفتم كه با sql2000 كار كنم و با كد نويسي بانكهام رو بهش attach كنم
فقط يك سوالي دارم كه بايد در تمام فرمهايي كهcn.conection string استفاده شده كد attach dbfilename رو هم بنويسم يا فقط در app . config و فرم اوليه ام لازم هست كه كد attach رو بنويسم؟
__H2__
چهارشنبه 27 شهریور 1387, 01:43 صبح
سلام
مجانی!!!؟
نسخه های Express مایکروسافت همواره مجانی و صددرصد هم کازآمد بوده اند.
البته لینک صریحی با نام Management2008 ندیده ام ولی به احتمال زیاد نسخه مجانی و 2008 هم باید در پک های تکمیلی نهایی SQLServerExpress2008 که لینکشان در تاپیک زیر موجود است، Management2008 داشته باشد.
http://barnamenevis.org/forum/showthread.php?p=581420#post581420
حداقل قابلیت جالب این نسخه 2008 امکان کمک در تایپ دستورات T-SQL است، AutoList یا همان IntelliSense
که البته این ربطی به امکانات خود هسته SQLServer2008 ندارد.
تصميم گرفتم كه با sql2000 كار كنم
چندان فکر جالب توجهی نیست! ولی خودتان میدانید.
من بودم کل سیستم را فرمت میکردم و یک SQLServer2008 توپ نصب میکردم
(که البته همین را انجام داده ام!!!!)
كد attach dbfilename رو هم بنويسم يا فقط در app . config و فرم اوليه ام لازم هست كه كد attach رو بنويسم؟
طبیعاً هر کجا ConnectionString را قید کرده و نوشته اید باید اصلاح شود.
البته در یک برنامه نرمال و صحیح معمولاً باید ConnectionString در یک مکان مشخص باشد و حتی تغییر آن بعد از کامپایل هم ممکن باشد و نیازی به تغییری برنامه نباشد.
bahar2008
چهارشنبه 27 شهریور 1387, 10:47 صبح
من sql2000 رو نصب كردم و conection string رو به صورت زير تغيير دادم ولي باز هم با پيغام خطا برخوردم :ناراحت: فكر مي كردم كه در اين مورد ديگه مشكلي نباشه :گریه:
cn.ConnectionString = "Data Source=(local);AttachDbFilename=E:\project_Data.MD F;Integrated Security=True"
اين هم پيغام خطا هست كه متوجه منظورش نشدم :ناراحت:
http://i38.tinypic.com/35jiexw.jpg (http://s4.tinypic.com/35jiexw.jpg)
__H2__
چهارشنبه 27 شهریور 1387, 23:02 عصر
سلام
شما باید بانک را attach کنید
من یادم نمی آید تا حال در نسخه 2000 به صورت غیر attach کار کرده باشم و خیلی بعید هم میدانم این نسخه قابلیت کار با دیتابیس بدون attach را داشته باشد.
اگر میتوانید نرم افزاری را که در پست 37 گفتم تهیه یا دانلود کنید، شاید راحی باشد.
http://www.microsoft.com/downloads/details.aspx?familyid=6053C6F8-82C8-479C-B25B-9ACA13141C9E&displaylang=en
البته نمونه کدهایی که برای attach بود هم همین عمل را انجام میداد و اگر تمام نکات رعایت میشد باید کار میکرد.
و اگر همه کارها را به دقت انجام داده اید و attach انجام نشده بود و با این مشکلات اخیر که شما میفرمائئد همه اعمال را انجام میدهید و به نتیجه نمیرسید، من اینطور برداشت میکنم که شاید sqlserver و windows شما دچار مشکل شده باشند و با نصب مجدد ویندوز مشکل حل شود.
(گرچه من خودم تا حالا شاهد برخی اتفاقاتی که شما تشریح میکنید نبوده امف مثل وصل شدن udl پست 30 و عدم وصل شدن برنامه!!)
بحرحال اگر نرم افزار فوق را توانستید دانلود و نصب کنید و یا ویندوزتان را عوض کنید، باز شاید بتوانم کمک کنم وگرنه دیگر از تئوری پردازی و پیشبینی دلایل و راه حل، تهی شده ام (!!!) و دیگر نمیتوانم کمکی به شما بکنم.
میبخشید و انشا ا... پس از این همواره موفق باشید.
abi_sarab
سه شنبه 30 مهر 1387, 18:46 عصر
سلام
کسی نسخه sqlexpress 2005 کم حجم که نرم افزار باش کار کنه داره؟ بذاره واسه دانلود.
مرسی
__H2__
سه شنبه 30 مهر 1387, 23:39 عصر
سلام
بهتر بود سوال را در تاپیکی مجزا میپرسیدید...
بهرحال همانطور که ذکر شده لینک دانلود مشخص است.
SQL Server 2005 Express-SP2 36MB
http://www.microsoft.com/downloads/details.aspx?familyid=31711D5D-725C-4AFA-9D65-E4465CDFF1E7&displaylang=en
SQL Server 2008 Express 61M
http://www.microsoft.com/downloads/details.aspx?familyid=58CE885D-508B-45C8-9FD3-118EDD8E6FFF&displaylang=en
(که البته به مخلفات دیگری هم نیاز دارد که در همین لینک موجود است)
اگر هم VS را نصب کرده باشید و یا CD/DVD اش را داشته باشید، نیاز به دانلود ندارید و میتوانید فایل نصب نسخه express2005 را پیدا کنید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.