# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > دسترسی به داده ها (ADO.Net و LINQ و ...) >  نصب و انتقال دیتابیس و attach کردن فایل آن در مقصد

## rostamedastan

بسم الله الرحمن الرحیم
سلام علیکم:
من می خواهم با استفاده از کد بتوانم پایگاه داده ام را که در کنار  فایل exe  قرار دارد attach کنم تا هنگامیکه کاربر با برنامه کار کی کند بانک به طور اتوماتیک attach  شود جست و جو هم کردم و کدهای زیر را بدست آوردم اما اولی فقط زمانیکه پایگاه داده در اس کیو ال سرور  attach  شده باشد تنها به آن وصل می شود و عمل attach را انجام نمی دهد و دومی هم خطا می دهد :
کد اول :

String strcon = "Initial Catalog=student;Integrated Security=SSPI";

کد دوم :

string sqlConnection1.ConnectionString = "Data Source=computer name\\SQLEXPRESS;AttachDbFilename="+Application.Ex  ecutablePath+"\\test.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

که این کد  خطای زیر را می دهد :

An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server

در ضمن بنده از .net 2005 و sql server 2000 استفاده می کنم.

----------


## Milad Mohseny

این SP رو اجرا کن
            sqlCmd.CommandText = "EXECUTE sp_attach_db @dbname,@filename1,@filename2";
            sqlCmd.Parameters.Add("@dbname", SqlDbType.VarChar, 260).Value = dbname;
            sqlCmd.Parameters.Add("@filename1", SqlDbType.VarChar, 260).Value = filename1;
            sqlCmd.Parameters.Add("@filename2", SqlDbType.VarChar, 260).Value = filename2;
            sqlCmd.ExecuteNonQuery();

----------


## rostamedastan

با سلام 
کد شما را نوشتم این error را می دهد :

ExecuteNonQuery: Connection property has not been initialized.

----------


## Milad Mohseny

دلیلش ساده است چون باید کارهای مقدماتی رو انجام بدی مثل connect کردن به sqlserver.
و همچنین دستور زیر رو هم فراموش نکنید.
;()sqlcmd=sqlconnection1.CreatCommand

----------


## rostamedastan

من کد زیر را وارد می کنم و آدرس پایگاه داده را نیز درست وارد کردم اما روی دستور   sqlcmd.ExecuteNonQuery();   error زیر را می دهد

Device activation error. The physical file name 'C:\Documents and Settings\taze\My Documents\Visual Studio 2005\Projects\bank1\bank1\bin\Debug\student_data.m  df' may be incorrect.


کد :


string strsql, strcon;
            SqlConnection sqlconnection1;
            SqlCommand sqlcmd;
            DataSet ds = new DataSet();
            SqlDataAdapter da;
            sqlcmd = new SqlCommand();
            sqlconnection1 = new SqlConnection();
            sqlcmd = sqlconnection1.CreateCommand();

            strcon ="initial catalog=;integrated security=SSPI;";

            sqlconnection1.ConnectionString = strcon;
            sqlconnection1.Open();
            sqlcmd.Connection = sqlconnection1;

            sqlcmd.CommandText = "EXEC sp_attach_db @dbname,@filename1,@filename2";
            sqlcmd.Parameters.Add("@dbname", SqlDbType.VarChar, 260).Value = "student";
            sqlcmd.Parameters.Add("@filename1", SqlDbType.VarChar, 260).Value = "C:\\Documents and Settings\\taze\\My Documents\\Visual Studio 2005\\Projects\bank1\\bank1\\bin\\Debug\\student_d  ata.mdf";
            sqlcmd.Parameters.Add("@filename2", SqlDbType.VarChar, 260).Value = "C:\\Documents and Settings\\taze\\My Documents\\Visual Studio 2005\\Projects\bank1\\bank1\\bin\\Debug\\student_l  og_ldf";
            sqlcmd.ExecuteNonQuery();

----------


## Milad Mohseny

برای این کار احتیاج به SqlDataAdapter  و  DataSet  نیست فقط کانکشن و کامند کافی است.
در قسمت connection string تعیین کنید که به دیتابیس master وصل بشه

----------


## rostamedastan

به صورت زیر اصلاح کردم ولی باز هم همان error را داد :
strcon = "Initial Catalog=master;Integrated Security=SSPI";

error :
Device activation error. The physical file name 'C:\Documents and Settings\taze\My Documents\Visual Studio 2005\Projects\bank1\bank1\bin\Debug\student_Data.m  df' may be incorrect.

----------


## Milad Mohseny

در قسمت پسوند ها فاصله قرار دادی  student_Data.m df   و   student_l og_ldf  که اصلاً پسوند نداره و بین L و O فاصله گذاشتی

----------


## rostamedastan

تو برنامه رو نگاه کردم درست بود در اینجا اشتباه نوشتم و همان  error را که گفتم میده.

----------


## rostamedastan

آقا دستت درد نکنه دوباره امتحان کردم اشکال از من بود 100% جواب داد 
انشا الله همیشه موفق باشید.

----------


## shahab_ss

سلام به دوستان عزیز

البته سوال من کمی قدیمی و به احتمال زیاد تکراریه اما جستجو کردم ( البته فقط کمی ) و جوابم را پیدا نکردم.

طریقه نصب دیتابیس ( Attach کردن) در SQL Server 2000,2005 چگونه است ؟!

لطفآ بصورت جداگانه( برای هرکدام آنها)  و قدم به قدم برای من توضیح دهید.

ممنون

----------


## Y2K

2000 رو من میگم 2005 رو بقیه 
البته فکر نکنم زیاد فرقی داشته باشه
بعد از اجرا کردن SQL Server Enterprise Manager از منوی درختی بر روی شاخه DataBases کلیک راست کرده و از منوی All Tasks گزینه Attach Database را انتخاب می کنیم 
سپس بر روی دکمه ای که سه نقطه بر روی آن قرار دارد کلیک کرده و دیتابیس خود را که قبلا در جایی از هارد دیسک ذخیره کرده ایم انتخاب کرده(فایلی با پسوند MDF) و دکمه  OK را می زنیم و باز هم Ok.
بدین صورت دیتابیس به SQL Server  اضافه می شود.

----------


## shahab_ss

دوست خوبم آقا یونس ممنون از اینکه جواب دادی.
من سوالم رو درست مطرح نکرده بودم.
من توی C#‎ و از طریق کد میخام این کار رو انجام بدم.

----------


## sarvestan

اجرای storeprocedure مربوطه !
sp_attach_db
یا در سایت جستجو کنید و یا در راهنمای Transact sql در sql-server
خیلی سریع به جواب می رسید

----------


## bahman.net

می تونی یک sql script از پایگاه داده ات تو sql server ایجاد کنی و اونو توی نصب برنامهات قرار بدی و اجراش کنی با این کار می تونی اونو تو sql server اضافه کنی
موفق باشی

----------


## choobin84

برنامه هایی که با بانک اطلاعاتی sql‌نوشته می شوند، آیا لازم است که حتما SQL server مایکروسافت نصب شود؟
نمیشه کاری کرد که کاربر نیازی به نصب جداگانه sql نداشته باشد و برنامه کار attach رو خودکار انجام بده؟ 
(attach کردن  از طریق برنامه روی بانک رو بلدم)

----------


## اَرژنگ

> برنامه هایی که با بانک اطلاعاتی sql‌نوشته می شوند، آیا لازم است که حتما SQL server مایکروسافت نصب شود؟
> نمیشه کاری کرد که کاربر نیازی به نصب جداگانه sql نداشته باشد و برنامه کار attach رو خودکار انجام بده؟ 
> (attach کردن  از طریق برنامه روی بانک رو بلدم)


یعنی چی؟ منظورتان اینکه که برنامه‌ای که با داتابیس کار میکنه ، بدونه داتابیس کار کنه؟ یا چیزه دیگری را داریدمیپرسید؟

----------


## nashenase2

> یعنی چی؟ منظورتان اینکه که برنامه‌ای که با داتابیس کار میکنه ، بدونه داتابیس کار کنه؟ یا چیزه دیگری را داریدمیپرسید؟


منظورشون اینه که آیا همونطور که برای اجرا شدن برنامه های دات نت نیاز به دات نت فریم ورک هست آیا برای بخش sql آن هم نیاز یه نصب sql server روی ماشینی که قرار برنامه روش اجرا بشه نصب بشه

نه نیازی نیست که کل sql server را نصب کنید فقط کافیه msde مخفف (microsoft desktop engine ) که معمولا درون خود  سی دی sql server  هست را نصب کنید
البته بایستی برای attach کردن دیتا بیس هاتون کد نویسی کنید

برا این عمل هم در books online دنبال sp_attach_db و sp_dettach_db باشین

store procedure اولی برای attach  کردن و دومی برای detachکردن دیتا بیس ها هستند 
فکر کنم بقیش را خودتون متوجه بسین

البته نیازی نیست که بگردین من الان کد و توضیحاتش را که در خود book online هست را میذارم

برای attach  کردن ان را بخون








sp_attach_db
Attaches a database to a server.

Syntax
sp_attach_db [ @dbname = ] 'dbname' 
    , [ @filename1 = ] 'filename_n' [ ,...16 ] 

Arguments
[@dbname =] 'dbname'

Is the name of the database to be attached to the server. The name must be unique. dbname is sysname, with a default of NULL. 

[@filename1 =] 'filename_n'

Is the physical name, including path, of a database file. filename_n is nvarchar(260), with a default of NULL. There can be up to 16 file names specified. The parameter names start at @filename1 and increment to @filename16. The file name list must include at least the primary file, which contains the system tables that point to other files in the database. The list must also include any files that were moved after the database was detached.

Return Code Values
0 (success) or 1 (failure)

Result Sets
None

Remarks
sp_attach_db should only be executed on databases that were previously detached from the database server using an explicit sp_detach_db operation. If more than 16 files must be specified, use CREATE DATABASE with the FOR ATTACH clause.

If you attach a database to a server other than the server from which the database was detached, and the detached database was enabled for replication, you should run sp_removedbreplication to remove replication from the database.

Permissions
Only members of the sysadmin and dbcreator fixed server roles can execute this procedure.

Examples
This example attaches two files from pubs to the current server.

EXEC sp_attach_db @dbname = N'pubs', 
   @filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf', 
   @filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'





به example آخری دقت کن

و برای detach  کردن




sp_detach_db
Detaches a database from a server and, optionally, runs UPDATE STATISTICS on all tables before detaching.

Syntax
sp_detach_db [ @dbname = ] 'dbname' 
    [ , [ @skipchecks = ] 'skipchecks' ] 

Arguments
[@dbname =] 'dbname'

Is the name of the database to be detached. dbname is sysname, with a default value of NULL. 

[@skipchecks =] 'skipchecks'

skipchecks is nvarchar(10), with a default value of NULL. If true, UPDATE STATISTICS is skipped. If false, UPDATE STATISTICS is run. This option is useful for databases that are to be moved to read-only media.

Return Code Values
0 (success) or 1 (failure)

Result Sets
None

Remarks
The detached files remain and can be reattached using sp_attach_db or sp_attach_single_file_db. The files can also be moved to another server and attached.

Permissions
Only members of the sysadmin fixed server role can execute sp_detach_db. 

Examples
This example detaches the pubs database with skipchecks set to true.

EXEC sp_detach_db 'pubs', 'true'



باز هم یه example آخری دقت کن

البته برای استفاده از اینها توی برنامه اصلیت باید به یک از دیتا بیس های خود sql  وصل بشی که معمولا master را انتخاب میکنن

اگکه نتونستی تا یه نمونه برنامه برایت بذارم

----------


## اَرژنگ

> منظورشون اینه که آیا همونطور که برای اجرا شدن برنامه های دات نت نیاز به دات نت فریم ورک هست آیا برای بخش sql آن هم نیاز یه نصب sql server روی ماشینی که قرار برنامه روش اجرا بشه نصب بشه جناب آرژنگ خان حرفه ای و برنامه نویس لایه ای
> 
> شما که یه چنین سوال ساده ای را متوجه نمیشی دلیل نداره که در تاپیک http://www.barnamenevis.org/sh...612#post354612 اینقدر به برنامه نویسی و تئوری خودت خصوصا  در مورد لایه نویسی کلاس بذاری
> اگه یه برنامه کوچولو که توش با دیتا بیس کار میکرده نوشته بودی مطمونا سوال دوست عزیزمون را متوجه میشدی
> شایدم تا الان برای استفاده از دیتا بیست کل sql server را یه جا یا query anylizer و ... نصب می کردی و لی از امروز به بعد نیاز نیست نصب کنی
> در زیر توضیح دادم


MSDE?? 
مگر هنوز ازش استفاده میشه، تا جایی که یادمه این کهنه شد و از مایکروسافت دیگر ازش استفاده نمیکنه.
از اینکه در مورد تئوری لایه نویسی گفتم ، ببخشید، معلوم هست که ندانسته حرف زدم.

پس به این روش میشه از داتابیس اس کیو ال استفاده کرد بدانه داشتنه اس کیو ال داتابیس؟

----------


## benyamin_pc

آقا اگه Sample بذاری ممنون میشیم
این کارو انجام بدیم باز باید msde نصب شه؟اون فایل بانک میاد به برنامه اصافه میشه؟یعنی منظورم اینه که embed میشه یا لینک؟
یکم بیشتر توضیح بدین ممنون میشم

----------


## Alireza_Salehi

> منظورشون اینه که آیا همونطور که برای اجرا شدن برنامه های دات نت نیاز به دات نت فریم ورک هست آیا برای بخش sql آن هم نیاز یه نصب sql server روی ماشینی که قرار برنامه روش اجرا بشه نصب بشه جناب آرژنگ خان حرفه ای و برنامه نویس لایه ای
> 
> شما که یه چنین سوال ساده ای را متوجه نمیشی دلیل نداره که در تاپیک http://www.barnamenevis.org/sh...612#post354612 اینقدر به برنامه نویسی و تئوری خودت خصوصا در مورد لایه نویسی کلاس بذاری
> اگه یه برنامه کوچولو که توش با دیتا بیس کار میکرده نوشته بودی مطمونا سوال دوست عزیزمون را متوجه میشدی
> شایدم تا الان برای استفاده از دیتا بیست کل sql server را یه جا یا query anylizer و ... نصب می کردی و لی از امروز به بعد نیاز نیست نصب کنی
> در زیر توضیح دادم
> 
> 
> و اما جواب دوستمون 
> ...


اولا کاملا واضح است که MSDE بسیاری از امکانات SQL Server (حجم دیتابیس ، کارایی و ...) را ندارد و تنها به درد برنامه های کوچک می خورد و ثانیا در ویندوز ویستا پشتیبانی نمی شودو ه جای آن باید از SQL Server 2005 Express استفاده کنید!

در ضمن نصب اتوماتیک SQL Server (هر نسخه ای که باشه) اصلا کار سختی نیست و میشه اون رو با Setup برنامه یکی کرد.

----------


## choobin84

> در ضمن نصب اتوماتیک SQL Server (هر نسخه ای که باشه) اصلا کار سختی نیست و میشه اون رو با Setup برنامه یکی کرد.


فکر کنید که یه کاربر مبتدی بخاد sql server رو نصب کنه....!!!؟

 بعدش هم برنامه هایی که تاحالا نوشته می شدند با یه نصب خیلی راحت ،  از برنامه به راحتی استفاده می کردند و دردسر sql  و .net framwork  و..  رو نداشتند ، حالا بیاییم و بگیم ، کاربر محترم اگر میخاهید از برنامه خیلی خوب ما استفاده کنید ، اول این کار بعد اون یکی کار رو انجام بده،حالا این یکی رو هم انجام بده تا برنامه براتون کار کنه.
در ضمن اگر زحمت attach ‌کردن و پشتیبان گیری رو هم گردن کاربر محترم بیاندازیم، نور علی نور می شود)-:

مطمئنا مشتری بی خیال برنامه خیلی خوب شما خواهد شد.

نمی دونم مایکروسافت فکر این دردسر های برنامه نویس رو کرده یا نه؟ شاید هم عمدا این دردسر رو براش گذاشته، تا برنامه ها به وابسته باشند و برای پیدا کردن هرکدومشون ، باید پول خرج کرد.(الحمدلله ما از این پول خرج کردنا ، فعلا درامانیم.)
البته الان توی پاسخ شما ، نصب اتوماتیک  sql  رو دیدم، چطوری؟

----------


## benyamin_pc

> آقا اگه Sample بذاری ممنون میشیم
> این کارو انجام بدیم باز باید msde نصب شه؟اون فایل بانک میاد به برنامه اصافه میشه؟یعنی منظورم اینه که embed میشه یا لینک؟
> یکم بیشتر توضیح بدین ممنون میشم


اگه میشه حالا خوب و بد بودنش رو نادیده بگیرین و یکی در مورد این موارد یکم من رو راهنمایی کنه
البته یه سوال که فکر کنم مسخره باشه  :لبخند گشاده!:  با ویژوال سی پلاس پلاس مثلا" اگه یه برنامه که به Sql Server متصل بنویسیم دیگه نیاز به نصب Sql server رو کامپیوتر کاربر نیست؟یا مثلا" با دلفی یا وی بی؟

----------


## Alireza_Salehi

> میگم چطوره خود MS Visual Studio.net 2005 را هم به جای دات نت فریم ورک نصب کنیم
> هم امکاناتش بیشتره هم ......... نه ؟
> یا اصلا یه راه بهتر چطوره سورس برنامه را بدیم به کاربر بره حال کنه و خوش باشه


اولا : هر چیزی را برای کاری ساخته اند!
به نظر من با توجه به پشتیبانی نشدن MSDE در ویستا دیگه نباید ازش استفاده کرد. انتخاب بهتری به نام SQL Server 2005 Express با امکانات بیشتر وجود داره.

در صورتی که امکانات موجود در MSDE نسبت به نیازهای پروژه جوابگو باشد اشکالی در استفاده از آن وجود ندارد.

در ضمن پیشنهاد می کنم به جای جبهه گیری و نوشتن مطالب بیهوده فقط با بیان دلایل فنی و امکانات هر مورد استفاده یا عدم استفاده از آن را شرح بدید!






> فکر کنید که یه کاربر مبتدی بخاد sql server رو نصب کنه....!!!؟
> 
> بعدش هم برنامه هایی که تاحالا نوشته می شدند با یه نصب خیلی راحت ، از برنامه به راحتی استفاده می کردند و دردسر sql و .net framwork و.. رو نداشتند ، حالا بیاییم و بگیم ، کاربر محترم اگر میخاهید از برنامه خیلی خوب ما استفاده کنید ، اول این کار بعد اون یکی کار رو انجام بده،حالا این یکی رو هم انجام بده تا برنامه براتون کار کنه.
> در ضمن اگر زحمت attach ‌کردن و پشتیبان گیری رو هم گردن کاربر محترم بیاندازیم، نور علی نور می شود)-:
> مطمئنا مشتری بی خیال برنامه خیلی خوب شما خواهد شد.


اولا هیچ یک از این مواردی که میگید مشکل حساب نمی شوند و باعث فروش نرفتن برنامه نمی شوند! (معمولا وقتی برنامه نویسی تازه با دات نت آشنا میشه از این جور مشکلات پیدا میکنه)
تمام این موارد به صورت اتوماتیک به همراه برنامه Setup نصب می شوند.

ثانیا Access در پروژه های کوچک و متوسط خیلی راحت جوابگوست و نیازی به SQL Server نیست. 
در ضمن SQL Server امکاناتی دارد که به زحماتش می ارزد ، هر چند به نظر من زحمتی نداره! یک بار که یاد بگیرید چطور نصبش کنید دیگه مشکلی نخواهید داشت.

فلسفه وجودی SQL Server و کاربرد این دو کاملا جداست بنابراین ملزومات هر کدام فرق می کند.




> نمی دونم مایکروسافت فکر این دردسر های برنامه نویس رو کرده یا نه؟ شاید هم عمدا این دردسر رو براش گذاشته، تا برنامه ها به وابسته باشند و برای پیدا کردن هرکدومشون ، باید پول خرج کرد.(الحمدلله ما از این پول خرج کردنا ، فعلا درامانیم.)
> البته الان توی پاسخ شما ، نصب اتوماتیک sql رو دیدم، چطوری؟


کمی بیشتر مطالعه کنید!

----------


## hdv212

اخیرا مایکروسافت نسخه ی جدیدی از sql server ارائه کرده به نام SQL Server 2005 Compact Edition که هر دو قابلیت express edition و mobile edition رو داره، نکته ی قابل توجه اینکه pc رو هم پشتیبانی میکنه، اگه مشکل نصب sql خیلی برات مهمه میتونی روی این سیستم کار کنی که حجم کمی داره و میتونی با برنامه ت ارائه بدی، ولی توجه کن که فقط روی یه سیستم اجرا میشه، یادم میاد یکی دوماه پیش میخواستم روش کار کنم خیلی درد سر داشت از جمله اینکه باید sp1 روی visual studio 2005 خودت نصب باشه، برای اطلاعات بیشتر به این لینک برو :
http://www.microsoft.com/sql/edition...t/default.mspx

----------


## choobin84

> به نظر من با توجه به پشتیبانی نشدن MSDE در ویستا دیگه نباید ازش استفاده کرد.


به نظر شما با آمدن ویژوال استودیو 2003 ، استفاده از وی بی 6 قطع شد؟
یا با آمدن ویژوال استودیو 2005 ، کسی نباید از 2003 استفاده کند؟
یا همین که ویستا به بازار آمد ، از ایکس پی دست بکشیم؟ فکر میکنید ادارات زیر بار خرید اون میرن؟ اداراتی که برخی از کارمندهایشان حتی ویندوز بلد نیستند؟
در ضمن ویستا امکانات زیادی میخاد که بتونه نصب بشه؟ مثلا اولین چیزی که از نظر سخت افزاری باید برای ویستا تغییر داده بشه، ram رو باید به 512 ارتقا داد. 
اداره ای که تمام کامپیوتر هایش با ram ، از نوع 256 یا کمتر استفاده می کنند ، چقدر باید هزینه برای ازتقای سخت افزاری بدهد که می خواهد روی آن ویستا نصب کند.
(اگر از مواردی چون یادگیری نصب ویستا ، و یادگیری کار کدن با اون بگذریم.)
توی ایران خرید این اقلام به راحتی امکان پذیره اما فکر کنید که اگر قانون کپی رایت الزامی بشه، باید قدیمی ها رو دور انداخت و هر وقت مایکروسافت یه چیزی داد بیرون خیلی زود از قدیمی ها دست بکشیم و سراغ ویستا و امثال اون رو بگیریم.




> تمام این موارد به صورت اتوماتیک به همراه برنامه Setup نصب می شوند.


آیا ویژوال استودیو این امکان را برای برنامه نویس فراهم کرده است؟





> ثانیا Access در پروژه های کوچک و متوسط خیلی راحت جوابگوست و نیازی به SQL Server نیست.


اون وقت همون نرم افزاری که با اکسس نوشته شده و با اس کیو ال نیست رو نصف قیمت هم نمی خرند.
بعضی مردم عقلشون به چشمشونه.




> هر چند به نظر من زحمتی نداره! یک بار که یاد بگیرید چطور نصبش کنید دیگه مشکلی نخواهید داشت.


مشکل که حتما داره، نصبش برای من و شما و دیگران راحته،برای یکی که حتی بلد نیست  احتمالا فاجعه است.توی ادارات معمولا کارمندها از این دسته اند.




> کمی بیشتر مطالعه کنید!


متشکرم. چشم.

----------


## once4ever

همونطور که برای دات نت فریم ورک دو نمونه نصب وجود داره - یکی برای برنامه نویسها sdk و یکی برای اجرا شدن سیستمهای تحت دات نت- برای sql server هم همچین حالتی وجود داره و مطمئن باشید مایکروسافت خیلی بهتر به رفع این مشکلات میپردازه ;)
اما تفاوت اینها در اینه که چون توانایی sql server در بانک اطلاعاتی و کدهای مربوط به اونه، پس نسخه کاربردیش با نسخه developer تفاوت چندانی نداره
درضمن اگه حجم اطلاعات و کاری که با رکوردها انجام میشه زیاد نبود، دلیلی نداره از sql server استفاده کنید!
اما اگه حجم بالا بود اونوقته که اون اداره یا سازمان برنامه شمارو با قیمت بیشتر و دردسر (اگه بیشتر باشه! ) حاظر بخره تا اینکه 1ساعت صبر کنه یه فاکتورش ثبت بشه.
منم دوست دارم که از این به بعد دوستان راجب انواع مختلف نصب sql server صحبت کنند

----------


## Alireza_Salehi

> به نظر شما با آمدن ویژوال استودیو 2003 ، استفاده از وی بی 6 قطع شد؟
> یا با آمدن ویژوال استودیو 2005 ، کسی نباید از 2003 استفاده کند؟
> یا همین که ویستا به بازار آمد ، از ایکس پی دست بکشیم؟ فکر میکنید ادارات زیر بار خرید اون میرن؟ اداراتی که برخی از کارمندهایشان حتی ویندوز بلد نیستند؟
> در ضمن ویستا امکانات زیادی میخاد که بتونه نصب بشه؟ مثلا اولین چیزی که از نظر سخت افزاری باید برای ویستا تغییر داده بشه، ram رو باید به 512 ارتقا داد. 
> اداره ای که تمام کامپیوتر هایش با ram ، از نوع 256 یا کمتر استفاده می کنند ، چقدر باید هزینه برای ازتقای سخت افزاری بدهد که می خواهد روی آن ویستا نصب کند.
> (اگر از مواردی چون یادگیری نصب ویستا ، و یادگیری کار کدن با اون بگذریم.)
> توی ایران خرید این اقلام به راحتی امکان پذیره اما فکر کنید که اگر قانون کپی رایت الزامی بشه، باید قدیمی ها رو دور انداخت و هر وقت مایکروسافت یه چیزی داد بیرون خیلی زود از قدیمی ها دست بکشیم و سراغ ویستا و امثال اون رو بگیریم.


بنده به این مسائل واقفم فقط از لحاظ سازگاری برنامه با سیستم عامل های مختلف گفتم!
http://www.microsoft.com/sql/edition...s/sysreqs.mspx
http://www.microsoft.com/sql/prodinf...e/sysreqs.mspx




> آیا ویژوال استودیو این امکان را برای برنامه نویس فراهم کرده است؟


بعضی از نسخه هاش مثل Express رو بله آماده داره ، ولی بقیش هم قابل انجام است. در ضمن معمولا از برنامه های دیگری مثل InstallShield استفاده میشه تا Setup project های ویژوال استودیو.




> اون وقت همون نرم افزاری که با اکسس نوشته شده و با اس کیو ال نیست رو نصف قیمت هم نمی خرند.


حتما می دونید در همه جای جهان وقتی نرم افزاری می نویسند ورژن های متفاوت با امکانات متفاوتی ارائه می کنند که قیمت هاشون به طور معنی داری فرق میکنه!
وقتی ملت عادت کردن که همیشه فول ورژن یک چیز رو با قیمت 1000 تومان بخرند دیگه توضیح تفاوت Access و SQL Server آب در هاون کوبیدن است و بس ! 




> مشکل که حتما داره، نصبش برای من و شما و دیگران راحته،برای یکی که حتی بلد نیست احتمالا فاجعه است.توی ادارات معمولا کارمندها از این دسته اند.


کسی که این کار ها رو بلد نباشه یا دنبال یاد گرفنش هم نره بهتره برنامه نویسی رو بذاره کنار.
برای مشتری محصول هم در صورت وجود یک سیستم نصب اتوماتیک یا یک راهنمای جامع و بدون نقص برای نصب هیچ مشکلی وجود نخواهد داشت.

موفق باشید.

----------


## choobin84

> بنده به این مسائل واقفم فقط از لحاظ سازگاری برنامه با سیستم عامل های مختلف گفتم!
> http://www.microsoft.com/sql/edition...s/sysreqs.mspx
> http://www.microsoft.com/sql/prodinf...e/sysreqs.mspx
> 
> 
> بعضی از نسخه هاش مثل Express رو بله آماده داره ، ولی بقیش هم قابل انجام است. در ضمن معمولا از برنامه های دیگری مثل InstallShield استفاده میشه تا Setup project های ویژوال استودیو.
> 
> 
> حتما می دونید در همه جای جهان وقتی نرم افزاری می نویسند ورژن های متفاوت با امکانات متفاوتی ارائه می کنند که قیمت هاشون به طور معنی داری فرق میکنه!
> ...


من هم همینو گفتم...
ممنون

----------


## مهدی رحیم زاده

سلام 
می خواستم بدونم که چطوری می تونم با یک برنامه بانک رو به SQL Server ، (البته با کد نویسی) Attach کنم ؟؟؟

----------


## MH2538

سلام
در این مورد زیاد بحث شده است.
جستجو کن

----------


## mr_mtc

Attach رو که بعید میدونم !!!
ولی شما با کدنویسی میتونی بانک و جداولت رو تو خود برنامه ایجاد کنی

----------


## MH2538

> Attach رو که بعید میدونم !!!
> ولی شما با کدنویسی میتونی بانک و جداولت رو تو خود برنامه ایجاد کنی


هیچ وقت با این قاطعیت نگید نمی شه!
یه جستجو تو مطالبی که خود من فرستادم بکنید ،‌یه نمونه برنامه هم فرستادم

----------


## leilav_1984

Script ش رو از خود SQL Server2005 بردارید و اونو تو برنامه اجرا کنید

----------


## hdv212

و همچنین میتونی از این Stored Procedured استفاده کنی که سه تا پارامتر هم میگیره :
sp_attach_db
نمونه اش هم اینجاست :
EXEC sp_attach_db @dbname = N'pubs', 
   @filename1 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf', 
   @filename2 = N'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf'

----------


## مهدی رحیم زاده

میشه یه نمونه برنامه بزارید ، یا بیشتر توضیح بدین ...

----------


## hdv212

نمونه برنامه ی چیو بذارم، یه Sp ساده س که سه تا پارامتر باید بهش پاس کنی، نام دیتابیست و آدرس دو تا فایل دیتابیست.

----------


## mahsa_999

سلام من یه برنامه csharp نوشتم که توش از sqlserver DB استفاده کردم . حالا نمی دونم چطوری باید  database رو با استفاده از setup ایجاد کنم. البته نمی خوام مجبور بشم که sqlserver management studio رو روی کامپیوتر طرف نصب کنم. (توضیح: توی برنامه setup که ایجاد کردم sqlserver رو نصب می کنه اما خود db رو نمی دونم چطوری انتقال بدم)

----------


## hdv212

به چند حالت میتونی دیتابیس مورد نظرتو در کامپیوتر مقصد بارگذاری کنی، فعلا دوتاشو حضور ذهن دارم:
1. ایجاد script از دیتابیست
2. Detach کردن دیتابیس و Attach کردن اون در سیستم مقصد.

در حالت اول، در management studio بایستی روی دیتابیست راست کلیک کنی و از منوی ظاهر شده generate script رو بزنی و مراحل کار رو اداه بدی تا از کل دیتابیست و آبجکتهایی که انتخاب کردی یا script بسازه و اون اسکریپت رو میتونی در سیستم مقصد با دستورات معمولی sql در داخل برنامه ات run کنی(البته این نکته خیلی مهمه که اطلاعات شما انتقال پیدا نمیکنه بلکه فقط اسکریپت یه دیتابیس خام ایجاد میشه که این به مراتب بهتر و منطقی تره)

در حالت دوم بایستی دیتابیست رو از سیستم خودت Detach کنی و روی سیستم طرف attach کنی که باز میتونی با دستورات sql در برنامه ات ازش استفاده کنی، برای اطلاعات بیشتر به بخش sql server مراجعه کنید.

----------


## mahsa_999

در واقع می خوام برنامه نصبم این کارو انجام بده.

----------


## hassan razavi

شما میتونید فایلهای بانک رو در مسیری که میخواهید با برنامه نصب انتقال بدید ، سپس همیشه در اول برنامه پک کنید اگه بانک Attach شده بود که هیچ و اگر نبود از همون مسیری که برنامه نصب فایل رو گذاشته ، فایل را Attach کنید (توسط Store Procedure)

----------


## mehdisiavashian

کدی که کار attach  و deattach  دیتا بیس رو انجام می ده چیه؟ با تشکر

----------


## hassan razavi

از Stroe Procedure استفاده میشه. یه Search در تالار SQL Server همین سایت خودمون بزنید کلی لینک پیدا میکنید

----------


## hdv212

> کدی که کار attach و deattach دیتا بیس رو انجام می ده چیه؟


برای Attach کردن :
CREATE DATABASE [C:\DOCUMENTS AND SETTINGS\HAMED\MY DOCUMENTS\VISUAL STUDIO 2005\PROJECTS\TREEVIEW1\TREEVIEW1\BIN\DEBUG\DATABA  SE1.MDF] 
ON 
( FILENAME = N'C:\Documents and Settings\Hamed\My Documents\Visual Studio 2005\Projects\TreeView1\TreeView1\bin\Debug\Databa  se1.mdf' ),
( FILENAME = N'C:\Documents and Settings\Hamed\My Documents\Visual Studio 2005\Projects\TreeView1\TreeView1\bin\Debug\Databa  se1_log.ldf')
 FOR ATTACH

و برای Detach کردن :
EXEC master.dbo.sp_detach_db @dbname = N'C:\DOCUMENTS AND SETTINGS\HAMED\MY DOCUMENTS\VISUAL STUDIO 2005\PROJECTS\TREEVIEW1\TREEVIEW1\BIN\DEBUG\DATABA  SE1.MDF', @keepfulltextindexfile=N'true'
فقط  آدرس های خودتو بهش بده.




> در واقع می خوام برنامه نصبم این کارو انجام بده


ایجاد اسکریپت بهترین راه حله، میتونید در app.config برنامه تون یه متغیر ایجاد کنید و وقتی برنامه تون رو برای اولین بار روی سیستم طرف اجرا میکنید مقدار اونو چک کنید (مثلا مقدار پیشفرضش false هست یعنی بانک هنوز ایجاد نشده)، بعد اگه false بود اسکریپت مورد نظر رو run کنید و مقدار اون رو true کنید، برای دفعه های بعد چون مقدارش true هست یگه بانکی ساخته نمیشه، این بهترین راه حله.

----------


## mahsa_999

ممنون از راهنمایی های همه



> ایجاد اسکریپت بهترین راه حله، میتونید در app.config برنامه تون یه متغیر ایجاد کنید و وقتی برنامه تون رو برای اولین بار روی سیستم طرف اجرا میکنید مقدار اونو چک کنید (مثلا مقدار پیشفرضش false هست یعنی بانک هنوز ایجاد نشده)، بعد اگه false بود اسکریپت مورد نظر رو run کنید و مقدار اون رو true کنید، برای دفعه های بعد چون مقدارش true هست یگه بانکی ساخته نمیشه، این بهترین راه حله.


می شه در این مورد بیشتر توضیح بدین؟

----------


## Mrs.Net

من سوالمو چند روز تو بخش sql server پرسیدم اما کسی جواب نداد بهم 
لطفا اینجا جواب بدید چون مربوط به پروژه هست
لطفا یکی راهنماییم کنه. آیا این کارم درست هست:
یک بانک با sql server درست میکنم با یک یوزر و پسورد. بعد اون فایلو detach میکنم و فایلشو برمیدارم (mdf). حالا یک فایل دارم که:
1. در هردستگاهی با هر حالت sql server که داره فقط با اون یوزر و پسورد قابل دیدن و کار کردن هست
2. این تنها راه درست ایجاد یک فایل mdf هست
3. برای نصب کردن سیستم فقط کافیه که sqlserver express نصب باشه و یوزر پسورد ادمینش مهم نیست.
4. هیچکس به ساختار فایلم نمیتونه دسترسی داشته باشه جز با یوزر پسوردم

آیا این 4مورد درست هست و اگه توضیح میخواد بهم بگید
خیلی ممنون

----------


## hdv212

خب من منظرتو از این کار نمیدونم ولی میتونی از راههای زیر هم دیتابیست رو Publish کنی :
1. از دیتابیست اسکریپت بسازی یعنی روی دیتابیست right-click کن و Generate Script رو بزن.
2. میتونی از دیتابیست یه Backup بگیری و در مقصد با دستور restore دیتابیست رو بسازی.
ولی راه اولی قشنگ تر و فنی تره.

----------


## Mrs.Net

> 1. از دیتابیست اسکریپت بسازی یعنی روی دیتابیست right-click کن و Generate Script رو بزن.


 یعنی داخل اسکریپت میشه یوزر و پسورد مشخص کرد؟
سوال من خیلی ساده است احتمالا بد پرسیدم!
میخوام یک بانک sql درست کنم و در کنار exe برنامه باشه (به سرور attach نشه) همین

----------


## MOHSEN_D_62

ببخشید شما میفرمائید که MSDE تو ویستا ساپورت نمیشه ؟ پس ببخشید ما نرم افزار خودمون رو (هلو) چه جوری داریم تو ویستا نصب میکنیم میدیم دست مردم ؟ آقا تو رو خدا از این شوخا ها نکنید . مایکروسافت هم خودش اگه گفته باشه که نمیشه ، با ید بگم (فعلاً که شده )

----------


## choobin84

> ببخشید شما میفرمائید که MSDE تو ویستا ساپورت نمیشه ؟ پس ببخشید ما نرم افزار خودمون رو (هلو) چه جوری داریم تو ویستا نصب میکنیم میدیم دست مردم ؟ آقا تو رو خدا از این شوخا ها نکنید . مایکروسافت هم خودش اگه گفته باشه که نمیشه ، با ید بگم (فعلاً که شده )


ویندوز ویستا پیش فرض برخی موارد از جمله دات نت فرم ورک رو داره.
نرم افزار "هلو" هم نیازی به اینکه از قبل SQLServer‌نصب شده باشه نداره. چون در ستاپ خودش تمام کارهای لازم حتی Attach کردن رو هم انجام میده.
راستی، کی شوخی کرده؟

----------


## az_farzaneh

> منظورشون اینه که آیا همونطور که برای اجرا شدن برنامه های دات نت نیاز به دات نت فریم ورک هست آیا برای بخش sql آن هم نیاز یه نصب sql server روی ماشینی که قرار برنامه روش اجرا بشه نصب بشه
> 
> نه نیازی نیست که کل sql server را نصب کنید فقط کافیه msde مخفف (microsoft desktop engine ) که معمولا درون خود سی دی sql server هست را نصب کنید
> البته بایستی برای attach کردن دیتا بیس هاتون کد نویسی کنید
> 
> برا این عمل هم در books online دنبال sp_attach_db و sp_dettach_db باشین
> 
> store procedure اولی برای attach کردن و دومی برای detachکردن دیتا بیس ها هستند 
> فکر کنم بقیش را خودتون متوجه بسین
> ...


میشه در مورد استفاده از این کد در برنامه بیشتر توضیح  داده  بشه  ؟

----------


## sinpin

> میشه در مورد استفاده از این کد در برنامه بیشتر توضیح  داده  بشه  ؟


یک فایل اجرایی کوچیک درست کنید که sp_attach_db رو با پارامترهای دلخواه شما call کنه.

اگه جستجو میکردید هزاران مورد میدیدید:
https://barnamenevis.org/showthread.php?t=65019
https://barnamenevis.org/showthread.php?t=76342
https://barnamenevis.org/showthread.php?t=65627
https://barnamenevis.org/showthread.php?t=54185
https://barnamenevis.org/showthread.php?t=17073
sp_attach_db رو جستجو کنید تو همین سایت...

----------


## alirzn

سلام:
شما چطور برنامه sql server رو نصب می کنید در setup برنامتون؟




> ممنون از راهنمایی های همه
> 
> 
> می شه در این مورد بیشتر توضیح بدین؟

----------


## shr6557

سلام
من یک برنامه  می خوام بنویسم که به بانک اطلاعاتی sql sever وصل بشه آیا لازمه که در کامپیوتری که این برنامه قرار است اجرا بشه sql sever نصب شده باشه؟
در مورد دیگر بانک اطلاعاتی ها چطور مانند access ؟

----------


## hassan razavi

در مورد Access فقط نصب بودن Microdoft Jet OLE کافیه (که معمولا نصب هست) ولی در مورد SQL Server اگه از به سروری Connect میکنید ، نصب بودن SQL Server فقط بر روی سرور کافیه ، ولی اگه هر کامپیوتر بصورت مجزا برا خودش کار میکنه نصب بودن حداقل Client Tools لازمه.

----------


## rezaiy.ali

با سلام
اگر بانک را با Sql2000 طراحی کردی باید در کامپیوتر مقصد  MSDE2000 را نصب کنی که در خود CD برنامه وجود دارد اما اگر با sql2005 طراحی کردی باید Sql Server Express Edition را نصب کنی که تقریبا 32 مگابایت است.
در ضمن باید روی سیستم مقصد .Net FramWork را هم نصب کنی
موفق باشید.

----------


## Pioneers

در تکمیل آخرین پست، باید با کمک یه Batch File، دیتابیس رو Attach کنید.

----------


## hassan razavi

می تونی از Store Procedure هم برای Attach کردن استفاده کنی. جستجو کنی تو همین سایت فراون توضیح دادند

----------


## Pioneers

Stored Procedure برای اجرا مگه نباید Attach باشه؟

----------


## بهنام بهمنی

احتمالا منظور این بوده که ابتدا به ,master وصل بشیم بعد یک sp به master اضافه کنیم  و از طریق ان طریق db رو attach کنیم .
راحتر اینه که به master وصل شیم و بعد script مربوط به attache رو اجرا کنیمو

----------


## alirzn

کدوم table در master هست که اسم تمام databaseهای attach شده درونشه؟




> می تونی از Store Procedure هم برای Attach کردن استفاده کنی. جستجو کنی تو همین سایت فراون توضیح دادند

----------


## hassan razavi

در دیتابیس master جدولی بنام sysdatabases هست که نام تمام BataBase های Attach شده رو داره. میتونید با یک Query یا Streprocedure بفهمید که Attach شده یا خیر

----------


## alirzn

سلام:
آقا اون store procedure واسه attach رو واسم میفرستید؟ممنون



> در دیتابیس master جدولی بنام sysdatabases هست که نام تمام BataBase های Attach شده رو داره. میتونید با یک Query یا Streprocedure بفهمید که Attach شده یا خیر

----------


## MH2538

سلام
sp_attach_db
از استورپروسجرهای مربوط به master است.

----------


## rezaiy.ali

با سلام 
دوستان گرامی شما می تونید ابتدا دیتابیس را در SqlServer ایجاد کنید و با برنامه به SqlServer متصل بشین و داده ردوبدل کنید.
بعد از اینکه پروژه تون تمام شد و می خواستید که برنامه را Publish کنید بانک را از SqlServer خودتون Detach کنید و فایل بانک را در خود پروژه add کنید و کانکشن استرینگ را تغییر دهید.
زمانی که Publish می کنید بانک در خود شاخه Bin قرار داده میشه.
در کامپیوتر مقصد دیگه نیازی به نصب برنامه SqlServer نیست و فقط کافی است که برنامه SqlServer Express Edition را نصب کنید. نیاز به Attach  کردن نیست.
برنامه اجرا میشه.
موفق باشید

----------


## mahmood744

> با سلام 
> دوستان گرامی شما می تونید ابتدا دیتابیس را در SqlServer ایجاد کنید و با برنامه به SqlServer متصل بشین و داده ردوبدل کنید.
> بعد از اینکه پروژه تون تمام شد و می خواستید که برنامه را Publish کنید بانک را از SqlServer خودتون Detach کنید و فایل بانک را در خود پروژه add کنید و کانکشن استرینگ را تغییر دهید.
> زمانی که Publish می کنید بانک در خود شاخه Bin قرار داده میشه.
> در کامپیوتر مقصد دیگه نیازی به نصب برنامه SqlServer نیست و فقط کافی است که برنامه SqlServer Express Edition را نصب کنید. نیاز به Attach کردن نیست.
> برنامه اجرا میشه.
> موفق باشید


 :تشویق: 

دوست عزیز من با VB کار می کنم آیا می شود روش بالا را برای من به VB توضیح دهی 
که چگونه یک بانک SQL را در یک سیستم دیگر بتوانم راه اندازی کنم (آن هم با برنامه نویسی نه به صورت دستی)
باتشکر از راهنمایتان ....

----------


## mahmood744

> با سلام 
> دوستان گرامی شما می تونید ابتدا دیتابیس را در SqlServer ایجاد کنید و با برنامه به SqlServer متصل بشین و داده ردوبدل کنید.
> بعد از اینکه پروژه تون تمام شد و می خواستید که برنامه را Publish کنید بانک را از SqlServer خودتون Detach کنید و فایل بانک را در خود پروژه add کنید و کانکشن استرینگ را تغییر دهید.
> زمانی که Publish می کنید بانک در خود شاخه Bin قرار داده میشه.
> در کامپیوتر مقصد دیگه نیازی به نصب برنامه SqlServer نیست و فقط کافی است که برنامه SqlServer Express Edition را نصب کنید. نیاز به Attach کردن نیست.
> برنامه اجرا میشه.
> موفق باشید


دوست عزیز من با VB کار می کنم آیا می شود روش بالا را برای من به VB توضیح دهی 
که چگونه یک بانک SQL را در یک سیستم دیگر بتوانم راه اندازی کنم (آن هم با برنامه نویسی نه به صورت دستی)
باتشکر از راهنمایتان ....

----------


## rezaiy.ali

با سلام
این هم یه مثال
اگه برنامه را از شاخه \Sqlserver\Sqlserver\bin\Debug اجرا کنی برنامه بدون attach کردن برنامه اجرا میشه
موفق باشید

----------


## alirzn

آقا فایلی که گذاشتین ظاهرا مشکل داره. میشه دوباره بگذارید؟ممنون



> با سلام
> این هم یه مثال
> اگه برنامه را از شاخه \Sqlserver\Sqlserver\bin\Debug اجرا کنی برنامه بدون attach کردن برنامه اجرا میشه
> موفق باشید

----------


## rezaiy.ali

با سلام 
من برنامه را چک کردم مشکلی نداشت
لطفا مشکلی که شما به ان برخوردید را بنویسید
متشکر

----------


## razavi_university

در connection String چه چیزی رو دقیقا باید تغییر بدیم

----------


## alirzn

این کارو در صورتی میشه انجام داد که از sql server2005 خود .net استفاده کرده باشیم. واسه sql 2000 این کار عملی نیست . درسته؟




> با سلام 
> من برنامه را چک کردم مشکلی نداشت
> لطفا مشکلی که شما به ان برخوردید را بنویسید
> متشکر

----------


## rezaiy.ali

با سلام
با 2000 هم اینکار میشه انجام داد

----------


## alirzn

من نتونستم. میشه یکم دقیق تر بگید؟ من وقتی تو برنامه می خوام database رو add کنم.یک database خالی واسم می سازه . حالا چطور میتونم اون دو تا فایل mdf و ldf اصلیم که تو sql 2000  اتچ شده رو بهش نسبت بدم.؟



> با سلام
> با 2000 هم اینکار میشه انجام داد

----------


## hassan razavi

با توجه به اینکه سوالات زیادی در پستهای پراکنده ای در چند روز اخیر پیرامون نحوه Attach کردن بانکهای SQL Server ، تصمیم به ایجاد یک پست جدید البته همراه با جواب گرفتم. و اما روش :

1- در بانک master یک Stroe Priocedure بنام *sp_databases* وجود دارد که نتیجه برگشتی آن نام تمام بانکهای Attach شده در SQL Server هست. با اجرای آن می تونید چک کنید که بانکتون در حال حاضر Attach شده یا خیر

2- در بانک master یک Store Procedure بنام *sp_attach_db* وجود دارد که وظیفه Attach کردن بانکهارو انجام میده. پارامتر اول آن @dbname هست که نام DB رو میگیره و پارامتر دوم @filename1 هست که مسیر فایل MDF مورد نظر جهت Attach رو میگیره و پارامتر سوم که باید بدید filename2@ هست که مسیر فایل ldf رو میگیره.

برای دقت بهتر میتونید خودتون این دو Store Procedure رو ویرایش کنید و ببینید که به چه ترتیبه.


3- برای Deattach کردن آن نیز از *sp_detach_db* موجود در بانک master استفاده کنید.

می تونید در فرم Login یا Splash برنامتون sp_databases را اجرا کنید و اگه نام بانک تون موجود نبود محله 2 رو انجام دهید.

----------


## alirzn

مرسی از راهنماییت. آقا اون batch که واسه نصب sql server2000 گفتی رو من نتونستم پیدا کنم. شما نداریدش؟




> با توجه به اینکه سوالات زیادی در پستهای پراکنده ای در چند روز اخیر پیرامون نحوه Attach کردن بانکهای SQL Server ، تصمیم به ایجاد یک پست جدید البته همراه با جواب گرفتم. و اما روش :
> 
> 1- در بانک master یک Stroe Priocedure بنام *sp_databases* وجود دارد که نتیجه برگشتی آن نام تمام بانکهای Attach شده در SQL Server هست. با اجرای آن می تونید چک کنید که بانکتون در حال حاضر Attach شده یا خیر
> 
> 2- در بانک master یک Store Procedure بنام *sp_attach_db* وجود دارد که وظیفه Attach کردن بانکهارو انجام میده. پارامتر اول آن @dbname هست که نام DB رو میگیره و پارامتر دوم @filename1 هست که مسیر فایل MDF مورد نظر جهت Attach رو میگیره و پارامتر سوم که باید بدید filename2@ هست که مسیر فایل ldf رو میگیره.
> 
> برای دقت بهتر میتونید خودتون این دو Store Procedure رو ویرایش کنید و ببینید که به چه ترتیبه.
> 
> 
> ...

----------


## rezaiy.ali

با سلام
اول بانک را با Sql2000 بساز و برنامه را با sql2000 متصل کن بعد از این که برنامه نویسی برنامه تمام شد فایل از از sql دی تش کن و فایل بانک را در شاخه برنامه کپی کن و پروژه را با برنامه VS باز کن - در پنچره *Solution Explorer* فایل بانک به صورت یه شکلک سفید رنگ وجود داره روی اون شکلک رایت کلیک کن و گزینه Include in project را بزن-بعد کانکش را به بانک جدید تغییر بده
موفق باشید

----------


## setaresoheilIran

خیلی خوب بود . تقریبا به جواب خیلی از سوالام رسیدم . ولی هنوز چند تا ابهام وجود داره:1- آیا sp هایی که گفتید حتما باید در برنامه اجرا بشن یا از توی محیط sqlserver2000 هم میشه؟2- چطور باید sp هایی رو که گفتید از تو برنامه اجرا کنم ؟ (در vb توضیح بدید. )3-چطور باید اونها رو در محیط sqlserver2000 اجرا کنم ؟4-اگر بخواهیم یه برنامه نصب مثلا با instalshield بسازیم ، چطور باید db برنامه رو به msde 2000اضافه (attach) کرد ؟تشکر میکنـیــــــــــــــــم!

----------


## m_h_2007

در قسمتهای مختلف راجع به attache کردن با کدنویسی #c صحبت شده بود اما الگوریتم کلی این کار رو می خواستم
1-فایلهای mdf  و ldf باید حتما در هارد طرق قرار بگیرد تا عملیات attache انجام شود درسته ؟
2-بهترین راه چیه برای این کار و کلا انتقال دیتابیس به سرور برای کاربرانی که می خواهنداز برنامه استفاده کنند

----------


## hdv212

> در قسمتهای مختلف راجع به attache کردن با کدنویسی #c صحبت شده بود اما الگوریتم کلی این کار رو می خواستم


اینم نمونه کدش :
CREATE DATABASE [C:\DOCUMENTS AND SETTINGS\HAMED\MY DOCUMENTS\VISUAL STUDIO 2005\PROJECTS\TREEVIEW1\TREEVIEW1\BIN\DEBUG\DATABA  SE1.MDF] 
ON 
( FILENAME = N'C:\Documents and Settings\Hamed\My Documents\Visual Studio 2005\Projects\TreeView1\TreeView1\bin\Debug\Databa  se1.mdf' ),
( FILENAME = N'C:\Documents and Settings\Hamed\My Documents\Visual Studio 2005\Projects\TreeView1\TreeView1\bin\Debug\Databa  se1_log.ldf')
 FOR ATTACH



> 1-فایلهای mdf و ldf باید حتما در هارد طرق قرار بگیرد تا عملیات attache انجام شود درسته ؟


بله حتما باید باشن.



> 2-بهترین راه چیه برای این کار و کلا انتقال دیتابیس به سرور برای کاربرانی که می خواهنداز برنامه استفاده کنند


میتونید اسکریپت دیتابیس رو Generate کنید، یا اگه توش داده هست، میتونید از اون Backup بگیرید و در جای دیگه Restore کنید.

----------


## samprp

> در بانک master یک Stroe Priocedure بنام *sp_databases* وجود دارد که نتیجه برگشتی آن نام تمام بانکهای Attach شده در SQL Server هست. با اجرای آن می تونید چک کنید که بانکتون در حال حاضر Attach شده یا خیر


سلام
مطالب این تاپیک رو خوندم
یه سوال داشتم این استوریدپروس sp_databases رو انجام دادم کار می کرد .
ولی هر چی می خوام یه SELECT روش استفاده کنم نمی شه . یعنی به sp_databases خطا می ده *:
*(البته می خوام یه شرط رو هم اضافه کنم)SELECT DATABASE_NAME FROM sp_databasesممنون

----------


## masoudmmd

بزار ما هم یه کار خیر کنیم

SELECT * 
    FROM INFORMATION_SCHEMA.SCHEMATA where catalog_name like 'm%'
    ORDER BY CATALOG_NAME

----------


## مسعود منصوری

با سلام
آقا من به وسيله كد نويسي بانكمو Attach ميكنم ولي موقعه اتصال به Login, User ها و  اين مجوز ها گير ميده
بازم كه User, Loginها پاك ميكنمو رو ميسازم Error ميده ميگه اتصال ممكن نيست.
وقتي دستي Attachو  Deattach ميكنم درست ميشه به نظرتون راه حل چيه ؟ آيا كدي هست كه دقيقا مثل Attach دستي عمل كنه ؟

يه سوال ديگه تنظيمات SQL رو چجوري ميشه با كد نويسي دست كاري كرد ؟( مثل Run,Stop و SQL & windows و .....)

----------


## مسعود منصوری

كسي نيست جواب بده !!!!!!!

----------


## razavi_university

هر دو سوال كه پرسيديد:
1- Attach بوسيله كد نويسي
2- Run و Stop كردن SQL بوسيله خط فرمان
قبلا در سايت مطرح شده‌‌اند لطفا جستجو كنيد

----------


## مسعود منصوری

سلام
من بعد از جستجو سوالمو مطرح كردم
جواب هست ولي درست كار نميكنه لطفاً به سوال دقت كنيد.
*(( آيا كدي هست كه دقيقا مثل Attach دستي عمل كنه ؟ ))*
چون با كد و قتي attach ميكنم مجوز ها و Login ها به هم ميريزه

----------


## moferferi

سلام
یه برنامه گذاشتم که عملیاتattach ,backup ,restore ,
انجام میده.
https://barnamenevis.org/showth...=64210&page=21

----------


## ghuzebalaghuz

> اینم نمونه کدش :
> CREATE DATABASE [C:\DOCUMENTS AND SETTINGS\HAMED\MY DOCUMENTS\VISUAL STUDIO 2005\PROJECTS\TREEVIEW1\TREEVIEW1\BIN\DEBUG\DATABA  SE1.MDF] 
> ON 
> ( FILENAME = N'C:\Documents and Settings\Hamed\My Documents\Visual Studio 2005\Projects\TreeView1\TreeView1\bin\Debug\Databa  se1.mdf' ),
> ( FILENAME = N'C:\Documents and Settings\Hamed\My Documents\Visual Studio 2005\Projects\TreeView1\TreeView1\bin\Debug\Databa  se1_log.ldf')
>  FOR ATTACHبله حتما باید باشن.
> 
> میتونید اسکریپت دیتابیس رو Generate کنید، یا اگه توش داده هست، میتونید از اون Backup بگیرید و در جای دیگه Restore کنید.


سلام
خسته نباشید 
اگه لطف کنید و کد deattach کردن رو هم بزارید ممنون میشم

----------


## ghuzebalaghuz

> اینم نمونه کدش :
> CREATE DATABASE [C:\DOCUMENTS AND SETTINGS\HAMED\MY DOCUMENTS\VISUAL STUDIO 2005\PROJECTS\TREEVIEW1\TREEVIEW1\BIN\DEBUG\DATABA  SE1.MDF] 
> ON 
> ( FILENAME = N'C:\Documents and Settings\Hamed\My Documents\Visual Studio 2005\Projects\TreeView1\TreeView1\bin\Debug\Databa  se1.mdf' ),
> ( FILENAME = N'C:\Documents and Settings\Hamed\My Documents\Visual Studio 2005\Projects\TreeView1\TreeView1\bin\Debug\Databa  se1_log.ldf')
>  FOR ATTACHبله حتما باید باشن.
> 
> میتونید اسکریپت دیتابیس رو Generate کنید، یا اگه توش داده هست، میتونید از اون Backup بگیرید و در جای دیگه Restore کنید.


سلام
خسته نباشید 
اگه لطف کنید و کد deattach کردن رو هم بزارید ممنون میشم

----------


## mehranjoomla

سلام اقا آخر چی شد برای ATACH چکار باید کرد

----------


## mehranjoomla

کل کارهایی که باید انجام بدم چیه؟
آیا INSTALLSHIELD اینکار را نمیکند؟

----------


## pr1nce

سلام. آقایون من تازه کارمو تو حیطه ی برنامه نویسی شروع کردم. ی سوال دارم پس لطفا بطور ساده واسم توضیح بدین:
من میخوام ی برنامه بنویسم که تو حالت runtime بشه ی پایگاه داده رو ( هر نوعی که باشه sql - access -  ... ) به برنامه متصل کنم، داده هاشو بخونم ی سری کارا روشون انجام بدم و برشون گردونم تو همون پایگاه. به من گفتن ی کامپوننت واسه اینکه هرنوع بانکی رو به برنامه وصل کنی هست. میشه لطفا منو راهنمایی کنین؟؟؟

----------

