Làm thế nào để chèn vào bảng từ thủ tục lưu trữ từ xa mà không tạo giao dịch phân tán?


7

Làm cách nào tôi có thể chèn vào bảng cục bộ từ một thủ tục được lưu trữ từ xa mà không tạo giao dịch phân tán? Tôi muốn chạy một thủ tục được lưu trữ trên một máy chủ từ xa và sử dụng đầu ra làm nguồn để chèn vào một bảng cục bộ.


Bạn có thể cụ thể hơn không? Bạn muốn chạy một thủ tục được lưu trữ trên một máy chủ từ xa và sử dụng đầu ra làm nguồn để chèn vào một bảng cục bộ, hay sao?
JNK

Vâng, đó là ...
Guillermo Gutiérrez

Câu trả lời:


12

Đối với SQL Server 2008 trở lên , bạn có thể tắt các chương trình khuyến mãi cho máy chủ được liên kết. Nó nằm trên tab Thuộc tính nâng cao hoặc bạn có thể viết kịch bản như sau:

EXEC master.dbo.sp_serveroption 
    @server=N'YourLinkedServer', 
    @optname=N'remote proc transaction promotion', 
    @optvalue=N'false'


Đối với SQL Server 2005 , bạn có thể thêm máy chủ được liên kết OLE DB. Điều đó cho phép bạn nhập các tùy chọn chi tiết trong chuỗi kết nối.

Đây là cách cấu hình một máy chủ được liên kết như vậy. Nhấp Server Objects, sau đó nhấp chuột phải Linked Serversvà chọn New Linked Server.... Cấu hình máy chủ như sau:

  • Tab "Chung":
    • Máy chủ được liên kết: nhập tên của máy chủ được liên kết
    • Kiểm tra nguồn dữ liệu khác
    • Chọn nhà cung cấp Nhà cung cấp Microsoft OLE DB cho SQL Server
    • Tên sản phẩm: Nhập bất cứ thứ gì vào đây, như ZzzZZzzzz
    • Nhập chuỗi nhà cung cấp
      Data Source=<server or ip>,1433;Network Library=DBMSSOCN;Initial Catalog=<database name>;Enlist=false;
  • Tab "Bảo mật":
    • Chọn Được thực hiện bằng bối cảnh bảo mật này
    • Nhập tên người dùng và mật khẩu

Các Enlist=falsetrong chuỗi kết nối nên ngăn chặn các giao dịch phân tán.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.