aminghaderi
دوشنبه 28 آذر 1390, 09:58 صبح
با سلام ، خدمت دوستان بخش Asp.Net
شاید برای خیلی ها پیش آمده باشد که بخواهند وبسایت خودشون یا نرم افزار خودشون رو طوری طراحی کنند که خوب همه چی به صورت اتوماتیک و هوشمند مدیریت و کنترل بشود.
از این رو یک بحث کلی پیش روی ما دیتابیس (DataBase) هست که خوب ، همیشه به آن نیاز داریم .
چطور می شود کاری کرد که دیتابس ها نیز به صورت اتومات برجای خود قرارگیرند؟؟
شاید این سوالی باشد که خیلی از دوستان از جمله خودم دنبال راه حل برای آن هستیم.
روشهایی مرسوم در این رابطه وجود دارد :
1- برگرداندن فایل پشتیبان بروی دیتابیس که روی سرور ساختیم. (ساختار + داده ها)
2- استفاده از اسکریپت ها . (ساختار)
3- و شاید راه های دیگر که فعلا حضور ذهنم نیست.
اما ما می خواهیم کارمان راحتر و قابل دسترس تر باشد؟؟
اولین چیزی که به ذهن ما می رسد استفاده از دستور Atach در T-SQL هست.
<%@ Page Language="C#" MasterPageFile="~/Frame.master" Title="Untitled Page" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Web.Configuration" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.IO" %>
<script runat="server">
//|========================================|
//| My Variable |
//|========================================|
SqlConnection Cnn = new SqlConnection();
SqlCommand Cmd = new SqlCommand();
SqlDataAdapter Sda = new SqlDataAdapter();
DataSet Ds = new DataSet();
DataRow Dr;
string CommandText;
int Total;
int i;
//|==============================|
//|OtherVariable?? |
//|==============================|
//|================================================= ===========|
//| My Function |
//|================================================= ===========|
protected void Connect_1()
{
Ds.Reset();
Ds.Clear();
Cnn.ConnectionString = "initial catalog=master;integrated security=SSPI;";
Cmd.Connection = Cnn;
Cmd.CommandText = CommandText;
Sda.SelectCommand = Cmd;
Cnn.Open();
Cmd.ExecuteNonQuery();
Cnn.Close();
}
protected void Page_Load(object sender, EventArgs e)
{
Cmd.Parameters.Clear();
Cmd.Parameters.Add("@dbname", SqlDbType.VarChar, 260).Value = "MyDB";
Cmd.Parameters.Add("@filename1", SqlDbType.VarChar, 260).Value = Server.MapPath("App_Data//MyDB.mdf");
Cmd.Parameters.Add("@filename2", SqlDbType.VarChar, 260).Value = Server.MapPath("App_Data//MyDB_log.ldf");
CommandText = "EXEC sp_attach_db @dbname,@filename1,@filename2";
Connect_1();
}
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
</asp:Content>
که خوب اکثرا ما از این کد در نرم افزار های رومیزی استفاده می کنیم.
و در شبکه های کوچک هم می شود استفاده کرد .
اما چرا تحت وب نمی شود؟؟
در این تاپیک سعی شده در این زمینه و مشکلی که سر راه هست در حد توان مطالبی ارائه کرد که لازم می بینم از دوستان دعوت کنم در هر جا که اشکالی دیدند خیلی راحت بدون مقدمه و تعارف انتقاد کنند و همچنین اگر اطلاعاتی در این زمینه دارند ، ارائه دهند و من قبلا از در اختیار گذاشتن اطلاعاتشون سپاسگزاری می کنم.
خوب ، در این راستا ما کد معرفی شده را برای تست بروی سروری با پنل Plesk قرار دادیم و پس از اجرا شاهد این خطا بودیم :
Server Error in '/' Application.
Login failed for user ''. The user is not associated with a trusted SQL Server connection.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: Login failed for user ''. The user is not associated with a trusted SQL Server connection.
Source Error:
Line 38: Cmd.CommandText = CommandText;
Line 39: Sda.SelectCommand = Cmd;
Line 40: Cnn.Open();
Line 41: Cmd.ExecuteNonQuery();
Line 42: Cnn.Close();
Source File: d:\vhosts\anzimsazan.com\httpdocs\DB_Ataching.aspx Line: 40
در خطای بالا نشان می دهد که ما به اسکیوال موجود در سرور دسترسی پیدا می کنیم ولی نمی توانیم به داخل آن وارد شویم و دیتابیس خودمون رو اتصال بدهیم.
با این ایراد عملا دست ما بسته مانده و متوسل به جناب گوگل شدیم.
نتیجه چنین بود :
HOW TO: attach a SQL Database to PLesk SQl Server
hi guys,
I am facing problem in attaching my .mdf database file to plesk server. I m not able to find the option of attaching a database file. can you guys help me with this..????
1- Answer :
Hi Puneet,
You can attach database by using MSSQL Management studio (You have to install latest version). You need to login on rdesktop. If management studio not there in rdesktop then install, after installation please follow as per below.
1) First create database with same name in plesk but don't create user with same name. Create user id with different name.
2) Login on Rdesktop - Start - programs - SQL Management studio - Database - Right click - Attach - On right side it will ask for path for attaching .mdf and .ldf files. From here you can attach database to server.
OR
You can restore database in .bak format. In your local pc take backup of database in .bak format try same thing as above, i hope this will do for you.
2- Answer :
Hi
Please take backup of your database in .bak format.
1)Create database and user id with same names in plesk
2) Upload .bak file in to httpdocs folder
3) Login on rdesktop - start - programs - mssql management studio - Database - restore so that your database
will be restored.
منبع :http://forum.parallels.com/showthread.php?t=89072 .
نتیجه تا این لحظه : راهی برای Atach کردن دیتابیس بروی Plesk به صورت اتومات و هوشمند وجود ندارد و دلیلش هم به چند مورد بستگی پیدا می کند :
1- عدم مدیریت کاربران در استفاده از دیتابیس در هاست های اشتراکی.
2- پایین آمدن ضریب امنیت سرور.
3- استاندارد و چارچوب پلسک برای مدیریت فضای وب به این صورت هست و غیر از اون همون طور که در تالار خود پلسک هم مشاهده می کنید توضیح داده شده که چنین امکانی قرار گرفته نشده است.
اما راهی که خود پلسک جلوی ما قرار می دهد ، همانطور که به صورت انگلیسی مشاهده می کنید ، استفاده از اسکیوال منجر هست و یا همون راه مرسوم خودمان یعنی بکاپ گیری از دیتابیس.
اما همچنان هاست هایی هستند که امکان ساخت دیتابیس و گرفتن بکاپ و برگردادن آن را به کاربر نمی دهند ؟؟؟ تکلیف چیست؟؟
و همچنین مدیریت دیتابیس های حجیم با این روش دشوار هست و نیاز به پرداخت هزینه بالای انتقال و دریافت فایل های دیتابیس داریم .
پس جستجو درباره این مهم هنوز ادامه دارد ....
موفق باشید.
شاید برای خیلی ها پیش آمده باشد که بخواهند وبسایت خودشون یا نرم افزار خودشون رو طوری طراحی کنند که خوب همه چی به صورت اتوماتیک و هوشمند مدیریت و کنترل بشود.
از این رو یک بحث کلی پیش روی ما دیتابیس (DataBase) هست که خوب ، همیشه به آن نیاز داریم .
چطور می شود کاری کرد که دیتابس ها نیز به صورت اتومات برجای خود قرارگیرند؟؟
شاید این سوالی باشد که خیلی از دوستان از جمله خودم دنبال راه حل برای آن هستیم.
روشهایی مرسوم در این رابطه وجود دارد :
1- برگرداندن فایل پشتیبان بروی دیتابیس که روی سرور ساختیم. (ساختار + داده ها)
2- استفاده از اسکریپت ها . (ساختار)
3- و شاید راه های دیگر که فعلا حضور ذهنم نیست.
اما ما می خواهیم کارمان راحتر و قابل دسترس تر باشد؟؟
اولین چیزی که به ذهن ما می رسد استفاده از دستور Atach در T-SQL هست.
<%@ Page Language="C#" MasterPageFile="~/Frame.master" Title="Untitled Page" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Web.Configuration" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Net" %>
<%@ Import Namespace="System.IO" %>
<script runat="server">
//|========================================|
//| My Variable |
//|========================================|
SqlConnection Cnn = new SqlConnection();
SqlCommand Cmd = new SqlCommand();
SqlDataAdapter Sda = new SqlDataAdapter();
DataSet Ds = new DataSet();
DataRow Dr;
string CommandText;
int Total;
int i;
//|==============================|
//|OtherVariable?? |
//|==============================|
//|================================================= ===========|
//| My Function |
//|================================================= ===========|
protected void Connect_1()
{
Ds.Reset();
Ds.Clear();
Cnn.ConnectionString = "initial catalog=master;integrated security=SSPI;";
Cmd.Connection = Cnn;
Cmd.CommandText = CommandText;
Sda.SelectCommand = Cmd;
Cnn.Open();
Cmd.ExecuteNonQuery();
Cnn.Close();
}
protected void Page_Load(object sender, EventArgs e)
{
Cmd.Parameters.Clear();
Cmd.Parameters.Add("@dbname", SqlDbType.VarChar, 260).Value = "MyDB";
Cmd.Parameters.Add("@filename1", SqlDbType.VarChar, 260).Value = Server.MapPath("App_Data//MyDB.mdf");
Cmd.Parameters.Add("@filename2", SqlDbType.VarChar, 260).Value = Server.MapPath("App_Data//MyDB_log.ldf");
CommandText = "EXEC sp_attach_db @dbname,@filename1,@filename2";
Connect_1();
}
</script>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
</asp:Content>
که خوب اکثرا ما از این کد در نرم افزار های رومیزی استفاده می کنیم.
و در شبکه های کوچک هم می شود استفاده کرد .
اما چرا تحت وب نمی شود؟؟
در این تاپیک سعی شده در این زمینه و مشکلی که سر راه هست در حد توان مطالبی ارائه کرد که لازم می بینم از دوستان دعوت کنم در هر جا که اشکالی دیدند خیلی راحت بدون مقدمه و تعارف انتقاد کنند و همچنین اگر اطلاعاتی در این زمینه دارند ، ارائه دهند و من قبلا از در اختیار گذاشتن اطلاعاتشون سپاسگزاری می کنم.
خوب ، در این راستا ما کد معرفی شده را برای تست بروی سروری با پنل Plesk قرار دادیم و پس از اجرا شاهد این خطا بودیم :
Server Error in '/' Application.
Login failed for user ''. The user is not associated with a trusted SQL Server connection.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Data.SqlClient.SqlException: Login failed for user ''. The user is not associated with a trusted SQL Server connection.
Source Error:
Line 38: Cmd.CommandText = CommandText;
Line 39: Sda.SelectCommand = Cmd;
Line 40: Cnn.Open();
Line 41: Cmd.ExecuteNonQuery();
Line 42: Cnn.Close();
Source File: d:\vhosts\anzimsazan.com\httpdocs\DB_Ataching.aspx Line: 40
در خطای بالا نشان می دهد که ما به اسکیوال موجود در سرور دسترسی پیدا می کنیم ولی نمی توانیم به داخل آن وارد شویم و دیتابیس خودمون رو اتصال بدهیم.
با این ایراد عملا دست ما بسته مانده و متوسل به جناب گوگل شدیم.
نتیجه چنین بود :
HOW TO: attach a SQL Database to PLesk SQl Server
hi guys,
I am facing problem in attaching my .mdf database file to plesk server. I m not able to find the option of attaching a database file. can you guys help me with this..????
1- Answer :
Hi Puneet,
You can attach database by using MSSQL Management studio (You have to install latest version). You need to login on rdesktop. If management studio not there in rdesktop then install, after installation please follow as per below.
1) First create database with same name in plesk but don't create user with same name. Create user id with different name.
2) Login on Rdesktop - Start - programs - SQL Management studio - Database - Right click - Attach - On right side it will ask for path for attaching .mdf and .ldf files. From here you can attach database to server.
OR
You can restore database in .bak format. In your local pc take backup of database in .bak format try same thing as above, i hope this will do for you.
2- Answer :
Hi
Please take backup of your database in .bak format.
1)Create database and user id with same names in plesk
2) Upload .bak file in to httpdocs folder
3) Login on rdesktop - start - programs - mssql management studio - Database - restore so that your database
will be restored.
منبع :http://forum.parallels.com/showthread.php?t=89072 .
نتیجه تا این لحظه : راهی برای Atach کردن دیتابیس بروی Plesk به صورت اتومات و هوشمند وجود ندارد و دلیلش هم به چند مورد بستگی پیدا می کند :
1- عدم مدیریت کاربران در استفاده از دیتابیس در هاست های اشتراکی.
2- پایین آمدن ضریب امنیت سرور.
3- استاندارد و چارچوب پلسک برای مدیریت فضای وب به این صورت هست و غیر از اون همون طور که در تالار خود پلسک هم مشاهده می کنید توضیح داده شده که چنین امکانی قرار گرفته نشده است.
اما راهی که خود پلسک جلوی ما قرار می دهد ، همانطور که به صورت انگلیسی مشاهده می کنید ، استفاده از اسکیوال منجر هست و یا همون راه مرسوم خودمان یعنی بکاپ گیری از دیتابیس.
اما همچنان هاست هایی هستند که امکان ساخت دیتابیس و گرفتن بکاپ و برگردادن آن را به کاربر نمی دهند ؟؟؟ تکلیف چیست؟؟
و همچنین مدیریت دیتابیس های حجیم با این روش دشوار هست و نیاز به پرداخت هزینه بالای انتقال و دریافت فایل های دیتابیس داریم .
پس جستجو درباره این مهم هنوز ادامه دارد ....
موفق باشید.