Chạy gói SSIS do người dùng tên miền sở hữu từ SQL Server chạy trên tài khoản dịch vụ cục bộ


10

Tôi muốn chạy gói SSIS chứa các tác vụ Transfer SQL Server Object. Các máy chủ liên quan nằm trên cùng một miền, nhưng các dịch vụ SQL Server đang chạy trên các tài khoản dịch vụ cục bộ. Vì vậy, môi trường trông như thế này:

Miền

Máy chủ 1

  • Máy chủ SQL chạy trên tài khoản cục bộ
  • Trên hệ thống tập tin: gói SSIS
  • Trong SQL Server Agent: một công việc

Máy chủ 2

  • Máy chủ SQL chạy trên tài khoản cục bộ

Để có thể đăng nhập vào cả hai máy chủ, tôi đã tạo một tài khoản miền được sử dụng làm tài khoản dịch vụ. Khi tôi sử dụng tài khoản miền này để đăng nhập vào Máy chủ 1, rồi thực hiện gói từ hệ thống tệp, mọi bước đều thành công. Tuy nhiên, khi tôi cố gắng thêm công việc vào SQL Server, tôi gặp phải một trong những vấn đề sau:

Tình huống 1. Chủ công việc: tài khoản địa phương; chạy bước SSIS làm proxy cho tài khoản miền . Khi tôi đặt chủ sở hữu công việc thành tài khoản cục bộ, nhưng chạy công việc dưới dạng proxy cho tài khoản miền, công việc sẽ tự thực hiện thành công, nhưng gói sẽ ném các lỗi như

Việc thực thi không thành công với lỗi sau: "Thư mục 'LocalApplicationData' không tồn tại.".

Lỗi này có thể được khắc phục bằng cách tạo thông tin đăng nhập với quyền Quản trị viên cho người dùng tên miền trên Máy chủ 1, nhưng đây rõ ràng không phải là một giải pháp mong muốn. Việc thêm tài khoản vào một trong các nhóm tác nhân / DTS của SQL Server cũng không hoạt động.

Tình huống 2. Chủ công việc: tài khoản miền; chạy bước SSIS làm proxy cho tài khoản miền . Khi tôi đặt cả chủ sở hữu công việc và 'chạy với tư cách người dùng' cho bước vào tài khoản miền, công việc sẽ không bắt đầu, với lỗi sau:

Không thể xác định liệu chủ sở hữu (Tên miền \ Người dùng tên miền) của công việc Job namecó quyền truy cập máy chủ hay không (lý do: Không thể lấy thông tin về nhóm / người dùng Windows NT 'Tên miền \ Người dùng tên miền', mã lỗi 0x5. [SQLSTATE 42000] (Lỗi 15404)) .

Tôi tin rằng lỗi cuối cùng là do SQL Server chạy trên tài khoản cục bộ và do đó không thể xem tài khoản miền nào có quyền.

Cách đúng đắn để làm cho công việc chạy là gì? Tình huống 2 đối với tôi sạch hơn, nhưng dường như không thể vì SQL Server chạy trên tài khoản cục bộ. Tình huống 1 cũng sẽ hoạt động, nhưng việc trao quyền quản trị cho người dùng tên miền trên Máy chủ SQL của tôi sẽ không xảy ra.


CẬP NHẬT:

@JonSeigel và @ Mr.Brownstone:

Có vẻ hợp lý rằng đây là vấn đề là do thiếu quyền. Tuy nhiên, lỗi là về sự không tồn tại 'LocalApplicationData' - một trong những thư mục được tạo cho mỗi tài khoản. Tôi đã đăng nhập vào máy chủ với thông tin đăng nhập mà gói chạy, (qua đây tạo thư mục hồ sơ) và thử một số kết hợp quyền cho thư mục hồ sơ. Ngay cả khi cấp thủ công gần như tất cả các quyền trên thư mục cụ thể này, tôi vẫn gặp lỗi được đề cập ở trên.

Trong khi thực hiện một số nghiên cứu khác, tôi đã chạy vào một chủ đề diễn đàn tại http://www.sqlservercentral.com/Forums/Topic391332-148-1.aspx#bm391441 khá giống nhau - dù không có giải pháp.


Có lý do nào khiến bạn không sử dụng tài khoản miền cho các dịch vụ SQL không?
Eric Higgins

Có, nhưng tôi không biết lý do nào (tôi đoán điều gì đó với chu trình DTAP và tên miền không có sẵn ở mọi nơi). Dù sao, đó là một môi trường nhất định mà tôi không được phép thay đổi.
vstrien

Tình huống # 1 dường như là câu trả lời. Tôi nghĩ rằng thông báo lỗi bạn nhận được là từ trong gói. Nói cách khác, gói đang thực thi, nhưng một tác vụ trong đó yêu cầu nhiều quyền hơn tài khoản dịch vụ được cấp. Bạn có thể không phải cấp quyền cấp quản trị viên cho tài khoản để thực hiện thành công (thay vào đó, cấp quyền chi tiết hoặc thay đổi quy trình để không cần quyền).
Jon Seigel

Bạn có thể thêm Đăng nhập SQL (Xác thực SQL) vào Máy chủ SQL từ xa (Máy chủ 2) không? Nếu bạn có tùy chọn đó, Bạn có thể sử dụng Đăng nhập SQL trong kết nối SSIS được sử dụng cho đích. Điều đó có nghĩa là Bạn sẽ phải sử dụng mật khẩu để mã hóa gói, nhưng nó sẽ giải quyết vấn đề của bạn.
Roi Gavish

@Justicator: Có lẽ, như một phương sách cuối cùng. Nhưng bất cứ khi nào đăng nhập tên miền là có thể, tôi không muốn sử dụng Xác thực SQL.
vstrien

Câu trả lời:


5

Ý kiến ​​cá nhân của tôi là lựa chọn số 1 là con đường để đi. Nhưng tôi thấy bạn không cần phải cấp quyền truy cập quản trị viên tài khoản miền. Dường như với tôi rằng nó yêu cầu quyền truy cập vào một số thư mục và tệp nhất định và do đó bạn có thể cấp cho người dùng tên miền quyền truy cập chỉ các tài nguyên mà nó cần để chạy gói thành công. Điều này có thể được thực hiện thông qua hộp thoại thuộc tính tệp / thư mục và chọn tab bảo mật - không cần thiết phải đặt nó cho mọi tệp và thư mục vì bạn có thể đặt quyền của thư mục mẹ và đặt chúng để ghi đè các thuộc tính con.

Tôi hy vọng cái này sẽ giúp bạ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.