Bước công việc SQL chạy dưới dạng tài khoản sql khác nhau


11

Tôi tò mò làm thế nào để thiết lập một bước công việc SQL được thực thi như một tài khoản đăng nhập SQL khác. Dường như tôi cần thiết lập Tài khoản Proxy mới yêu cầu thông tin xác thực hiện có. Khi tôi tạo thông tin đăng nhập, tùy chọn duy nhất của tôi là sử dụng thông tin đăng nhập Windows.

Công việc tôi đang cố gắng để chạy là dưới đây. Có các câu lệnh bổ sung khác nhưng khi tôi đặt bước công việc để chạy khi đăng nhập SQL thì không thành công.

insert into [dbo].[TableA]
SELECT 
       ss.[Ref_ID]
      ,mm.[studentID]
      ,mm.[studentPersonID]
      ,mm.[studentFirstname]
  FROM [dbo].[TableB] mm
  left outer join [dbo].[TableC] ss on ss.parentPersonID=mm.parentPersonID and mm.studentPersonID = ss.studentPersonID
  where ss.Ref_ID is not null;

Khi điều này được chạy qua Bước công việc SQL, nó thất bại.

Executed as user: an_admin_account. Access to the remote server is denied because the current security context is not trusted. [SQLSTATE 42000] (Error 15274).  The step failed.

Tôi không rõ tại sao nó cố truy cập vào một máy chủ từ xa khi tất cả các bảng này tồn tại trên db cục bộ.


Một bước công việc SQL đã có một kết nối đến phiên bản SQL. Vì vậy, bạn cần thay đổi bối cảnh bảo mật hiện có, thay vì tạo kết nối mới bằng mật khẩu. Nếu bạn muốn tạo kết nối mới, bạn có thể sử dụng lệnh sqlcmd hoặc tập lệnh PowerShell, sau đó có thể sử dụng thông tin đăng nhập và mật khẩu SQL làm tham số trong tập lệnh. Nhưng bạn nên xem xét những gì bạn cần làm, và liệu một Proc được lưu trữ với bối cảnh riêng của nó sẽ đủ.
Rob Farley

Câu trả lời:


14

Nếu bạn đang định cấu hình bước công việc T-SQL, hãy chuyển đến Trang nâng cao và định cấu hình "Chạy với tư cách người dùng" để đăng nhập theo lựa chọn của bạn. nhập mô tả hình ảnh ở đây

Nếu bạn đang làm việc với các loại bước công việc khác như PowerShell, nó sẽ yêu cầu một tài khoản proxy được cấu hình.


Tôi đã thử điều này nhưng bây giờ công việc thất bại khi nói "Truy cập vào máy chủ từ xa bị từ chối vì bối cảnh bảo mật hiện tại không đáng tin cậy". Tuy nhiên nếu tôi chạy tập lệnh trong khi đăng nhập với tư cách người dùng, nó có thể chạy tốt. Không có máy chủ được liên kết trong truy vấn nên tôi không hiểu tại sao nó lại đề cập đến một máy chủ từ xa. Có suy nghĩ gì không?
Geoff Dawdy

Nếu bạn có thể thêm vào câu hỏi của bạn những gì công việc đang cố gắng làm và lỗi chính xác sẽ giúp chúng tôi chỉ cho bạn một giải pháp.

Trong trường hợp của tôi, nó bỏ qua các thiết lập. Sử dụng SQL 2012.
Miguel Sv

1

Sử dụng EXECUTE ASkhi bắt đầu hoặc tạo một thủ tục được lưu trữ thực thi trong một ngữ cảnh cụ thể.


Điều này có thể là xấu. Nếu bạn muốn gọi một thủ tục được lưu trữ với một người dùng bị hạn chế, nó có thể REVERT cho các đặc quyền sysadmin (hoặc chủ sở hữu công việc). Giải pháp thay thế sẽ được sử dụng một cookie.
Jens W.

Một thủ tục được lưu trữ đã được tạo bằng tùy chọn EXECUTE AS sẽ xử lý sự leo thang đặc quyền và không cho phép ai đó thay đổi một phần thông qua. Nếu không có Proc lưu trữ có sẵn, thì việc mạo danh một thông tin đăng nhập khác sẽ thực hiện thủ thuật, như với EXECUTE AS khi bắt đầu tập lệnh.
Rob Farley
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.