2010-01-21 20 views
5

Aynı veritabanına bağlanan birçok SSIS paketim var. Her bir veritabanında sunucu adını db bağlantısına kodlamak istemiyorum; çünkü bu, dev sunucusundan sunucuya farklıdır. Ve bu sunucu adları zamanla değişebilir.Bir SSIS paketindeki sunucu adı nasıl dinamik yapılır

Bunu bir yapılandırma dosyasına koyabileceğinizi biliyorum, ancak tüm bu SSIS paketleri SQL Server 2008'de depolanıyor ve tüm ayrıntıları SQL Server'da tutmak istiyorum.

Herhangi bir öneri veya tavsiyede bulunan var mı?

Her paketin bağlantılarını değiştirmek için kullanabileceğim sunucu adını döndüren GetServerName adlı bir paket oluşturmayı düşünüyordum. Ama daha iyi bir yol olabilir.

cevap

0

Yapılandırma dosyasının bunun hakkında oldukça kullanışlı bir yol olduğunu anladım.

Paketinizi SQL Server Agent'tan yürütecek şekilde programladığınızda, bir dosya yolundan kullanacağınız ve genellikle tüm parametre gereksinimlerimi dikkate alan yapılandırma dosyasını belirtebilirsiniz.

Sonuçları SQL Server'da tutmak istiyorsanız, bunları bir tabloda saklayabilir ve geri alabilirsiniz. Ancak şimdi, Dev/Test/Prod'a karşı hangi sunucu/tabloya gideceğinizi bilmelisiniz ve siz de orijinal soruna geri döndünüz.

Tavsiyem: tüm sunucularda aynı fiziksel konumda (Dev/Test/Prod) bir yapılandırma dosyası var ve işin parametreleri için uygun yapılandırma dosyasına sahip olmasını sağlayın.

2

Etkin sunucu adına sahip bir sorgudaki servername ile bir değişken dolduruyorum. Sonra bir komut dosyası görevi sadece bağlantı dize Bu örnek bir ExcelFile içindir

değiştirmek ama sadece senin tür çözmek için SSIS bir sql bağlantısı

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

Biz uzman veri yükler için SSIS kullandığınızda ve Her müşteri kurulumuna özgü olduğu için db bağlantı bilgisini iletin. – DaveE

7

çok güzel bir özellik için çok benzer olacağını Sorun paket yapılandırmaları olarak adlandırılır. Birçok kişi size dinamik sunucu/paket özellikleri/değişken değerleri-yapılandırma dosyaları, ortam değişkenleri, sql sunucusu veya kayıt defteri girdileri saklamak hakkında nasıl farklı fikirler ve/veya fikirleri vardır. SQL Server'daki tüm bilgileri saklamaktan hoşlanıyorum, yapmak istediğiniz şey bu. Bunu başarmak için, bu makaledeki adımları izleyin: Komut satırından veya bir toplu iş ya SQL Server ayarlanabilir bir değişken tanımlayabilirsiniz

yapılandırma dosyasına ek olarak Package Configuration Steps

1

... Ajan işi. Değişken, sunucu adına (bir ifade ile, IIRC) ikame edilebilir.

Tek bir dosya dağıtımı istiyorsanız bu yararlıdır.

Düzenleme:

Example: (Maalesef SQL Server Merkez kayıt gerektiren)

2

Biz dosyası yerine bir yapılandırma tablosunu kullanın. Yapılandırma tablosu ile veritabanına işaret etmek için bir ortam değişkeni ile başlar ve daha sonra tüm diğer yapılandırmaları oradan çekersiniz.. Burada

(eğer dev sunucusunda, KG Sunucusu, Prod sunucu için ayrı bir komut dosyası yaratacak bir yapılandırma tablosunu doldurmak için bir komut dosyası örneği verilmiştir: Bu iyi çalışıyor

--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