View Full Version : دستور SQL مربوط به attach کردن database
amin3271
چهارشنبه 27 شهریور 1387, 17:55 عصر
سلام
لطفا دستور SQL مربوط به attach کردن database رو برام بنویسید.
با تشکر
saeidnor
چهارشنبه 27 شهریور 1387, 20:42 عصر
sp_attach_db @dbname = N'AdventureWorks',
@filename1 = N'c:\Program Files\Microsoft SQL Server
\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf',
@filename2 = N'c:\Program Files\Microsoft SQL Server
\MSSQL.1\MSSQL\Data\AdventureWorks_log.ldf'
amin3271
چهارشنبه 27 شهریور 1387, 21:25 عصر
ببین من این دستور رو برای یک consoleApplication میخوام که وقتی بعد از نصب فایل setup (که در اون فایل های بانک رو قرار دادم) اجرا میشه database ام رو به (sqlserver (expressEdition ، متصل کنه.
SqlConnection con = newSqlConnection("Data Source=.\\sqlexpress;Initial Catalog=personeli;Integrated Security=True");
SqlCommand com = newSqlCommand("attach SQL command", con);
con.Open();
com.ExecuteNonQuery();
con.Close();
Console.Write("finished");
اگه میشه با این شرایط من رو راهنمایی کن.
با تشکر
saeidnor
چهارشنبه 27 شهریور 1387, 22:21 عصر
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
SqlConnection con = new SqlConnection("Data Source=.\\sqlexpress;Initial Catalog=master;Integrated Security=True");
SqlCommand com = new SqlCommand();
com.CommandText = "sp_attach_db @dbname = 'TestDB', " +
" @filename1 = 'c:\\Program Files\\Microsoft SQL Server" +
" \\MSSQL.1\\MSSQL\\Data\\TestDB_Data.mdf', " +
" @filename2 = 'c:\\Program Files\\Microsoft SQL Server" +
" \\MSSQL.1\\MSSQL\\Data\\TestDB_log.ldf'";
com.Connection = con;
try
{
con.Open();
com.ExecuteNonQuery();
con.Close();
}
catch (SqlException ex)
{
}
}
}
}
amin3271
پنج شنبه 28 شهریور 1387, 09:06 صبح
من تین برنامه شما رو اجرا کردم(بدون try و catch ). در خط com.executenonquery از برنامه بیرون می زد
و پیغام می داد:database 'personeli ' already exists
عیبش چیه؟
saeidnor
پنج شنبه 28 شهریور 1387, 11:00 صبح
این Error میگه که این Data Base تو سرور وجود داره ، دلیل اینکه Try/Catch گذاشتم دقیقا همینه ... یعنی فقط در اولین اجرا Attach میشه و در اجراهای بعدی چون دیگه Data Base موجوده ، میره تو قسمت Catch و چون کدی نداره ، رد میشه ...
amin3271
پنج شنبه 28 شهریور 1387, 15:49 عصر
این آدرسی که توی دستور قرار داره آدرس مبدا database هست . درسته؟
در اینصورت اگه بخواهیم database از درون آدرس نصب شده برنامه ( مثلا پوشه Data ) پیدا شده و Attach بشه از کجا می تونیم تشخیص بدیم که کاربر برنامه رو در چه آدرسی نصب کرده است؟
آدرس پیش فرض برنامه در حین نصب:
C:\Program Files\personeli\data
saeidnor
جمعه 29 شهریور 1387, 12:24 عصر
تو Console Application نمی دونم ولی تو Windows Application با
Application.Startuppath
می تونی
SMRAH1
جمعه 29 شهریور 1387, 14:34 عصر
سلام
آیا از دوستان کسی خط دستوری رو سراغ داره که database رو detach کنه.مثلا فرض کنید که قبلا یک پایگاه داده به نام AAA را Attach کرده ایم.حالا می خواهیم مسیر آن را عوض کنیم و AAA به یک پایگاه دیگر اشاره کند.
soshians
جمعه 29 شهریور 1387, 17:04 عصر
درمورد attach کردن به بانک اطلاعاتی از connection string زیر استفاده کن:
SqlConnection objconnection = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database1.mdf;Integrated Security=True;User Instance=True");
majid325
جمعه 29 شهریور 1387, 17:25 عصر
ميخواستم برات توضيح بدم كه اسم sp يادم نيومد سرچ كردم اينو پيدا كردم
http://barnamenevis.org/forum/showthread.php?p=487319
joojoo
یک شنبه 24 آذر 1387, 13:16 عصر
وقتی Error میده که Database 'Rah_LocalDataBase' already exists کجا باید ببینم که این DataBase attach شده؟
تو sql Express که نشونش نمیده.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.