Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Làm sao biết database server hiện tại bị die để tự động kết nối server khác

  1. #1
    Ngày gia nhập
    03 2009
    Bài viết
    28

    Mặc định Làm sao biết database server hiện tại bị die để tự động kết nối server khác

    giả sử có đoạn code sau nhé:
    Code:
    string strCon = @"Server=IP của server; Database=abc; uid=...; pqd=..."
    
    public DataTable GetDataTable(string query)
        {
            SqlDataAdapter adapter = new SqlDataAdapter(query, strCon);
            DataTable table = new DataTable();
            adapter.Fill(table);
            return table;
        }
    
    Trong sự kiện click của button
    {
    gridview1.DataSource = GetDataTable("Select * from SanPham");
    gridview1.DataBind()
    }
    Giả sử mình có nhiều cái database server đi nhé. trong chuỗi strCon thì mình chỉ có thể viết có 1 cái Ip Server thôi (Giả sử là IP của Server A).

    Nếu Server A này die thì có cách nào biết được Server A này đã die để chương trình tự động đi đến Server khác (VD Server B) để lấy dữ liệu và hiện lên gridview không vậy.
    Cám ơn các bác đã xem topic.

  2. #2
    Ngày gia nhập
    05 2010
    Bài viết
    505

    Bạn viết hàm connect riêng ra và dùng try catch để biết có connect đc hay ko.
    Ví dụ:

    Code:
                SqlConnection con = new SqlConnection(strCon);
                try
                {
                    con.Open();
                    //kết nối ok
                }
                catch (SqlException)
                {
                  // ko kết nỐi đc vì lý do nào đó, ví dụ: server die, thông số database, user, pass ko đúng,...
                }

  3. #3
    Ngày gia nhập
    03 2009
    Bài viết
    28

    Cái mình muốn là nó tự động đi đến database server khác để lấy dữ liệu. Chứ không phải là hiện ra lỗi và người dùng phải viết sửa lại cái connection string trong file app.config ( ở trên mình viết cho ngắn nên dùng biến string strCon ).
    Làm sao bạn biết được là database die trong phần catch
    Với lại là mình dùng SqlDataAdapter mà cái này thì không cần phải connection.Open().
    Đã được chỉnh sửa lần cuối bởi danchithancong : 14-03-2012 lúc 11:11 PM.

  4. #4
    Ngày gia nhập
    05 2010
    Bài viết
    505

    đọc reply của bạn mà hết muốn trả lời luôn, bạn làm lập trình mà quá thụ động lại thêm chút bảo thủ.
    - Cái thông báo lỗi ở trên mình để vậy cho bạn dễ hiểu, còn thực tế tùy bạn tùy biến, hay nói cụ thể hơn cái chỗ đó chính là chỗ để bạn biết không kết nối được database hiện tại (ví dụ server A) để chuyển sang thử kết nối tới server khác (bạn đừng hỏi lại sao lại biết database die trong phần catch nhé).
    - SqlDataAdapter hay bất kỳ cái nào tương tự muốn thao tác đc với dữ liệu thì cũng đều phải kết nối với database mới làm đc, vậy nên bạn đừng nói SqlDataAdapter thì không cần connection.Open().
    - Cuối cùng như mình đã nói ở trên, bạn nên viết riêng hàm connect ra (hàm này trả về SqlConnection), trong hàm này bạn sẽ thực hiện việc thay đổi server nếu server mặc định ko kết nối đc. Và khi sử dụng thì thay vì dùng SqlDataAdapter(commandText, connectionString) như hiện tại bạn dùng SqlDataAdapter(commandText, SqlConnection).

  5. #5
    Ngày gia nhập
    07 2006
    Nơi ở
    Hanoi, Vietnam
    Bài viết
    2,750

    Hãy tìm hiểu về Cluster hoặc Cloud Servers, Kevin đã trả lời ở đề tài: Kết nối 2 bảng từ 2 database trên 2 server khác nhau

    Hãy tìm hiểu trước rồi hỏi, không phải vấn đề nào cũng có thể giải quyết bằng vài dòng viết ở đây.
    Email: admin[@]congdongcviet.com | CC to: info[@]congdongcviet.com
    Phone: 0972 89 7667 (Office: 04 6329 2380)
    Yahoo & Skype: dreaminess_world (Vui lòng chỉ rõ mục đích ngay khi liên hệ, cảm ơn!)

    Một người nào đó coi thường ý thức kỷ luật cũng có nghĩa là người đó đã coi thường tương lai số phận của chính bản thân người đó. Những người coi thường ý thức kỷ luật sẽ không bao giờ có được sự thành công trong sự nghiệp!

  6. #6
    Ngày gia nhập
    03 2012
    Bài viết
    2

    Mặc định Làm sao biết database server hiện tại bị die để tự động kết nối server khác

    Đơn giản nhất là bạn sử dụng try catch, tuy không chính quy nhưng bảo đảm là dùng được trong đa số trường hợp

  7. #7
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Tôi suy nghĩ mãi mà không hiểu nổi tại sao bạn lại muốn kết nối với server khác. Dữ liệu như vậy làm sao đồng bộ được?
    Tuy nhiên, chắc tại mình còn kém kiến thức về multiple-server. Có lẽ bạn có cách đồng bộ của bạn.

    Trở lại vấn đề chính, không ai bắt buộc app.config chỉ chứa có 1 connstring cả. Cái app.config của tôi chứa khoảng nửa tá connstrings. Mỗi string chỉ đường connect tới một server+dbase khác nhau. Đương nhiên là trường hợp của tôi mõi dbase có mục đích riêng của nó.

    Trong trường hợp của bạn, cách giản dị nhất có lẽ là catch cái error, và xét xem trong message của nó có dòng này:
    "the server was not found or was not accessible" (hay đại khái như vậy)
    Nếu phải thì đổi sang cái connstring khác.
    Trong app.config, đặt name="....dbase1", name="....dbase2", vv... mỗi cái là một server
    Lúc load program, đặt một mảng connstr chứa đấm này.
    Lúc connect, try tuần tự cho đến chừng nào connect được hoặc hết mảng thì thôi.

    tb. trong cái link của KH đưa ra, tôi có đề nghị dùng linked server. Nhưng đó là vì vấn đề của tô bít kia khác hẳn với vấn đề của bạn. Bên kia người ta cần nối các bảng của hai dbase khác nhau.

  8. #8
    Ngày gia nhập
    05 2011
    Bài viết
    78

    Sử dụng try catch đi bạn.
    Try
    {}
    Catch
    {//Chuyển connect string}

  9. #9
    Ngày gia nhập
    04 2009
    Nơi ở
    Gầm cầu
    Bài viết
    2,230

    ko biết kĩ thuật đồng bộ database giữa các server của bạn ntn ?
    hay database của bạn chỉ readonly ?

Các đề tài tương tự

  1. Copy data từ SQL Server qua MySQL | Chuyển database từ SQL Server sang MySQL?
    Gửi bởi huynhngocduc_63 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 10
    Bài viết cuối: 16-12-2014, 01:27 PM
  2. MS SQL với C# Đồng bộ dữ liệu giữa 2 server Database SQL Server?
    Gửi bởi chubekhoua trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 2
    Bài viết cuối: 12-11-2013, 11:27 AM
  3. MS SQL Lỗi Cách sử dụng replication trong sql server 2012 để đồng bộ 2 database thành 1 database?
    Gửi bởi btk1902 trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 1
    Bài viết cuối: 22-07-2013, 02:24 PM
  4. Lỗi attach database failed for server, không thể add database vào server?
    Gửi bởi kh01664 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 21-05-2012, 07:27 PM
  5. Hiển Thị tất cả các Database trên server
    Gửi bởi minhitcn2 trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 2
    Bài viết cuối: 28-05-2008, 08:12 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn