דלג לתוכן הראשי
היכנס דרך Microsoft
היכנס או צור חשבון.
שלום,
בחר חשבון אחר.
יש לך חשבונות מרובים
בחר את החשבון שברצונך להיכנס באמצעותו.

מאפייני הבעיה

התחברות למסד נתונים של Oracle באמצעות ספק ה-Microsoft OLE DB עבור Oracle (MSDAORA), ולאחר מכן תסיים את החיבור בצד השרת. בעת פתיחת חיבור חדש למסד הנתונים של Oracle מהיישום שלך, תקבל את הודעת השגיאה הבאה של החריג:

System.Data.OleDb.OleDbException: שגיאה לא מוגדרת
ORA-01012: לא מחובר

הגורם

כאשר תסיים את החיבור למסד הנתונים של Oracle בצד השרת בעת שימוש ב- MSDAORA, חיבור שהתנתק יוחזר אל מאגר החיבורים. הקוד שינוים חיבור אינטראקציה באופן שגוי עם המאפיין ResetConnection של MSDAORA. כאשר מאפיין זה אינו נתמך על-ידי הספק, הקוד שינוים מפרש באופן שגוי החיבור מאופס ולאחר החיבור אינו חוקי. כאשר קוד לקוח פותח חיבור חדש, ניתן לאחזר את החיבור שהתנתק שהחזירו מאגר החיבורים. לפיכך, מתקבלת הודעת השגיאה המוזכרת בסעיף "מאפייני הבעיה".

פתרון

מידע על תיקונים חמים

תיקון חם נתמך זמין כעת מ- Microsoft. עם זאת, הוא מיועד רק את הבעיה המתוארת במאמר זה. יש להחיל אותו רק במערכות שהתעוררה בהן בעיה ספציפית זו. תיקון חם זה עשוי לעבור בדיקות נוספות. לכן, אם המערכת שברשותך לא נפגעה באופן חמור מבעיה זו, מומלץ להמתין למהדורת ה-service pack הבא המכיל תיקון חם זה.

כדי לפתור בעיה זו באופן מיידי, פנה לשירותי התמיכה בלקוחות של Microsoft לקבלת התיקון החם. לקבלת רשימה מלאה של מספרי הטלפון בשירותי התמיכה ללקוח של Microsoft ומידע על עלויות תמיכה, בקר באתר האינטרנט הבא של Microsoft:

http://support.microsoft.com/contactus/?ws=supportהערה במקרים מיוחדים, ניתן לבטל את החיובים שהצגת שיחות תמיכה אם מומחה תמיכה של Microsoft יקבע שעדכון ספציפי יפתור את הבעיה. דמי התמיכה המקובלים יחולו על נוספים שאלות וסוגיות תמיכה אשר אינן מצריכות העדכון הספציפי האמור.

פרטי קובץ

הגירסה האנגלית של תיקון חם זה כוללת את תכונות הקובץ (או תכונות קובץ מתקדמות יותר) המפורטות בטבלה הבאה. התאריכים והשעות המתייחסים לקבצים הללו רשומים לפי זמן אוניברסלי מתואם (UTC). כשמציגים את פרטי הקובץ, היא מומרת לזמן המקומי. כדי לברר את הפרש השעות בין זמן UTC לזמן המקומי, השתמש בכרטיסייה אזור זמן בכלי תאריך ושעה בלוח הבקרה.

רכיבי Access לנתונים של Microsoft (MDAC) 2.8
   Date         Time   Version         Size     File name
---------------------------------------------------------
10-Mar-2004 04:22 2.80.1036.0 225,280 Msdaora.dll
10-Mar-2004 04:22 2000.85.1036.0 24,576 Odbcbcp.dll
10-Mar-2004 04:21 2.80.1036.0 442,368 Oledb32.dll
10-Mar-2004 04:21 2000.85.1036.0 401,408 Sqlsrv32.dll
MDAC 2.7 ה-Service Pack 1
   Date         Time   Version         Size     File name
---------------------------------------------------------
10-Mar-2004 02:19 2000.81.9046.0 61,440 Dbnetlib.dll
10-Mar-2004 02:20 2.71.9046.0 221,184 Msdaora.dll
10-Mar-2004 02:15 2.71.9046.0 126,976 Msdart.dll
10-Mar-2004 02:15 3.520.9046.0 204,800 Odbc32.dll
10-Mar-2004 02:20 2000.81.9046.0 24,576 Odbcbcp.dll
10-Mar-2004 02:20 3.520.9046.0 98,304 Odbccp32.dll
10-Mar-2004 02:16 2.71.9046.0 417,792 Oledb32.dll
10-Mar-2004 02:19 2000.81.9046.0 471,040 Sqloledb.dll
10-Mar-2004 02:19 2000.81.9046.0 385,024 Sqlsrv32.dll

תיקון חם זה זמין כחלק חבילת התיקונים החמים המצטברים. כאשר תקבל את התיקון החם מתוך שירותי התמיכה במוצר של Microsoft, מספר מאמר מפורט בחבילת התיקון החם יהיה 839801 עבור MDAC 2.8 או 836799 עבור MDAC 2.7 SP1. לקבלת מידע נוסף, עיין במאמר הבא מתוך מאגר הידע Microsoft Knowledge Base:



MDAC 2.8

תיקון 839801 : תיקונים חמים זמינים עבור MDAC 2.8

MDAC 2.7 SP1

תיקון 836799 : תיקונים חמים זמינים עבור MDAC 2.7 Service Pack 1

מצב

Microsoft אישרה כי מדובר בבעיה במוצרי Microsoft הרשומים במקטע 'חל על'.

מידע נוסף

שלבים לשחזור ההתנהגות

  1. הפעל את Microsoft Visual Studio .NET.

  2. בתפריט קובץ , הצבע על
    חדש, ולאחר מכן לחץ על הפרוייקט. מופיעה תיבת הדו-שיח פרוייקט חדש .

  3. תחת סוגי פרוייקטים, לחץ על פרוייקטים Visual Basicולאחר מכן לחץ על יישום מסוףתחת תבניות.

  4. בתיבה שם , הקלד
    MyApp, ולאחר מכן לחץ על אישור. כברירת מחדל, הקובץ Module1.vb נוצר.

    אם אתה משתמש ב- Microsoft Visual C# .NET, יצירת קובץ ה-Class1.cs.

  5. הוסף את הקוד הבא בראש:

    קוד Microsoft Visual Basic .NET

    Imports System
    Imports System.Data.OleDb

    קוד visual C# .NET

    using System.Data.OleDb;
  6. הוסף את הקוד הבא לשגרת ראשי:

    קוד Visual Basic .NET

    Dim cn As OleDbConnection
    Dim cmd As OleDbCommand
    Dim r As OleDbDataReader
    Dim sid As String
    Dim orlcmd As String
    Dim connString As String = "Provider=MSDAORA;DataSource=<data source>;User ID=<user name>;Password=<password>;"
    Try
    'Create a new connection to the Oracle database by using MSDAORA.
    cn = New OleDbConnection
    cn.ConnectionString = connString
    cn.Open()
    cmd = New OleDbCommand
    cmd.CommandText = "SELECT SID , SERIAL# FROM V$SESSION WHERE SID = (SELECT SID FROM V$MYSTAT WHERE ROWNUM=1)"
    cmd.Connection = cn
    r = cmd.ExecuteReader()
    sid = ""
    If (r.Read()) Then
    sid = r.GetValue(0).ToString() + "," + r.GetValue(1).ToString()
    End If
    orlcmd = "Alter System Kill Session '" + sid + "' Immediate;"
    Console.WriteLine("Open the SQL Plus window, run the following command, and then press ENTER:")
    Console.WriteLine(orlcmd)
    Console.ReadLine()
    r.Close()
    cmd.CommandText = "SELECT count(*) from TAB"
    Try
    'Expecting this command to fail because connection has been killed
    r = cmd.ExecuteReader()
    Catch orlex As OleDbException
    Console.WriteLine(orlex.Message)
    cmd.Dispose()
    'Close the bad connection.
    cn.Close()
    System.Threading.Thread.Sleep(1000)
    cn.ConnectionString = connString
    cn.Open()
    cmd = New OleDbCommand
    cmd.CommandText = "SELECT count(*) FROM TAB"
    cmd.Connection = cn
    'This command will fail, but it will work when a new connection is used.
    r = cmd.ExecuteReader()
    If (r.Read()) Then
    Console.WriteLine(r.GetValue(0))
    End If
    End Try
    Catch ex As OleDbException
    Console.WriteLine(ex.ToString())
    End Try
    Console.WriteLine("Press ENTER to exit...")
    Console.ReadLine()

    קוד visual C# .NET

    OleDbConnection cn;
    OleDbCommand cmd;
    OleDbDataReader r;
    String sid;
    String orlcmd;
    String connString="Provider=MSDAORA;DataSource=<data source>;User ID=<user name>;Password=<password>;";
    try
    {
    //Create a connection to the Oracle database by using MSDAORA.
    cn= new OleDbConnection();
    cn.ConnectionString=connString;
    cn.Open();
    cmd=new OleDbCommand();
    cmd.CommandText="SELECT SID , SERIAL# FROM V$SESSION WHERE SID = (SELECT SID FROM V$MYSTAT WHERE ROWNUM=1)";
    cmd.Connection=cn;
    r=cmd.ExecuteReader();
    sid="";
    if(r.Read())
    {
    sid=r.GetValue(0).ToString()+","+r.GetValue(1).ToString();
    }
    orlcmd="Alter System Kill Session '"+sid+"' Immediate;";
    Console.WriteLine("Open the SQL Plus window, run the following command, and then press ENTER:");
    Console.WriteLine(orlcmd);
    Console.ReadLine();
    r.Close();
    cmd.CommandText="SELECT count(*) from TAB";
    try
    {
    //Expecting this to fail because the connection is killed.
    r=cmd.ExecuteReader();
    }
    catch(OleDbException orlex)
    {
    Console.WriteLine(orlex.Message);
    cmd.Dispose();
    //Close the bad connection.
    cn.Close();
    System.Threading.Thread.Sleep(1000);
    cn.ConnectionString=connString;
    cn.Open();
    cmd=new OleDbCommand();
    cmd.CommandText="SELECT count(*) FROM TAB";
    cmd.Connection=cn;
    //This command will fail, but it will work when a new connection is used.
    r=cmd.ExecuteReader();
    if(r.Read())
    {
    Console.WriteLine(r.GetValue(0).ToString());
    }
    }
    }
    catch(OleDbException ex)
    {
    Console.WriteLine(ex.ToString());
    }
    Console.WriteLine("Press ENTER to exit...");
    Console.ReadLine();

    הערה שנה את מחרוזת החיבור בהתאם לסביבה שלך.

  7. בניית התפריט, לחץ על בניית פתרון.

  8. בתפריט ' איתור באגים ', לחץ
    התחל. אתה רואה פקודה מוצג בחלון המסוף.

  9. ב- Oracle SQL * בנוסף, הפעל את הפקודה המוצגת בחלון המסוף.

  10. הקש ENTER. בחלון המסוף, תראה את החריג המוזכרת בסעיף "מאפייני הבעיה".

הפניות

לקבלת מידע נוסף אודות ספק OLE DB של Microsoft עבור Oracle, בקר באתר האינטרנט הבא של Microsoft מפתח רשת (MSDN):

http://msdn2.microsoft.com/en-us/library/ms810685.aspxלקבלת מידע נוסף, לחץ על מספר המאמר הבא כדי להציג את המאמר הרלוונטי מתוך Microsoft Knowledge Base:

824684 תיאור המינוח הרגיל המשמש לתיאור עדכוני התוכנה של מיקרוסופט

מוצרי ספקים חיצוניים הנזכרים במאמר זה מיוצרים על ידי חברות שאינן תלויות ב-Microsoft. חברת Microsoft אינה מעניקה אחריות, בין במפורש ובין במשתמע, לגבי הביצועים או האמינות של מוצרים אלה.

זקוק לעזרה נוספת?

מעוניין באפשרויות נוספות?

גלה את יתרונות המנוי, עיין בקורסי הדרכה, למד כיצד לאבטח את המכשיר שלך ועוד.

קהילות עוזרות לך לשאול שאלות ולהשיב עליהן, לתת משוב ולשמוע ממומחים בעלי ידע עשיר.

האם מידע זה היה שימושי?

עד כמה אתם מרוצים מאיכות השפה?
מה השפיע על החוויה שלך?
בלחיצה על 'שלח', אתה מאפשר למשוב שלך לשפר מוצרים ושירותים של Microsoft. מנהל ה-IT שלך יוכל לאסוף נתונים אלה. הצהרת הפרטיות.

תודה על המשוב!

×