2010-10-20 57 views
16

Tôi đã viết một ứng dụng web asp.net sử dụng SMO chống lại SQL Server 2008 để có thể chạy một số tập lệnh DB. Nó tham chiếu các hội đồng (trong thư mục C: \ Program Files \ Microsoft SQL \ 100 \ SDK \ Assemblies thư mục Server):Không thể tìm thấy microsoft.sqlserver.batchparser.dll

Microsoft.SqlServer.ConnectionInfo 
Microsoft.SqlServer.Management.Sdk.Sfc 
Microsoft.SqlServer.Smo 

Các microsoft.sqlserver.batchparser.dll không có trong thư mục này. Địa phương (máy 32 bit, IIS7) Tôi không có vấn đề gì.

Khi tôi xuất bản các ứng dụng để cung cấp hosting của tôi (discountasp.net, SQL Server 2008, IIS7, 32bits quá), tôi nhận được lỗi này:

Could not load file or assembly 'Microsoft.SqlServer.BatchParser, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' or one of its dependencies. The system cannot find the file specified.

Tôi đã tìm kiếm máy tính cục bộ của tôi và tôi không thể tìm thấy hội đồng này. Tuy nhiên nó hoạt động tốt trên máy này.

Công cụ "Báo cáo khám phá thiết lập Microsoft SQL Server 2008" báo cáo tôi đã cài đặt v10.1.2531.0 cục bộ.

Cảm ơn

Trả lời

10

Để có được dll này, bạn sẽ cần phải cài đặt các đối tượng quản lý của Microsoft SQL Server 2008 (có sẵn từ here). Dll đặc biệt đó được cài đặt vào GAC, đó là lý do tại sao bạn có thể không tìm thấy nó bằng cách sử dụng tìm kiếm.

Vì bạn đang sử dụng nhà cung cấp dịch vụ lưu trữ, có vẻ như họ chưa cài đặt ứng dụng này. Lựa chọn của bạn là để có được nó được cài đặt bởi họ (có lẽ là không), hoặc triển khai các dll bằng tay (có thể được trên mặt đất cấp phép tinh ranh).

+0

Khi tôi cố gắng cài đặt SMO, trình cài đặt cho biết tôi đã cài đặt phiên bản cao hơn. Kể từ khi tôi có thể tham khảo Microsoft.SqlServer.Smo từ dự án của tôi, tôi đoán điều này xác nhận nó. –

+1

@Nicolas: có, bạn sẽ cài đặt ứng dụng này cục bộ.Nó không phải là tuy nhiên được cài đặt trên nhà cung cấp lưu trữ của bạn, do đó vấn đề bạn đang gặp phải. – adrianbanks

+0

Gọi gacutil/l cho tôi biết batchparser nằm trong GAC, tuy nhiên hộp thoại tham chiếu trong VS2010 sẽ không hiển thị cho tôi. Đi theo cách thủ công vào GAC để giải nén assembly và nó nằm trong thư mục GAC_32 chứ không phải GAC_MSIL. Dù sao, việc thêm điều này vào Reflector cho thấy nó có một tham chiếu đến Microsoft.VisualC .... khá kỳ quặc. –

2

Bạn cũng cần cài đặt các thành phần SMO trên nhà cung cấp dịch vụ lưu trữ của mình. Bạn có thể tải xuống chúng here.

+0

Vâng, rõ ràng là tôi không thể cài đặt một msi trên máy chủ chia sẻ. Hãy để tôi gọi cho họ để biết họ nói gì về SMO. –

+0

discountasp sẽ không cài đặt nó, do đó, nó có nghĩa là tôi phải trích xuất dll + phụ thuộc của nó (Microsoft.VisualC) và đặt nó trong thư mục bin của tôi? –

2

Tôi gặp sự cố tương tự nhưng với R2. Đối với tôi, nó hoạt động bằng cách cài đặt các đối tượng quản lý chia sẻ Microsoft® SQL Server® 2008 R2 và các kiểu CLR phụ thuộc của Microsoft® cho SQL Server® 2008 R2.

Tìm chúng ở đây http://www.microsoft.com/en-us/download/confirmation.aspx?id=16978

5

Trước tiên, bạn cần phải kích hoạt trình duyệt của thư mục GAC:

1. đi vào Registry Editor (RUN> regedit)
2. đi đến HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Fusion
3. nhấp chuột phải Fusion> NEW> DWORD
4. Loại DisableCacheViewer
5. nhấp đúp chuột DisableCacheViewer
6. Set giá trị đến 1

sau đó bạn có thể tìm thấy nó ở đây
C: \ Windows \ lắp ráp \ GAC_32 \ Microsoft.SqlServer.BatchParser \ 10.0.0.0__89845dcd8080cc91

0

Bạn có thể cài đặt các tính năng kết nối SQL Khách hàng từ SQL Server DVD là tốt. Tôi đã cài đặt nó cũng như các thành phần SDK để giải quyết vấn đề này trong khi cài đặt SolarWinds.

0

Tôi đã cài đặt SMO x64, nhưng SMO x86 được yêu cầu trên máy chủ xây dựng.

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