2013-02-28 83 views
5

Tôi đã di chuyển một trang ASP cổ điển sang một máy chủ mới và nhận được thông báo lỗi sau.Nhà cung cấp OLE DB của Microsoft cho lỗi SQL Server '80004005'

Tôi đã thử các chuỗi kết nối khác nhau nhưng không có chuỗi nào hoạt động.

Tôi thậm chí không chắc chắn chuỗi kết nối có phải là sự cố hay không.

Máy chủ mới là máy chủ Windows 2012 Server, SQL Server 2008 R2 Express.


Microsoft OLE DB Provider for SQL Server error '80004005' 

[DBNETLIB][ConnectionOpen (Connect()).]SQL Server does not exist or access denied. 

/scripts/dbcode.asp, line 31 

Application("C2M_ConnectionString") = "Provider=SQLNCLI10;Server=(local);Database=mysite_live;Uid=mysitec_Live;Pwd=mypass;" 
+1

Có gì tại script/dbcode.asp, dòng 31? –

+2

có thể không tương thích 32/64 bit không? xin vui lòng xem tại đây: [link] (http://www.a2zmenu.com/Blogs/Miscellaneous/Microsoft-OLE-DB-Provider-for-ODBC-Drivers-error-80004005.aspx) – Dalex

+0

@Dalex cảm ơn sự giúp đỡ, Tôi đã làm theo hướng dẫn từ liên kết của bạn nhưng vẫn không có may mắn. Bất kỳ ý tưởng nào khác? – Burt

Trả lời

2

Hãy thử ping máy chủ trong chuỗi kết nối của bạn. Máy chủ mà ứng dụng của bạn cư trú sẽ có thể giao tiếp trên cổng mà bạn chỉ định bằng thông tin đăng nhập. Nếu bạn đang phát triển tại địa phương, hãy thử chỉ định "localhost". Nếu máy chủ được nhóm lại hoặc bạn đã cài đặt như một cá thể thì bạn cần xác định cá thể đó. Ngoài ra, hãy đảm bảo máy chủ được định cấu hình để xác thực chế độ hỗn hợp nếu sử dụng thông tin đăng nhập sql.

HOẶC Hãy thử

Data Source = localhost; Initial Catalog = DBNAME; Persist An ninh Thông tin = True; User ID = myusername; Mật khẩu = MyPassword;

+0

Cảm ơn bạn đã phản hồi nhanh, đây là máy chủ trực tiếp với các trang web ASP.Net khác đang chạy trên đó mà tôi đã di chuyển và họ kết nối với cùng một máy chủ SQL. Máy chủ SQL nằm trên cùng một hộp nên (cục bộ) hoặc localhost sẽ hoạt động. Bất kỳ ý tưởng nào khác? – Burt

+0

@Burt Bất kỳ khả năng nào tên người dùng hoặc mật khẩu đều sai? Trong khi tôi giả sử tên người dùng trong chuỗi kết nối của bạn là một giả, chỉ trong trường hợp nó không phải là, tôi nhận thấy rằng Uid của bạn có một "c" thay vì một "e" trong "MySite". –

+0

@ AnnL.thanks để được trợ giúp, khá chắc chắn tên người dùng và mật khẩu là chính xác (bạn đúng, tôi đã thay thế chúng để đăng bài ở đây) – Burt

8

Nếu nó là một thể hiện Express, nó rất có thể không phải là một trường hợp mặc định, mà là một trường hợp được đặt tên. Vì vậy, bạn có thể có nghĩa là:

... "Provider=SQLNCLI10;Server=.\SQLEXPRESS; ... 
--- instead of just (local) ---^^^^^^^^^^^^ 

Nếu không, bạn sẽ cần hiển thị cho chúng tôi thuộc tính máy chủ trong Trình quản lý cấu hình SQL Server trên máy đó để chúng tôi có thể cho bạn biết cách sửa chuỗi kết nối của bạn.

+0

Đây sẽ là dự đoán của tôi. Nếu bạn di chuyển trường hợp sqlexpress đến máy chủ này, hãy đảm bảo rằng nó đang chạy và bạn có đúng cá thể trong tên máy chủ của bạn. – darin

+1

Tốt đoán nhưng nó là trường hợp mặc định, nó có tôi stumped, nghĩ rằng nó có thể liên quan đến SQL Browser hoặc Firewall hoặc một cái gì đó – Burt

+0

Cố gắng SQL Server trình duyệt và tường lửa tất cả các thiết lập có vẻ chính xác. – Burt

2

Có thể là sự cố về quyền, Vui lòng kiểm tra xem máy chủ có đang kết nối với cùng một chi tiết cấu hình từ quản lý SQL hay không. khác là tên người dùng/mật khẩu sai.

+0

Cảm ơn Jinesh, tôi có thể kết nối bằng thông tin đăng nhập, vì vậy tôi giả định quy tắc này trong tên người dùng hoặc mật khẩu. Bất kỳ ý tưởng nào khác? – Burt

+0

Ý của bạn là "Tôi có thể kết nối bằng thông tin xác thực"? Từ đâu? SSMS? Trên máy? Chi tiết, chi tiết, chi tiết. Có một lý do mà tất cả chúng ta đều là GUESSING, bạn có thể đoán tại sao không? –

+0

Chúng ta có SQL Server Management Studio, nơi chúng ta có thể nhập Server, username, Password. chúng tôi có thể nhập chi tiết của chúng tôi ở đó và có thể kiểm tra DB có thể truy cập từ hệ thống đó. –

3

Như Aaron Bertrand đã đề cập đến nó sẽ là thú vị để có một cái nhìn vào thuộc tính kết nối của bạn (Trong cấu hình Sql Server kiểm tra nếu sau đây được kích hoạt Tên ống và TCP/Ip). Vì bạn có thể kết nối từ SSMS, tôi sẽ yêu cầu kiểm tra xem kết nối Từ xa có được phép trên máy chủ đó Bạn cũng có thể cho biết dịch vụ trình duyệt Sql đang chạy không?

đây là một liên kết mà tôi giữ gần với tôi như một lời nhắc hoặc danh sách kiểm tra về các vấn đề kết nối có thể xảy ra trên SQL Server. Sql Connection Issues Và cuối cùng bạn có thể thử là nhà cung cấp "SQLNCLI" thay vì "SQLNCLI10"

+0

Tôi thấy không có lý do tại sao sqlncli không nên làm việc, nhưng có bạn đã thử sqloledb là nhà cung cấp của bạn? – John

+0

Tôi đã theo dõi bài đăng trên blog sau và mọi thứ có vẻ như mong đợi. Đặt tên là Pipes, TCP/IP và Firewall tất cả được cấu hình đúng. Trình duyệt SQL Server đã bắt đầu. http://blogs.msdn.com/b/walzenbach/archive/2010/04/14/how-to-enable-remote-connections-in-sql-server-2008.aspx – Burt

2

Dưới đây là những gì tôi sẽ làm gì:

EDIT: Lưu ý rằng this SO post, một vài xuống, có một phương pháp thú vị để tạo chuỗi kết nối chính xác để sử dụng.

  1. Mở SSMS (Sql Server Management Studio) và sao chép/dán tên người dùng/mật khẩu. Đừng gõ chúng, sao chép/dán. Xác minh không có sự cố nào xảy ra với sự cố .
  2. Kích hoạt mã (đây là bước tiếp theo cho tôi b/c này sẽ là điều dễ nhất tiếp theo trong trường hợp của tôi) và bước tới dòng 31 để xác minh rằng tất cả mọi thứ được thiết lập đúng cách . Here is some info về cách thực hiện điều này. Tôi hiểu rằng điều này có thể là không thể đối với bạn với điều này đang được sản xuất để bạn có thể bỏ qua bước này. Tuy nhiên, nếu có thể, , tôi sẽ thiết lập tính năng này trên máy cục bộ của mình và xác minh rằng có không có sự cố khi kết nối cục bộ. Nếu tôi gặp lỗi này tại địa phương, thì tôi có cơ hội tốt hơn để sửa lỗi đó.
  3. Xác minh rằng nhà cung cấp = SQLNCLI10 được cài đặt trên máy chủ sản xuất . Tôi sẽ theo dõi this SO post, có lẽ là câu trả lời được đăng bởi gbn.
  4. Bạn có các trang web đang hoạt động khác? Có ai trong số họ cổ điển asp? Ngay cả nếu không, tôi sẽ so sánh chuỗi kết nối trong một trang web khác với một trang mà bạn đang sử dụng tại đây. Đảm bảo không có sự khác biệt rõ ràng.
  5. Bật lên SQL Server Profiler và bắt đầu truy tìm. Kết nối với trang web và gây ra lỗi sau đó đi đến hồ sơ và xem liệu nó có cung cấp cho bạn thông tin lỗi bổ sung hay không.
  6. Nếu tất cả điều đó không thành công, tôi sẽ start going through this.

Xin lỗi tôi không thể chỉ ra điều gì đó và nói, có vấn đề!

Chúc may mắn!

+0

Đừng lo lắng Mike, tôi thực sự đánh giá cao thời gian bạn đã thực hiện để trợ giúp. Hy vọng rằng tôi có thể nhận được để dưới cùng của nó. Sẽ cho nó một đi tối nay và hy vọng làm cho nó được sắp xếp. – Burt

+0

Tôi quên mất rằng thủ thuật UDF, tôi đã sử dụng nó để tạo ra một chuỗi kết nối nhưng tôi vẫn gặp lỗi tương tự. Khá chắc chắn có một cái gì đó khác ở chơi khác hơn là chuỗi kết nối. – Burt

+0

@Burt Bạn có thể kiểm tra.udl kết nối trên máy chủ sản xuất chính nó? – AardVark71

2

Trong dòng 31:

cmd.ActiveConnection = Application("C2M_ConnectionString") 

How are you instantiating cmd?

Thay vì ConnectionString bị sai, có thể cmd hoạt động khác trong môi trường mới.

Edited thêm:

tôi thấy rằng bạn đã đi từ IIS 7 đến IIS 8. Để chạy ASP Classic trang web trên IIS 7 cần thay đổi bằng tay để mặc định máy chủ, chẳng hạn như "đường dẫn cho phép cha mẹ. " Có thể một số tinh chỉnh cần thiết không được di chuyển sang phải không?

Nếu bạn không chạy với Tùy chọn nghiêm ngặt, bạn nên thử điều đó - nó thường cho thấy nguồn gốc của các vấn đề tinh tế như thế này. (Tất nhiên, trước tiên bạn sẽ bị buộc phải khai báo tất cả các biến của bạn, đó là rất tẻ nhạt với mã hoàn chỉnh.)

+2

Đặt cmd = server.CreateObject (" ADODB.Command ") <<< đó là cách nó được khởi tạo, không chắc chắn những gì sẽ khác nhau về điều đó Tuy nhiên – Burt

2

Bạn đã bao giờ cố gắng SQL Server OLE DB chuỗi kết nối điều khiển:

"Provider=sqloledb;Data Source=(local);Initial Catalog=mysite_live;User Id=mysitec_Live;Password=mypass;" 

hoặc trình điều khiển ODBC:

"Driver={SQL Server};Server=SERVERNAME;Trusted_Connection=no;Database=mysite_live;Uid=mysitec_Live;Pwd=mypass;" 

Ít nhất đây là những gì tôi sẽ làm nếu không có gì hữu ích. Có thể bạn sẽ có thể nhận được thông tin lỗi hữu ích hơn.

2

Đây có phải là điều x86/x64 không?

Các chủ đề sau đây dường như chỉ ra rằng (địa phương) bí danh là một bí danh 32-bit mà không thành công trên 64-bit server: http://social.msdn.microsoft.com/Forums/en-US/sqldataaccess/thread/c701d510-90e5-4dd0-b14f-ca1d694d6615 (lưu ý rằng lỗi này là exacly những gì bạn có)

Khi bạn đang thử nghiệm .udl trên máy chủ, bạn đã kiểm tra cả x86 và x64 chưa?

Theo lời khuyên từ bài đăng trên blog này (http://blogs.msdn.com/b/farukcelik/archive/2007/12/31/udl-test-on-a-64-bit-machine.aspx), bạn có thể kiểm tra UDL địa phương của bạn:

  • trong 64-bit bằng cách chỉ cần click đúp vào nó (hoạt động giống như chạy "C: \ Program Files \ Common Tệp \ System \ Ole DB \ oledb32.dll ", OpenDSLFile C: \\ test.udl
  • trong 32-bit bằng cách chạy kép C: \ Windows \ syswow64 \ rundll32.exe" C: \ Program Files (x86) \ Tệp phổ biến \ System \ Ole DB \ oledb32.dll ", OpenDSLFile C: \\ test.udl

Nếu y ou có thể khẳng định đó là một vấn đề với các bí danh tôi muốn đề nghị bạn tạo một hình mới bằng cách làm theo các hướng dẫn tìm thấy ở đây: http://msdn.microsoft.com/en-us/library/ms190445(v=sql.105).aspx

2

Bạn đã cố gắng sử dụng địa chỉ máy chủ IP thay vì "(địa phương)" ? Giống như "Server = 192.168.1.1;" (rõ ràng bạn cần phải sử dụng địa chỉ IP thực của máy chủ của bạn)

Trong trường hợp bạn cố gắng sử dụng địa chỉ IP của máy chủ, kiểm tra trong "SQL-Server cấu hình "rằng Máy chủ SQL đang nghe trên địa chỉ IP bạn sử dụng trong kết nối của mình. (SQL Server Configurator screenshot)

điều hữu ích khác để kiểm tra/thử:

  • Và kiểm tra cũng nếu DB là trong trường hợp SQL Server mặc định, hoặc nếu nó là trong một trường hợp được đặt tên.
  • Bạn có kiểm tra xem tường lửa có quy tắc TCP/IP để mở cổng của bạn SQL Server không?
  • Bạn đã thử kết nối với SQL Server bằng phần mềm khác sử dụng kết nối TCP/IP chưa?
2

Dịch vụ trình duyệt SQL Server bị tắt theo mặc định khi cài đặt. Tôi khuyên bạn nên bật và khởi động nó. Để biết thêm thông tin, hãy xem this link và phần có tiêu đề "Sử dụng trình duyệt SQL Server" để giải thích tại sao điều này có thể là vấn đề của bạn.

Nếu bạn không muốn bật dịch vụ, bạn có thể bật giao thức TCP/IP (được tắt theo mặc định), chỉ định số cổng tĩnh và sử dụng số cổng 127.0.01, < > để xác định máy chủ.

2

Bước 1: Bật giao thức TCP/IP Bắt đầu >> Tất cả chương trình >> Microsoft SQL Server >> Công cụ cấu hình >> Trình quản lý cấu hình SQL Server >> Cấu hình mạng SQL Server >> Giao thức cho MSSQLSERVER >> nhấp chuột phải “ TCP/IP ”và chọn“ Bật ”.

Bước 2: thay đổi tên máy cụ thể trong thuộc tính Nguồn dữ liệu'giá trị thành (cục bộ) sẽ giải quyết vấn đề ni SQL SERVER 2012.

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