Gặp sự cố khi cố gắng lưu chuỗi kết nối trong Excel dưới dạng định nghĩa kết nối dữ liệu.
Windows 7 Pro
Office 2007, 2010, 2013
Tôi đang gặp khó khăn trong việc hỗ trợ một số người dùng sử dụng Excel để trích xuất dữ liệu từ cơ sở dữ liệu Oracle. Tôi là người quản trị cơ sở dữ liệu (DBA), vì vậy mặc dù đây là vấn đề liên quan đến việc sử dụng Excel, nhưng việc nó có liên quan đến cơ sở dữ liệu đã khiến vấn đề này thuộc trách nhiệm của tôi.
Tôi được cung cấp một bảng tính có thiết lập kết nối (thanh công cụ ... dữ liệu ... kết nối). Nếu tôi thay đổi tên người dùng và mật khẩu được định nghĩa trong chuỗi kết nối, thay đổi đó chỉ có hiệu lực cho đến khi tôi đóng bảng tính (chọn lưu khi đóng). Lần tiếp theo tôi mở bảng tính, chuỗi kết nối lại trở về giá trị ban đầu.
Nếu tôi vào thuộc tính kết nối và chọn duyệt đến tệp kết nối (trường này trống), sau đó nhấp OK trên trang 'thuộc tính kết nối', tôi nhận được cảnh báo rằng "Kết nối trong sổ làm việc này sẽ không còn giống với kết nối được định nghĩa trong tệp bên ngoài nằm tại …. Liên kết đến tệp bên ngoài đó cũng sẽ bị xóa. Bạn có muốn tiếp tục không?". Trả lời 'có', và ngay lập tức tôi được yêu cầu nhập thông tin đăng nhập (mật khẩu trong tệp là null) và kết nối cố gắng làm mới. (Trong trường hợp này, việc làm mới thất bại do tài khoản cơ sở dữ liệu được chỉ định không có quyền truy cập vào các bảng được chọn). Ngay sau đó, khi trang kết nối vẫn đang mở, tôi quay lại Thuộc tính > Định nghĩa, và chuỗi kết nối đã trở lại giá trị ban đầu. Hành vi này vẫn như vậy bất kể tôi chọn 'Luôn sử dụng tệp kết nối' khi chọn tệp kết nối.
1) Tại sao các thay đổi của tôi đối với thuộc tính kết nối không được lưu lại?
2) Tại sao, khi tôi thay đổi các thuộc tính — ít nhất là khi tôi chọn sử dụng tệp bên ngoài — thì hệ thống lại tự động cố gắng làm mới dữ liệu dựa trên kết nối đó mà không cần cảnh báo?
Trả lời:
Tôi thấy bài đăng này đã 5 ngày rồi mà không ai "phản hồi", nên bài đăng tiếp theo này có lẽ chỉ là vô ích mà thôi.
Tuy nhiên, có vẻ như tôi đã tìm ra giải pháp. Dường như mỗi khi tôi thay đổi chuỗi kết nối trong định nghĩa nguồn dữ liệu, chỉ riêng việc thay đổi chuỗi đó đã kích hoạt quá trình làm mới từ nguồn dữ liệu. Và nếu có bất kỳ sự cố nào xảy ra — ngay cả khi kết nối đến cơ sở dữ liệu đích thành công — các giá trị trong chuỗi kết nối sẽ bị khôi phục lại.
Chi tiết ..
Chúng tôi có một người dùng thành thạo đã phát triển một bảng tính với nguồn dữ liệu trỏ đến cơ sở dữ liệu Oracle. Định nghĩa nguồn dữ liệu bao gồm một câu lệnh SQL khá phức tạp, và chuỗi kết nối sử dụng thông tin đăng nhập của người dùng đó. Người dùng này đã chia sẻ bảng tính với một vài đồng nghiệp, vì vậy chúng tôi đang gặp phải tình huống tên người dùng/mật khẩu của anh ta vô tình bị chia sẻ với những người khác. Là một phần của dự án lớn hơn, tôi (quản trị viên cơ sở dữ liệu Oracle) đang cố gắng khắc phục điều này bằng cách sửa đổi chuỗi kết nối cho những người dùng khác. Bây giờ, hãy xem xét một người dùng cụ thể mà thông tin đăng nhập đã được chia sẻ, và người dùng đó hiện không có quyền truy cập vào một trong các bảng trong truy vấn. Khi tôi thay đổi chuỗi kết nối của người dùng đó để sử dụng tên người dùng của chính anh ta (và yêu cầu nhập mật khẩu), nguồn dữ liệu ngay lập tức cố gắng làm mới dữ liệu, yêu cầu nhập mật khẩu, kết nối được với cơ sở dữ liệu... nhưng tất nhiên bản thân truy vấn lại thất bại. Quay lại thuộc tính định nghĩa nguồn dữ liệu, chúng ta thấy rằng chuỗi kết nối đã trở lại thông tin đăng nhập ban đầu.
Toàn bộ vấn đề này rất khó để làm rõ và đã gây ra không ít sự nghi ngờ:
1) Khi tôi thay đổi thuộc tính của nguồn dữ liệu, điều đó KHÔNG có nghĩa là tôi muốn làm mới dữ liệu ngay lập tức. Tuy nhiên, dường như tôi không có lựa chọn nào khác.
2) Nếu việc làm mới dữ liệu thất bại vì bất kỳ lý do nào, ngay cả những lý do không liên quan đến định nghĩa nguồn dữ liệu, thì các thay đổi đối với thuộc tính sẽ được khôi phục về giá trị trước đó. Điều này hoàn toàn vô lý. Nếu không có lỗi cú pháp nào, nó nên chấp nhận những gì tôi cung cấp. Nếu có sự cố xảy ra, hãy để tôi sửa lỗi nhưng đừng hoàn tác mọi thứ khác.
3) Khi tạo nguồn dữ liệu mới, dường như tôi không thể tạo nó với câu lệnh SQL làm nguồn. Trình hướng dẫn buộc tôi phải chọn một bảng - bất kỳ bảng nào - trước khi cho phép tôi đến trang thuộc tính thực tế để chỉ ra rằng điều tôi thực sự muốn là cung cấp một câu lệnh SQL.
Comments
Post a Comment