PDA

View Full Version : سوال: خطا در هنگام select * into



mehrnoosh_al62
پنج شنبه 09 خرداد 1387, 10:57 صبح
سلام دوستان .
تو یه قسمت از برنامم از خط زیر :
" select * into backup_db.dbo.Table1 from DB.dbo.Table1"

یه خطا میده که نمیدونم دلیلش چیه. در ضمن فقط گاهی اوقات این خطا رو میده و گاهی اوقات هم برنامم اجرا میشه

خطا:
Internal Query Processor Error: The query processor encountered an unexpected error during execution.

AminSobati
پنج شنبه 09 خرداد 1387, 14:49 عصر
http://support.microsoft.com/kb/323586

mehrnoosh_al62
پنج شنبه 09 خرداد 1387, 15:23 عصر
http://support.microsoft.com/kb/323586


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

AminSobati
پنج شنبه 09 خرداد 1387, 16:22 عصر
آخرین سرویس پک SQL Server رو نصب کردین؟

mehrnoosh_al62
یک شنبه 12 خرداد 1387, 08:44 صبح
من نمونه کدم رو میگذارم که راهنماییم کنید. دفعه اول که این تابع رو اجرا میکنم اجرا میشه اما دفعه دوم از خط select * into خطا میگیره : نکته جالب اینجاست که بعد از خطا اگه مثلا قبل از همین دستور فقط یه space اضافه کنم بازم اجرا میشه. لطفا راهنماییم کنید خیلی توش گیر کردم!

public void Create_Backup(string format)
{


try
{
SqlCommand sqlcomm = new SqlCommand();
DataTable table_select = new DataTable();
SqlDataAdapter adp = new SqlDataAdapter();
sqlcomm.Connection = new SqlConnection();
sqlcomm.Connection.ConnectionString = "Data Source=" + cboServer.SelectedItem.ToString() + ";Initial Catalog=" + cbodatabase.SelectedItem.ToString() + ";Integrated Security=True";
sqlcomm.Connection.Open();
sqlcomm.CommandText = " create database backup_db";
sqlcomm.ExecuteNonQuery();
sqlcomm.CommandText = " select * from sysobjects where xtype='u' ";
adp.SelectCommand = sqlcomm;
adp.Fill(table_select);

for (int i = 0; i < table_select.Rows.Count; i++)
{
sqlcomm.CommandText =" use backup_db "+

" select * into backup_db.dbo." + table_select.Rows[i][0].ToString() + " from " + cbodatabase.SelectedItem.ToString() + ".dbo." + table_select.Rows[i][0].ToString();

sqlcomm.ExecuteNonQuery();

}
sqlcomm.CommandText = " use master "+
" BACKUP DATABASE backup_db TO DISK = '" + textBox1.Text.Trim() + format +"' with password='" + bak_password + "'"+
" drop database backup_db";
sqlcomm.ExecuteNonQuery();
sqlcomm.Connection.Close();
MessageBox.Show("پشتیبان گیری با موفقیت انجام شد");
bak_password="";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "خطای پشتیبان گیری");

mehrnoosh_al62
یک شنبه 12 خرداد 1387, 11:00 صبح
یعنی واقعا هیچکس جواب سوال منو نمیدونه ؟!!!
بابا یکی به داد من برسه...

ASKaffash
یک شنبه 12 خرداد 1387, 11:30 صبح
سلام
شما یک لطفی کنید CommandTimeoutرا برای شی sqlcomm افزایش دهید چون پیش فرض 30 ثانیه است

mehrnoosh_al62
یک شنبه 12 خرداد 1387, 13:38 عصر
نمیشه. بازم مشکل دارم. تا 500 هم زیادش کردم ولی نشد. چه مقداری باید بهش بدم؟
وقتی اینکارو کردم حالا دیگه همونیه باری هم که اجرا میشد دیگه نمیشه و همون دفعه اول error میده

ASKaffash
یک شنبه 12 خرداد 1387, 16:14 عصر
با سلام
چون بانک شما را نداریم تست تخیلی است لطفا بخش for را به شکل ذیل عوض کنید :


for (int i = 0; i < table_select.Rows.Count; i++)
{
SqlCommand MySqlcomm = new SqlCommand();
MySqlcomm.Connection = new SqlConnection();
MySqlcomm.Connection.ConnectionString = sqlcomm.Connection.ConnectionString;
MySqlcomm.Connection.Open();
MySqlcomm.CommandText = "use backup_db Go Select * into backup_db.dbo." + table_select.Rows[i][0].ToString() + " from " + cbodatabase.SelectedItem.ToString() + ".dbo." + table_select.Rows[i][0].ToString();
MySqlcomm.ExecuteNonQuery();
}

mehrnoosh_al62
دوشنبه 13 خرداد 1387, 08:26 صبح
پیغام میده : incorect syntax near GO

وقتی GO رو برمیدارم این پیغام خطا رو میده که :
can not drop the database backup_db it is in use
به جای use backup_db GO آخر دستور این خط رو اضافه کردم : option (keep plan)
باز هم ماجراهای قبلی و اون ERROR اولی تکرار میشه/.
واقعا هیچ راهی نیست؟؟؟؟؟؟:ناراحت:

linux
دوشنبه 13 خرداد 1387, 09:41 صبح
پیغام میده : incorect syntax near GO

وقتی GO رو برمیدارم این پیغام خطا رو میده که :
can not drop the database backup_db it is in use
به جای use backup_db GO آخر دستور این خط رو اضافه کردم : option (keep plan)
باز هم ماجراهای قبلی و اون ERROR اولی تکرار میشه/.
واقعا هیچ راهی نیست؟؟؟؟؟؟:ناراحت:
Go کلمه ای هست که در QA برای جدا کردن دستورات از هم تعریف شده.
استفاده از آن به این صورت اشتباه هست.
وقتی در کانکشن استرینگ کاتالوگ را معرفی می کنی یعنی هما use database

linux
دوشنبه 13 خرداد 1387, 09:53 صبح
سلام دوستان .
تو یه قسمت از برنامم از خط زیر :
" select * into backup_db.dbo.Table1 from DB.dbo.Table1"

یه خطا میده که نمیدونم دلیلش چیه. در ضمن فقط گاهی اوقات این خطا رو میده و گاهی اوقات هم برنامم اجرا میشه

خطا:
Internal Query Processor Error: The query processor encountered an unexpected error during execution.
با این دستور می خواهید چکار کنید؟!

mehrnoosh_al62
دوشنبه 13 خرداد 1387, 10:05 صبح
http://support.microsoft.com/kb/323586
به این صفحه مراجعه کنید.

وقتی backup database رو حذف میکنم دیگه دستور select * into مشکلی نداره !
یعنی بین backup و select into تداخل پیش میاد؟؟؟

linux
دوشنبه 13 خرداد 1387, 10:15 صبح
ns
یعنی واقعا هیچکس جواب سوال منو نمیدونه ؟!!!
بابا یکی به داد من برسه...
http://www.w3schools.com/Sql/sql_select_into.asp

ASKaffash
دوشنبه 13 خرداد 1387, 10:21 صبح
سلام
لطفا اگر مقدور است یک بخش از پایگاه داده وسورس را قرار دهید تا عملی تست شود

linux
دوشنبه 13 خرداد 1387, 10:37 صبح
سلام
لطفا اگر مقدور است یک بخش از پایگاه داده وسورس را قرار دهید تا عملی تست شود
چی را می خواهی تست کنی وقتی دستور کلا غلط هست؟

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


SELECT Persons.* INTO Persons IN 'Backup.mdb'FROM Persons


select Table1.* into Table1 IN 'backup_db.mdb' from Table1

mehrnoosh_al62
دوشنبه 13 خرداد 1387, 10:47 صبح
من میخوام با پسوند bak از دیتابیسم backup بگیرم در ضمن select into من مشکلی نداره میتونید توQuery Analyzer امتحان کنید

linux
سه شنبه 14 خرداد 1387, 01:41 صبح
من میخوام با پسوند bak از دیتابیسم backup بگیرم در ضمن select into من مشکلی نداره میتونید توQuery Analyzer امتحان کنید
برای backup دستورات دیگر داریم. این دستور از روی یک جدول یک کپی میگیره با یک اسم جدید تو همان دیتابیس یا دیتابیس دیگر

mehrnoosh_al62
پنج شنبه 20 تیر 1387, 09:11 صبح
سلام دوستان
من هنوز این مشکلم تو برنامم کاملا حل نشده. البته دیگه مثل قبل نیست که دفعه دوم ارور بده . میتونم بار ها و بارها از برنامم پشتیبان بگیرم بدون ارور. اما نهایتا یه جایی این ارور رو میده و دیگه واقعا نمیدونم چیکار کنم. لطفا اگه کسی میتونه کمکم کنه. ممنون میشم...

mehrnoosh_al62
یک شنبه 23 تیر 1387, 08:47 صبح
یعنی واقعا برای این مشکل من هیچ راهی نیست... ؟ !!!!!
آخه این چه اروریه که هیچکس راهشو نمیدونه؟؟؟ خواهش میکنم اگه راهی به ذهنتون میرسه بگید...

saman_itc
پنج شنبه 27 تیر 1387, 10:07 صبح
Example:

Instead of using the following:
select * into test2..t2 from test1..t1
Change it to either of the following:
select * into test2..t2 from test1..t1 option (keep plan)
-or-
use test2goselect * into test2..t2 from test1..t1

mehrnoosh_al62
شنبه 29 تیر 1387, 08:14 صبح
سلام
مرسی بابت راهنماییتون
این راهو رفتم ولی مشکلم کاملا حل نشده. هنوز هم ارور میده