2009-02-11 31 views
12

Ok, tôi đã lùng sục trên web, BOL, các diễn đàn khác nhau và tôi không còn gần ... Câu trả lời ... Chúng tôi có một tá máy chủ SQL (khoảng 2k, một số 2005) trên mạng. Tôi đang sử dụng các đối tượng SMO trong một ứng dụng .NET để lấy một số thông tin tiêu chuẩn. Vấn đề của tôi xuất hiện để đun sôi xuống một DLL bị thiếu - Microsoft.SqlServer.BatchParser.dll. Tuy nhiên, DLL này không đi kèm với các tệp DLL SQL khác (Microsoft.SqlServer.ConnectionInfo.dll, Microsoft.SqlServer.Smo.dll, Microsoft.SqlServer.SmoEnum.dll, Microsoft.SqlServer.SqlEnum.dll, v.v ...) . Tôi cũng đã tải xuống gói tính năng SS2005 từ trang web của Microsoft bao gồm các đối tượng SMO, nhưng vẫn không có may mắn.Máy chủ SQL SMO phàn nàn về việc thiếu DLL

Các mã sau đây hoạt động, trừ khi tôi bỏ ghi chú dòng mà hiện tại đang nhận xét, trong trường hợp này tôi nhận được báo lỗi dưới đây:

protected void btnArchive_Click(object sender, EventArgs e) 
{ 
    ServerConnection conn = new ServerConnection("my_server"); 

    conn.LoginSecure = false; 
    conn.Login = "my_login"; 
    conn.Password = "my_password"; 

    Server s = new Server(conn); 
    Database d = s.Databases["my_database"]; 
    //Table tbl = d.Tables["my_table"]; 

    Response.Write(s.Name + " " + s.Information.RootDirectory + " " + d.CreateDate.ToShortDateString()); 
    conn.Disconnect(); 
} 

Lỗi: Không thể tải tập tin hoặc lắp ráp 'Microsoft.SqlServer.BatchParser , Phiên bản = 9.0.242.0, Văn hóa = trung lập, PublicKeyToken = 89845dcd8080cc91 'hoặc một trong các phụ thuộc của nó. Hệ thống không thể tìm thấy các tập tin được chỉ định.

Lưu ý, tôi cũng đã thử điều này từ SSIS sử dụng VB.NET, cùng một hành vi.

Bất kỳ suy nghĩ nào cũng sẽ được đánh giá cao.

Cảm ơn.

Trả lời

0

Để chúng tôi hiểu vấn đề đúng cách, Microsoft.SqlServer.BatchParser.dll không được cài đặt trong Bộ đệm ẩn toàn cục trên máy phát triển của bạn? Nếu vậy, bạn có thể muốn bắt đầu với việc cài đặt lại .NET Framework (phiên bản của Khung mà bạn đang nhắm mục tiêu) để xem điều đó có giải quyết được vấn đề không.

Bạn cũng có thể thử sử dụng công cụ Cấu hình Khuôn khổ .NET để xem hội đồng có thực sự có mặt trong Bộ đệm ẩn toàn cục (GAC) hay không. Điều này MSDN Article mô tả cách sử dụng công cụ này.

(Tìm kiếm ổ đĩa cứng của tôi không trả về phiên bản Microsoft.SqlServer.BatchParser.dll mặc dù tôi có thể xem nó bằng cách sử dụng công cụ Cấu hình .NET Framework).

+0

Cảm ơn bạn đã trả lời. Mặc dù, tôi không biết rõ nơi đặt Cache toàn cầu, tôi đã tìm kiếm toàn bộ ổ đĩa và dll đó không tồn tại. Tôi cũng đã cài đặt lại khung công tác mới nhất (3,5 SP1). –

+0

GAC thường ở dạng% windir% \ assembly – kristianp

6

Bạn có đang chạy hệ điều hành x64 trên hộp của mình không? Dường như có vấn đề với BatchParser.dll trong môi trường 64-bit - thường là nên tải xuống SMO x64 Package (SQLServer2005_XMO_x64.msi) từ Microsoft.

Xem thông tin về số here này.

9

Tôi đã có thể chạy thành công mã của bạn bằng cách sử dụng phiên bản 10. * của hội đồng "Microsoft.SqlServer.ConnectionInfo", "Microsoft.SqlServer.Management.Sdk.Sfc" và "Microsoft.SqlServer.Smo". Hãy thử tải xuống 2008 version of the SMO components, có thể đó là lỗi mà giờ đây chúng đã được khắc phục.

+3

Việc này đã hiệu quả với tôi. Tuy nhiên, tôi sẽ bổ sung thêm rằng trong trường hợp của tôi, tôi đã phải sử dụng phiên bản 32 bit vì Hồ bơi ứng dụng của tôi đang chạy với chế độ 32 bit được bật. Mất mãi mãi để tìm ra vấn đề, vì vậy tôi hy vọng điều này sẽ giúp người khác. – esteuart

+1

@esteuart bạn cần có điều này vì đó là câu trả lời của riêng bạn! giờ sau này cuối cùng đã lưu tôi (cho v 12.0.0.0) – SumGuy

0

nó là một phần của cố vấn nâng cấp 2005 hoặc 2008.

3

Bạn cần cài đặt sau gói để giải quyết vấn đề, tôi đã giải quyết được vấn đề này hai lần với gói này hy vọng nó có thể làm việc cho tất cả mọi người quá ...

Microsoft SQL Server 2005 Management Objects Bộ sưu tập Quản lý Objects gói sưu tập bao gồm một số yếu tố chính của API quản lý SQL Server 2005, bao gồm các đối tượng quản lý phân tích (AMO), đối tượng quản lý nhân bản (RMO) và đối tượng quản lý máy chủ SQL (SMO).Các nhà phát triển và DBA có thể sử dụng các thành phần này để lập trình quản lý SQL Server 2005.

Bạn có thể nhận được từ Feature Pack cho Microsoft SQL Server 2005 - tháng 12 năm 2008 từ Microsoft trang web

http://www.microsoft.com/en-us/download/details.aspx?id=11988

Nhưng vị trí liên kết của những thay đổi trang download mỗi lần nếu bạn không tìm thấy tài nguyên, bạn cũng có thể tải xuống từ blog của tôi.

Tôi cũng đã cung cấp một số lời khuyên và nguồn lực về điều này trong blog của tôi nếu bạn muốn http://rndp-android.blogspot.com/p/missing-microsoftsqlservermanagementsdk.html

4

Tôi biết tôi rất muộn để bên đây, nhưng đây vẫn là kết quả đầu tiên khi bạn google "smo batchparser ".

Khi cài đặt SMO 2014 (12.0.x) một số tệp DLL chỉ được cài đặt vào GAC. Để làm cho ứng dụng của bạn hoạt động mà không phải cài đặt SMO theo cách thủ công trong máy chủ đích, bạn phải sao chép các tệp DLL này bằng ứng dụng của mình. Dưới đây là những con đường mà tôi đã nhận chúng từ.

C:\Program Files\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.ConnectionInfo.dll

C:\Program Files\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.Management.Sdk.Sfc.dll

C:\Program Files\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.Smo.dll

C:\Program Files\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.SmoExtended.dll

C:\Program Files\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.SqlEnum.dll

C:\Windows\assembly\GAC_64\Microsoft.SqlServer.BatchParser\12.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.BatchParser.dll

C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.BatchParserClient\12.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.BatchParserClient.dll

C:\Windows\assembly\GAC_MSIL\Microsoft.SqlServer.SqlClrProvider\12.0.0.0__89845dcd8080cc91\Microsoft.SqlServer.SqlClrProvider.dll

Để truy cập tệp GAC, bạn cần vô hiệu hóa trình xem tích hợp cửa sổ theo hướng dẫn được cung cấp bởi this article.

Một đoạn trích của bài viết cho tiện theo dõi:

Open the registry editor and add/set the HKLM\Software\Microsoft\Fusion\DisableCacheViewer DWORD value: 1

+0

Các BatchParser dll cuối cùng gây ra lỗi này: "Cố gắng để tải một tập tin thực thi unverifiable với fixups (IAT với hơn 2 phần hoặc một phần TLS.) HRESULT: 0x80131019". – Jerther

+0

Giờ sau: có thể do ứng dụng được xây dựng với bất kỳ cpu nào, nhưng với kích hoạt "Ưu tiên 32 bit". – Jerther

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