Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cơ sở dữ liệu SQL Server trên chia sẻ UNC

AttachDbFileName là một tính năng khủng khiếp và gây hiểu lầm. Điều xảy ra là mỗi ứng dụng kết nối với "cơ sở dữ liệu" này tạo một bản sao của tệp dữ liệu. Vì vậy, nếu Machine1 kết nối và thực hiện thay đổi, những thay đổi đó không hiển thị đối với Machine2 . Điều này gây ra nhiều nhầm lẫn ngay cả trong kịch bản một máy vì mọi người sẽ kết nối qua Visual Studio, thực hiện một số cập nhật và sau đó sẽ không nhìn thấy nó từ Management Studio. Hoặc ngược lại. User Instance tính năng đã không còn được dùng nữa vì một lý do; vui lòng ngừng sử dụng cả hai.

Vì bạn muốn nhiều máy / ứng dụng kết nối với cùng một bản sao cơ sở dữ liệu của bạn, giải pháp bạn muốn là có một bản sao cơ sở dữ liệu duy nhất được đính kèm với một phiên bản SQL Server và cả hai ứng dụng / máy chỉ kết nối với bản sao duy nhất đó.

Trên MACHINE1-PC làm điều này:

  1. Di chuyển ShopDatabase.mdf.ldf được liên kết của nó tệp ra khỏi thư mục người dùng của bạn và vào thư mục dữ liệu cho phiên bản của bạn. Đây sẽ là cái gì đó như:

  2. Kết nối với phiên bản Express cục bộ bằng .\SQLEXPRESS . Đính kèm cơ sở dữ liệu sử dụng mã sau:

    CREATE DATABASE ShopDatabase 
      ON (FILENAME = 'C:\...\ShopDatabase.mdf'), 
      -------------------^^^ fill this in
         (FILENAME = 'C:\...\ShopDatabase_Log.ldf') 
      -------------------^^^ fill this in
    FOR ATTACH;
    
    -- if there is no log file, you may need to do:
    
    CREATE DATABASE ShopDatabase 
      ON (FILENAME = 'C:\...\ShopDatabase.mdf') 
      -------------------^^^ fill this in
    FOR ATTACH_REBUILD_LOG;
    
  3. Xác định địa chỉ IP bên ngoài của MACHINE1-PC (bạn có thể thực hiện việc này thông qua ping từ một máy khác - cục bộ nó sẽ cho bạn biết 127.0.0.1 mà là vô ích). Giả sử bạn có một IP cố định và không sử dụng DHCP, đây có thể sẽ là một cách kết nối đáng tin cậy hơn, hoặc ít nhất là thiếu một bước bổ sung (giải quyết tên). Nếu bạn sử dụng DHCP, mặc dù bạn sẽ không muốn dựa vào điều này vì địa chỉ IP của bạn có thể sẽ thay đổi theo thời gian. Chuỗi kết nối của bạn bây giờ sẽ là:

    Data Source=MACHINE1-PC\SQLEXPRESS;
      Network=DBMSSOCN;
      Integrated Security=True;
      Initial Catalog=ShopDatabase;
    
    -- or:
    
    Data Source=<<IP Address>>\SQLEXPRESS;
      Network=DBMSSOCN;
      Integrated Security=True;
      Initial Catalog=ShopDatabase;
    
    -- (replace <<IP Address>> of course)
    

Trên Machine1 chuỗi kết nối của bạn có thể sử dụng Data Source=.\SQLEXPRESS , nhưng tốt hơn là nên nhất quán hơn là lưu một vài lần nhấn phím. Bằng cách này nếu bạn thực hiện các thay đổi khác đối với tệp cấu hình của mình, v.v. chúng có thể được phân phối cho các máy khác mà không cần thay đổi tên máy.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hiểu Bí danh cột trong Truy vấn Chọn trong SQL Server - Hướng dẫn SQL Server / TSQL Phần 115

  2. Cách xóa các bản ghi KHÔNG VÀO

  3. Sự cố sao chép giao dịch SQL Server

  4. EAV qua SQL Server

  5. Stuff và 'For Xml Path' hoạt động như thế nào trong SQL Server?