2010-03-10 38 views
5

Tôi có gói DTS chạy trên máy chủ cơ sở dữ liệu MS SQL Server 2000 của chúng tôi và cần một cách để người dùng thực thi nó từ máy của riêng họ. (Gói này tạo các tệp mà sau đó được ứng dụng của tôi chuyển đến máy khách.) Tôi đã đưa vào tham chiếu COM "Microsoft DTSPackage Object Library" trong ứng dụng, nhưng vẫn nhận được lỗi "Chuỗi lớp không hợp lệ" khi bước đầu tiên của gói được thực hiện. Tôi cũng đã cố gắng đăng ký tất cả các DLL được chỉ định trong tập tin redist.txt của đĩa SQL Server 2000. Bất kỳ suy nghĩ hay lời đề nghị sẽ được đánh giá cao. Gói DTS rất đơn giản. Nó chỉ sao chép dữ liệu từ cơ sở dữ liệu SQL vào các bảng Visual FoxPro. Mã của tôi thực hiện gói dưới đây (phần lớn được lấy từ bài viết KB của Microsoft: http://support.microsoft.com/kb/321525)."Chuỗi lớp không hợp lệ" trong khi cố gắng thực thi Gói DTS trong VB .NET

 Dim pkg As DTS.Package 
     pkg = New DTS.Package 
     Dim cpContainer As System.Runtime.InteropServices.ComTypes.IConnectionPointContainer 
     cpContainer = CType(pkg, System.Runtime.InteropServices.ComTypes.IConnectionPointContainer) 
     Dim cpPoint As System.Runtime.InteropServices.ComTypes.IConnectionPoint 
     Dim PES As PackageEventsSink = New PackageEventsSink 

     Dim guid As Guid = New Guid("10020605-EB1C-11CF-AE6E-00AA004A34D5") 

     cpPoint = Nothing 
     cpContainer.FindConnectionPoint(guid, cpPoint) 

     Dim intCookie As Integer 
     cpPoint.Advise(PES, intCookie) 

     pkg.LoadFromSQLServer(DTS_SERVER_NAME, , , DTSSQLServerStorageFlags.DTSSQLStgFlag_UseTrustedConnection, dtsPassword, , , dtsName, Nothing) 
     If pkg Is Nothing Then Throw New ApplicationException("The DTS Package could not be loaded from the SQL Server.") 

     Dim pkgStep As DTS.Step 
     For Each pkgStep In pkg.Steps 
      pkgStep.Execute() 
     Next 

     pkg.UnInitialize() 
     pkg = Nothing 

     cpPoint.Unadvise(intCookie) 
     cpPoint = Nothing 
     cpContainer = Nothing 
     PES = Nothing 

Trả lời

1

Nếu bạn cài đặt công cụ máy khách SQL Enterprise Manager đầy đủ trên máy tính người dùng, kiểm tra, họ có thể chạy thành công không? Có thể bạn đang thiếu một số yêu cầu. Hãy nhớ rằng gói DTS chính nó sẽ được thực hiện cục bộ trên máy tính của người dùng, không phải trên máy chủ.

+0

Tôi đã cài đặt tất cả các công cụ máy khách nhưng vẫn gặp lỗi tương tự. Tôi đang sử dụng mã, trong quá khứ, đã làm việc trên các máy khách mà không cần bất kỳ yêu cầu đăng ký DLL nào. Khi tôi chạy ứng dụng trên một máy mà không có bất kỳ DTS DLL nào đã đăng ký, tôi nhận được một thông báo lỗi khác: Truy xuất nhà máy lớp COM cho thành phần với CLSID {10020200-EB1C-11CF-AE6E-00AA004A34D5} không thành công do lỗi sau: 80040154 Sau một số điều tra, có vẻ như bài viết KB này có thể cung cấp một giải pháp: http://support.microsoft.com/kb/326909. Tôi sẽ theo dõi sau khi tôi đã thử nó. Cảm ơn! –

0

Hãy thử đăng ký DLL của bạn với REGASM/CODEBASE

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