2010-01-21 8 views
5

Tôi có nhiều gói SSIS mà tất cả đều kết nối với cùng một cơ sở dữ liệu. Tôi không muốn mã cứng tên máy chủ vào kết nối db trong mỗi cơ sở dữ liệu, bởi vì nó khác với dev đến máy chủ trực tiếp. Và những tên máy chủ đó có thể thay đổi theo thời gian.Cách đặt tên máy chủ động trong gói SSIS

Tôi biết rằng bạn có thể đặt nó trong tệp cấu hình, nhưng tất cả các gói SSIS này được lưu trữ trong SQL Server 2008 và tôi muốn giữ tất cả chi tiết trong SQL Server.

Có ai có đề xuất hoặc lời khuyên nào không?

Tôi đã suy nghĩ về việc tạo một gói có tên GetServerName trả về tên máy chủ, mà tôi có thể sử dụng để thay đổi các kết nối trong mỗi gói. Nhưng có thể có một cách tốt hơn.

Trả lời

0

Tôi thấy rằng tệp cấu hình là một cách khá tiện lợi để thực hiện việc này.

Nếu bạn lên lịch gói để thực thi từ SQL Server Agent, bạn có thể chỉ định tệp cấu hình để sử dụng từ đường dẫn tệp và thường quản lý tất cả các yêu cầu tham số của tôi.

Nếu bạn muốn giữ kết quả trong SQL Server, bạn có thể lưu chúng trong một bảng và truy xuất chúng. Nhưng bây giờ bạn phải biết máy chủ/bảng nào đi ngược lại với Dev/Test/Prod và bạn quay lại vấn đề ban đầu.

Lời khuyên của tôi: có tệp cấu hình ở cùng một vị trí thực trên tất cả máy chủ (Dev/Test/Prod) và có điểm công việc cho tệp cấu hình thích hợp cho các tham số.

2

Tôi điền một biến với tên máy chủ từ truy vấn có tên máy chủ đang hoạt động. sau đó trong một nhiệm vụ kịch bản tôi chỉ cần thay đổi chuỗi kết nối

Ví dụ này là dành cho một Excelfile nhưng nó sẽ rất tương tự cho một kết nối sql

Dts.Connections("ExcelConnection").ConnectionString = 
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\" + 

Dts.Variables("ActiveServerName").Value.ToString + "\Summary_" + 

Dts.Variables("FileDate").Value.ToString + 
".xls;Extended Properties=Excel 8.0;HDR=YES;" 
+0

này hoạt động tốt Chúng tôi sử dụng SSIS cho tải dữ liệu chuyên ngành và chuyển thông tin kết nối db, vì đó là thông tin duy nhất cho mỗi cài đặt của khách hàng. – DaveE

7

Một tính năng rất thoải mái tại SSIS để giải quyết chỉ loại lại vấn đề được gọi là cấu hình gói. Nhiều người có ý kiến ​​và/hoặc ý tưởng khác nhau về cách lưu trữ các máy chủ/thuộc tính gói/tệp cấu hình giá trị biến động, biến môi trường, máy chủ sql hoặc mục đăng ký. Cá nhân tôi thích lưu trữ tất cả các thông tin trong SQL Server, đó là những gì bạn đang muốn làm. Để đạt được điều này, hãy làm theo các bước trong bài viết này: Package Configuration Steps

1

Ngoài các tập tin cấu hình ...

Bạn có thể định nghĩa một biến mà có thể được thiết lập bởi các dòng lệnh hoặc trong một công việc hàng loạt hoặc SQL Server Đại lý công việc. Biến có thể được thay thế thành tên máy chủ (bằng một biểu thức, IIRC).

Điều này rất hữu ích nếu bạn muốn triển khai tệp đơn lẻ.

Edit:

Example: (Xin lỗi, SQL Server Trung ương yêu cầu đăng ký)

2

Chúng tôi sử dụng một bảng cấu hình chứ không phải là một tập tin. Bạn bắt đầu với một biến môi trường để trỏ đến cơ sở dữ liệu với bảng cấu hình và sau đó kéo tất cả các cấu hình khác từ đó.

Dưới đây là một ví dụ của một kịch bản để cư một bảng cấu hình (bạn sẽ tạo ra một kịch bản riêng cho máy chủ dev, QA Server, Prod server:.

--connections 
--for MyDatabaseName 
INSERT INTO MyDatabase.dbo.SSISConfig VALUES (
'MyConfigurationName', 'Data Source=MYSQLSERVER;Initial Catalog=MyDatabaseName;Provider=SQLNCLI10.1;Integrated Security=SSPI;Auto Translate=False;', 'Package.Connections[MyDatabaseName].Properties[ConnectionString]' , 'String') 

--variables 
--FilePathImportServer 
INSERT INTO MyDatabase.dbo.SSISConfig VALUES (
'MyConfigurationName', '\\MYSERVER\SOMECLIENT\Import\', '\Package.Variables[User::FilePathImportServer].Properties[Value]' , 'String') 

--select * from SSISConfig where configurationFilter = MyConfigurationName