PDA

View Full Version : مشكل با Connection string



behroz1387
یک شنبه 06 دی 1388, 21:32 عصر
دوستان عزيز من Connection string را بصورت زير در آوردم
cnn.ConnectionString = (@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\\prog\\naf f.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
اما ارور زير را مي ده ممكنه بگيد مشكل كجاست
An attempt to attach an auto-named database for file E:\\prog\\naff.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.
از توجهتان ممنونم

razavi_university
یک شنبه 06 دی 1388, 21:50 عصر
دوست عزیز متن خطا کاملا گویاست!
یکی از موارد زیر باعث بوجود آمودن این خطا شده است:

1- دیتابیسی با همین نام در SQLExpress وجود دارد
2- فایلی که به آن معرفی کرده اید قابل باز شدن نیست(توسط پروسه دیگری در حال استفاده است، معیوب است و ... )
3- در NC share است.

behroz1387
یک شنبه 06 دی 1388, 22:00 عصر
دوست عزيز يعني كانكشن استرينگ مشكل نداره
اگه مي شه سومين خطا به چه معني است
ممنونم

مهدی رحیم زاده
یک شنبه 06 دی 1388, 22:05 عصر
دوستان عزيز من Connection string را بصورت زير در آوردم
cnn.ConnectionString = (@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\\prog\\naf f.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");
اما ارور زير را مي ده ممكنه بگيد مشكل كجاست
An attempt to attach an auto-named database for file E:\\prog\\naff.mdf failed. A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.
از توجهتان ممنونم
دوست عزیز
از ایجاد سوال های تکراری در سایت جدا خود داری نمایید .
شما این سوال و در این پست (http://barnamenevis.org/forum/showpost.php?p=876245&postcount=6) پرسیده بودین و تکرار مجدد اون طبق قوانین سایت مجاز نیست و تنها دلیل حذف نکردن پست شما جواب جناب رضویه.
ضمن عرض پوزش مجددا خواهش می کنم که قوانین سایت رو مد نظر قرار بدین و از ایجاد این پستها که سایت رو شلوغ می کنه خود داری کنید.
با تشکر

behroz1387
یک شنبه 06 دی 1388, 22:09 عصر
دوست عزيز از اينكه جواب داديد ممنونم
ديدم سوالم با تيتر انتخابي سوال قبلي همخواني نداره بخواطر همين جدا آوردم و غرض ديگري نبود

behroz1387
یک شنبه 06 دی 1388, 23:48 عصر
دوستان عزيز منتظر جوابتان هستم

slashslash2009
دوشنبه 07 دی 1388, 10:37 صبح
یک احتمال اینه که شما فایل رو قبلا detach نکرده اید و حالا میخواید اونو Attach کنید که معلومه خطا میده کلا بهتره از روش Backup و Restore استفاده کنید موفق باشید

behroz1387
دوشنبه 07 دی 1388, 15:53 عصر
دوست عزي مي شه بگيد فايل را چگونه detachكنم ممنون مي شم

slashslash2009
دوشنبه 07 دی 1388, 16:23 عصر
SqlConnection con = new SqlConnection("Data Source=.\\sqlexpress;Initial Catalog=master;Integrated Security=True");
SqlCommand com = new SqlCommand();
com.CommandText = "sp_detach_db @dbname = N'database Name'";
com.Connection = con;
try
{
con.Open();
com.ExecuteNonQuery();
MessageBox.Show("ارتباط با بانک اطلاعاتی قطع شد");
con.Close();
// Application.Exit();
}
catch
{
MessageBox.Show("نام سرور را درست وارد کنید");
}

behroz1387
دوشنبه 07 دی 1388, 17:07 عصر
دوست عزيزم من كد ر خودم را پايين نوشتم اگه بزرگواري فرماييد و آن را اصلاح كنيد واقعا ممنون مي شم خيلي مورد نيازم است


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Data.SqlClient;
using System.Collections;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication9
{
public partial class نمايش : Form
{
SqlConnection cnn = new SqlConnection();
SqlDataAdapter sda = new SqlDataAdapter();
SqlCommand cmd = new SqlCommand();
DataSet ds = new DataSet();
ArrayList arr = new ArrayList();
private void Connect()
{
cnn.ConnectionString = (@"Data Source=.\SQLExpress;AttachDbFilename = E:\prog\naff.mdf;Integrated Security=True;User Instance=True");
}
private DataSet LoadAll()
{
Connect();
cmd.CommandText = "select * from naff";
cmd.Connection = cnn;
sda.SelectCommand = cmd;
cnn.Open();
sda.Fill(ds, "beh");
cnn.Close();
return ds;
}
public نمايش()
{
InitializeComponent();
}
private void نمايش_Load(object sender, EventArgs e)
{
LoadAll();
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "beh";

}

slashslash2009
دوشنبه 07 دی 1388, 18:20 عصر
کدی رو که نوشتم فقط کافیه در یک مثلا Button قرار دهید یعنی با فشار دکمه و فقط نام دیتابیستو رو تغییر بدین در قسمت
com.CommandText

behroz1387
دوشنبه 07 دی 1388, 18:52 عصر
كد را به صورت زير در آوردم ولي ارور مده كه نام ديتا بيس را صحيح وارد كنيد نام ديتا بيسم naff است


SqlConnection con = new SqlConnection("Data Source=.\\sqlexpress;Initial Catalog=master;Integrated Security=True");
SqlCommand com = new SqlCommand();
com.CommandText = "sp_detach_db @naff = N'naff'";
com.Connection = con;
try
{
con.Open();
com.ExecuteNonQuery();
MessageBox.Show("ارتباط با بانک اطلاعاتی قطع شد");
con.Close();
// Application.Exit();
}
catch
{
MessageBox.Show("نام سرور را درست وارد کنید");
}

slashslash2009
دوشنبه 07 دی 1388, 19:35 عصر
sp_detach_db @dbname = N'naff'

نکته :
البته فایلتون باید atach شده باشه ها بعدش میتونید به این طریق detach کنیدش یا از طریق sqlserver management stdio اونو Detachکنید

behroz1387
دوشنبه 07 دی 1388, 20:01 عصر
دوست عزيز همه كارهاي كه شما گفتيد انجام دادم اما پيغام مي ده كه نام ديتابيس را صحيح وارد كنيد
آيا كسي ديگه تا حالا از sql استفاده نكرده لطف كنيد كه جواب بلده جواب ما را هم بده ممنون مي شم

sara.f
دوشنبه 07 دی 1388, 20:17 عصر
كد را به صورت زير در آوردم ولي ارور مده كه نام ديتا بيس را صحيح وارد كنيد نام ديتا بيسم naff است


SqlConnection con = new SqlConnection("Data Source=.\\sqlexpress;Initial Catalog=master;Integrated Security=True");




SqlCommand com = new SqlCommand();

com.CommandText = "sp_detach_db @naff = N'naff'";
com.Connection = con;
try
{
con.Open();
com.ExecuteNonQuery();
MessageBox.Show("ارتباط با بانک اطلاعاتی قطع شد");
con.Close();
// Application.Exit();
}
catch
{
MessageBox.Show("نام سرور را درست وارد کنید");

}



Initial Catalog را چرا برابر با master قراردادید؟
باید نام دیتابیستون را اونجا بنویسید .

behroz1387
دوشنبه 07 دی 1388, 20:29 عصر
دوست عزيز Initial Catalog را هم برابر نام ديتا بيس قرار دادم باز همان پيغام را مي دهد آيا كسي اين كد را چك كرده است

sara.f
دوشنبه 07 دی 1388, 20:35 عصر
دوست عزيز Initial Catalog را هم برابر نام ديتا بيس قرار دادم باز همان پيغام را مي دهد آيا كسي اين كد را چك كرده است

اگر میخوای جدا از کد و از طریق خود SQL دیتابیس را detach کنی، کافیه روی اون دیتا بیس راست کلیک کنی و در بخش tasks گزینه detach را انتخاب کنی، در غیر اینصورت اگر منظورت از طریق کد هست، من این کد را امتحان نکردم.
میشه خطایی که میده را دقیقا اینجا بنویسی؟

slashslash2009
دوشنبه 07 دی 1388, 20:43 عصر
دوست من به کانکشن استرینگ دست نزنید او دستوری که نوشته بودین اشتباه بود درستشو براتون نوشتم دوباره مینویسمش :

sp_detach_db @dbname = N'naff'
ماله شما اینجوری بود که اشتباهه :

sp_detach_db @naff = N'naff'

behroz1387
دوشنبه 07 دی 1388, 20:59 عصر
دوست عزيز با تشكر از توجهتان

اگر میخوای جدا از کد و از طریق خود SQL دیتابیس را detach کنی، کافیه روی اون دیتا بیس راست کلیک کنی و در بخش tasks گزینه detach را انتخاب کنی
با اين روش جواب داد اما من مي خواهم اين عمل را با كد نويسي انجام بدم اما تا حالا موفق نشده ام ممنون مي شم اگه كمك كنيد

behroz1387
دوشنبه 07 دی 1388, 21:15 عصر
دوست عزيزم آقاي slashslash2009 (http://barnamenevis.org/forum/member.php?u=90145) اين هم كل كدي كه من نوشتم اگه ممكنه ايرادش را بگيد


private void button4_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=.\\SQLExpress;Initial Catalog=master;Integrated Security=True");
SqlCommand com = new SqlCommand();
com.CommandText = "sp_detach_db @dbname = N'naff'";
com.Connection = con;
try
{
con.Open();
com.ExecuteNonQuery();
MessageBox.Show("ارتباط با بانک اطلاعاتی قطع شد");
con.Close();
// Application.Exit();
}
catch
{
MessageBox.Show("نام سرور را درست وارد کنید");
}
}

SMRAH1
دوشنبه 07 دی 1388, 21:28 عصر
سلام

1) بهتره کد رو به شکل پایین بنویسی تا دقیقا بدونی خطا از کجاست:

private void button4_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("Data Source=.\\SQLExpress;Initial Catalog=master;Integrated Security=True");
SqlCommand com = new SqlCommand();
com.CommandText = "sp_detach_db @dbname = N'naff'";
com.Connection = con;
try
{
con.Open();
com.ExecuteNonQuery();
MessageBox.Show("ارتباط با بانک اطلاعاتی قطع شد");
con.Close();
// Application.Exit();
}
catch(Exception exc)
{
MessageBox.Show(exc.Message);
}
}

2) ممکنه تمام ارتباط ها با پایگاه داده قطع نشده باشه که در نتیجه نمی تونه Detach کنه.اگر اینه گو تا راه حل رو بنویسم.

موفق باشید

behroz1387
دوشنبه 07 دی 1388, 21:48 عصر
پيغامي كه مي ده اينه

the database 'naff' does not exist supply avalid database name to see available databases use sys .databases
ممنون مي شم اگه راهنمايي بفرماييد

slashslash2009
دوشنبه 07 دی 1388, 21:49 عصر
آقا بهروز کد هیچ مشکلی نداره چون از رو برنامه خودم برداشتم و بارها چک شده شما میتونی قسمت try و catch رو حذف کنی تا پیغام خطا رو ببینی و بزاریش اینجا

slashslash2009
دوشنبه 07 دی 1388, 21:57 عصر
احتمالا نام فایلو اشتباه وارد میکنید و یا اینکه اصلا این فایل شما هنوز Attach نشده که من فکر میکنم دومی باشه چون همین الان واسه برنامه خودم Detach کردم و واسه بار دوم که خواستم Detach کنم همین خطا رو داد

behroz1387
دوشنبه 07 دی 1388, 22:20 عصر
نام فايلو همانطوري كه هست وارد مي كنم و اتچ نيز شده اما نمي دانم كه اين پيغام از كجا مي آيد

slashslash2009
سه شنبه 08 دی 1388, 00:04 صبح
اگر نسخه کامل sqlserver مثلا نسخه developer رو نصب کرده باشی میتونی در management stdio کار detah را انجام بدی .
ببخشید این خطا رو نمیده احتمالا
Cannot detach the database 'naff' because it is currently in use

behroz1387
سه شنبه 08 دی 1388, 18:29 عصر
دوست عزيز با تشكر از وقتي كه گذاشتيد اما برنامه را روي سيستم ديگري گذاشتم بدون detachكردن ديتابيس جواب داد
ممنونم