2013-05-30 39 views
5

Tôi có một dự án SSIS trong đó tôi đã xác định Nguồn dữ liệu (nhà cung cấp: Native OLE DB/Microsoft OLE DB Provider cho SQL Server). Khi tôi mở này lên bằng tay và nhấn nút "kiểm tra kết nối" tất cả các công trình tốt. Trình quản lý kết nối có thể truy cập DB bằng chuỗi kết nối, người dùng và mật khẩu.Đăng nhập quản lý kết nối SSIS không thành công

Bây giờ tôi có gói SSIS nơi tôi đã tạo trình quản lý kết nối dựa trên nguồn dữ liệu này ("kết nối mới từ nguồn dữ liệu ...").

Trong luồng kiểm soát gói, tôi có một nhiệm vụ SQL có kiểu kết nối OLE DB và kết nối được đặt cho trình quản lý kết nối của tôi trong gói rất này. Nhiệm vụ này sẽ kích hoạt một số câu lệnh cập nhật cho cơ sở dữ liệu, chú ý đến tất cả.

Bây giờ khi tôi gỡ lỗi toàn bộ điều tôi luôn luôn nhận được lỗi tương tự:

Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E4D. An OLE DB record is available. Source: "Microsoft OLE DB Provider for SQL Server" Hresult: 0x80040E4D Description: "Login failed for user 'myUser'."

FYI: myuser bằng tên người dùng Tôi có cho cơ sở dữ liệu của tôi.

Vì vậy, câu hỏi của tôi là: tôi thiếu gì ở đây? Tôi thực sự không thể nhìn thấy những gì sai ở đây. Tôi thực sự bị mắc kẹt ở đây. Bất kỳ gợi ý nào được đánh giá cao!

+0

Ddi bạn chạy gói trong BIDS hoặc đại lý máy chủ SQL mặc dù? – Maximus

+0

Trong BIDS tôi chỉ cần nhấn F5 (Bắt đầu gỡ lỗi) – BaseBallBatBoy

+0

Bạn có gói nào khác trong giải pháp của mình không ?. Hãy thử -> nhấp chuột phải vào gói của bạn và nhấp vào tùy chọn thực thi gói. – Maximus

Trả lời

4

ProtectionLevel "DontSaveSensitive" có nghĩa là mật khẩu sẽ không được lưu với gói SSIS chút nào. Lý do SSIS làm điều này là để mật khẩu không trôi nổi xung quanh nơi người khác có thể nhận được nó.

Vì vậy, khi bạn nhập mật khẩu và nhấn nút "kết nối thử nghiệm", tất cả đều hoạt động tốt. Nhưng khi bạn chạy trong chế độ gỡ lỗi (hoặc trong quá trình sản xuất), bạn không có mật khẩu. Vì vậy, tất nhiên, đăng nhập thất bại.

Đây là lý do bạn cần tệp cấu hình. See my answer here:

You create a configuration file for the connection string, but the password won't get saved to the configuration file either. You will have to edit the configuration file manually if you want it to include a password. But the best way to do this is to configure the password when you schedule the job that executes the SSIS package. That keeps the password in a safe place, and it isn't floating around all over the place with the SSIS package.

Trong khi bạn đang gỡ lỗi, tất nhiên, bạn cần tệp cấu hình có mật khẩu được nhập theo cách thủ công vào đó. Nhưng tệp cấu hình đó không đi kèm với gói khi nó được triển khai để sản xuất. Tệp cấu hình sản xuất phải có mật khẩu trống. Mật khẩu phải nằm trong công việc đã lên lịch thực thi gói.

+0

Một số câu hỏi cho sự hiểu biết của tôi: Tôi có DontSaveSensitive nhưng trong quản lý kết nối nguồn dữ liệu của tôi có thực sự là một người dùng và mật khẩu được lưu trữ cũng như lưu tùy chọn mật khẩu của tôi được chọn. Về câu trả lời của bạn, không phải là một cuộc xung đột? Ngoài ra: tại sao nó không hoạt động khi tôi thay đổi thành EnrcyptSensitiveWithUserKey hoặc EnryptSensitiveWithPassword? Cuối cùng nhưng không kém phần quan trọng: Tôi chỉ muốn thử nghiệm gói của mình nếu nó chạy tốt. Làm thế nào tôi có thể làm như vậy một cách nhanh nhất? – BaseBallBatBoy

+0

Có vẻ như nó đang tiết kiệm userid và mật khẩu, nhưng không phải vậy. Nó sẽ giữ nó xung quanh trong một thời gian sau khi bạn gõ nó vào để kiểm tra kết nối, do đó, có vẻ như nó đang làm việc, nhưng sau đó nó ngừng hoạt động. Thật khó hiểu. Nhưng đó là cách SSIS làm điều đó. Các tùy chọn mã hóa là một câu chuyện khác và thậm chí còn ít dễ sử dụng hơn. Thêm tệp cấu hình và chỉnh sửa XML theo cách thủ công để đặt mật khẩu. – criticalfix

+0

Thực ra bạn không cần tệp cấu hình khi chạy qua BIDS. Nếu bạn mở lại gói của mình thì bạn cần phải cung cấp lại mật khẩu nếu mức độ bảo vệ của bạn là "không lưu lại nhạy cảm". Nhưng trong trường hợp của bạn có vẻ như bạn có thể bỏ lỡ một cái gì đó. Xem liệu có bất kỳ trình quản lý kết nối nào khác có sẵn trong gói của bạn hay không. và kiểm tra xem bạn đã chọn cùng một trình quản lý kết nối mà bạn đã kiểm tra chưa. – Maximus

0

Tôi đã giải quyết vấn đề đó trong BIDS.

1) Trước hết nếu bạn không có tệp cấu hình và trong trình quản lý kết nối, bạn đang sử dụng xác thực máy chủ sql thì bạn sẽ nhận được chữ thập đỏ trong nguồn db hoặc các tác vụ đích. Nó sẽ không xảy ra trong các nhiệm vụ sql thực thi vì các nguồn db và các tác vụ đích thực sự phải chạy một lựa chọn * từ truy vấn bảng để giúp bạn có được danh sách các bảng để chọn. Kể từ khi mật khẩu không được lưu nó sẽ ném cho bạn một lỗi.

2) Nếu bạn có tệp cấu hình, bạn sẽ vẫn gặp phải sự cố tương tự. Nhưng với tệp cấu hình bạn có thể chỉnh sửa và chèn mật khẩu theo cách thủ công. Nó làm việc cho tôi. Lệnh db nguồn và nhiệm vụ đích không hiển thị bất kỳ chữ thập đỏ nào.

Các vấn đề liên quan