Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Trình duyệt của bạn không được hỗ trợ

Bạn cần cập nhật trình duyệt của mình để sử dụng trang web.

Cập nhật lên Internet Explorer phiên bản mới nhất.

Khắc phục: Bạn nhận được một thông báo lỗi "ORA-01012" khi bạn kết nối đến một cơ sở dữ liệu Oracle bằng cách sử dụng MSDAORA

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:834905
TRIỆU CHỨNG
Bạn kết nối vào một cơ sở dữ liệu Oracle bằng cách sử dụng Microsoft OLE Nhà cung cấp DB Oracle (MSDAORA), và sau đó bạn ngắt kết nối trên máy chủ bên. Khi bạn mở một kết nối mới cơ sở dữ liệu Oracle từ của bạn ứng dụng, bạn nhận được thông báo lỗi ngoại lệ sau đây:
System.Data.OleDb.OleDbException: Lỗi không xác định
ORA-01012: không đăng nhập
NGUYÊN NHÂN
Khi bạn ngắt kết nối cơ sở dữ liệu Oracle trên các phía máy chủ trong khi sử dụng MSDAORA, kết nối hỏng là quay trở lại các kết nối hồ bơi. Kết nối tổng hợp mã không chính xác tương tác với các ResetConnection tài sản của MSDAORA. Khi thuộc tính này không được hỗ trợ bởi các nhà cung cấp, pooling mã không chính xác dịch rằng kết nối được đặt lại, và kết nối là một trong những hợp lệ. Khi khách hàng mã sẽ mở ra một mới kết nối, kết nối bị hỏng quay trở lại hồ bơi kết nối có thể truy xuất được. Vì vậy, bạn nhận được thông báo lỗi được đề cập trong các "Triệu chứng" phần.
GIẢI PHÁP

Thông tin hotfix

Một hotfix được hỗ trợ là bây giờ có sẵn từ Microsoft. Tuy nhiên, nó là nhằm khắc phục chỉ sự cố được mô tả trong bài viết này. Nó chỉ áp dụng cho hệ thống đang gặp vấn đề cụ thể này. Hotfix này có thể nhận được thử nghiệm bổ sung. Vì vậy, nếu bạn không bị ảnh hưởng bởi vấn đề này, chúng tôi đề nghị bạn đợi cho gói dịch vụ tiếp theo có chứa hotfix này.

Để giải quyết vấn đề này ngay lập tức, liên hệ với dịch vụ hỗ trợ khách hàng Microsoft để có được các hotfix. Đối với một danh sách đầy đủ các dịch vụ hỗ trợ Microsoft khách hàng số điện thoại và thông tin về chi phí hỗ trợ, ghé thăm Web site sau của Microsoft:Lưu ý Trong trường hợp đặc biệt, chi phí mà thường phải gánh chịu cho các cuộc gọi hỗ trợ có thể được hủy bỏ nếu chuyên viên hỗ trợ Microsoft xác định rằng một Cập Nhật cụ thể sẽ giải quyết vấn đề của bạn. Các chi phí hỗ trợ thông thường sẽ áp dụng để hỗ trợ thêm câu hỏi và vấn đề này không đủ điều kiện cho các Cập Nhật cụ thể trong câu hỏi.

Thông tin về tệp

Phiên bản tiếng Anh của hotfix này có các thuộc tính tệp (hoặc sau này tập tin thuộc tính) mà được liệt kê trong bảng sau. Ngày tháng và thời gian cho những tập tin được liệt kê trong giờ phối hợp quốc tế (UTC). Khi bạn xem chi tieát taäp tin, nó được chuyển đổi thành giờ cục bộ. Để biết sự khác nhau giữa UTC và local time, sử dụng các Múi giờ thẻ công cụ ngày và giờ trong Pa-nen điều khiển.
Các thành phần dữ liệu Microsoft Access (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
Chú ý
Hotfix này có sẵn như là một phần của một gói tích lũy hotfix. Khi bạn nhận được hotfix này từ dịch vụ hỗ trợ của Microsoft sản phẩm, số bài viết được liệt kê trong gói hotfix sẽ là 839801 cho MDAC 2.8 hoặc 836799 cho MDAC 2,7 SP1. Để biết thêm chi tiết, xem bài viết sau trong cơ sở kiến thức Microsoft:

MDAC 2,8
839801 Khắc phục: Hotfixes có sẵn cho MDAC 2,8
MDAC 2,7 SP1
836799 Khắc phục: Hotfixes có sẵn cho MDAC 2,7 Service Pack 1
TÌNH TRẠNG
Microsoft đã xác nhận rằng đây là một vấn đề trong các sản phẩm của Microsoft được liệt kê trong phần "Áp dụng cho".
THÔNG TIN THÊM

Các bước để tạo lại hành vi

  1. Bắt đầu Microsoft Visual Studio.NET.
  2. Trên các Tập tin trình đơn, điểm đếnMới, sau đó bấm Dự án. Các Mới Dự án hộp thoại sẽ xuất hiện.
  3. Dưới Các loại dự án, bấm Thị giác Các dự án cơ bản, sau đó bấm Giao diện điều khiển ứng dụngdưới Mẫu.
  4. Trong các Tên hộp, loạiMyApp, sau đó bấm Ok. Theo mặc định, các tập tin Module1.vb được tạo ra.

    Nếu bạn đang sử dụng Microsoft Visual C# .NET, các tập tin Class1.cs được tạo ra.
  5. Thêm mã sau ở đầu trang:

    Microsoft Visual Basic.NET mã
    Imports SystemImports System.Data.OleDb
    Visual C#.NET mã
    using System.Data.OleDb;
  6. Thêm mã sau đây để các Chínhthủ tục:

    Visual Basic.NET mã
    Dim cn As OleDbConnectionDim cmd As OleDbCommandDim r As OleDbDataReaderDim sid As StringDim orlcmd As StringDim 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 TryCatch ex As OleDbException   Console.WriteLine(ex.ToString())End TryConsole.WriteLine("Press ENTER to exit...")Console.ReadLine()
    Visual C#.NET mã
    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();
    Lưu ý Sửa đổi các chuỗi kết nối theo điều của bạn môi trường.
  7. Trên các Xây dựng trình đơn, nhấp vào Xây dựng Giải pháp.
  8. Trên các Gỡ lỗi trình đơn, nhấp vàoBắt đầu. Bạn thấy rằng một lệnh được trưng bày tại bàn điều khiển cửa sổ.
  9. Trong Oracle SQL * Plus, chạy lệnh sẽ được hiển thị trong cửa sổ giao diện điều khiển.
  10. Nhấn ENTER. Trong cửa sổ giao diện điều khiển, bạn nhìn thấy ngoại lệ đó đề cập đến trong phần "Triệu chứng".
THAM KHẢO
Để biết thêm về những Microsoft OLE DB Provider for Oracle, ghé thăm Web site sau của Microsoft Developer Network (MSDN): Cho thông tin bổ sung, bấm số bài viết sau đây để xem bài viết trong Microsoft Knowledge Base:
824684Mô tả thuật ngữ chuẩn được sử dụng để mô tả các bản cập nhật phần mềm của Microsoft
Sản phẩm của bên thứ ba rằng đây bài thảo luận về được sản xuất bởi các công ty độc lập Microsoft. Microsoft đưa ra không có bảo hành, ngụ ý hay cách khác, liên quan đến các hiệu suất hoặc độ tin cậy của các sản phẩm này.
OLEDB; MSDAORA; kết nối tổng hợp; giết phiên họp; Oracle; OleDbException

Cảnh báo: Bài viết này đã được dịch tự động

Thuộc tính

ID Bài viết: 834905 - Xem lại Lần cuối: 09/12/2011 08:19:00 - Bản sửa đổi: 3.0

  • kbhotfixserver kbqfe kbbug kbprovider kbconnectivity kbdatabase kboracle kbfix kbmt KB834905 KbMtvi
Phản hồi