2010-04-16 50 views
7

tôi (sadly) phải triển khai một ray ứng dụng trên Windows XP trong đó có kết nối với Microsoft SQL Server 2005.Connect ray ứng dụng SQL Server 2005 từ Windows

Lướt web trên web có rất nhiều lần truy cập để kết nối từ Linux đến SQL Server, nhưng không thể tìm hiểu cách thực hiện từ Windows.

Về cơ bản Tôi làm theo các bước sau:

  • Install dBi đá quý
  • Install activerecord-sql-server-adapter đá quý

My database.yml bây giờ trông giống như này:

development: 
    adapter: sqlserver 
    mode: odbc 
    dsn: test_dj 
    host: HOSTNAME\SQLEXPRESS 
    database: test_dj 
    username: guest 
    password: guest 

Nhưng tôi không thể kết nối nó. Khi tôi chạy rake db: di chuyển tôi nhận được

IM002 (0) [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified 

Tôi không phải là người dùng Windows, do đó không thể hiểu được thực sự tốt ý nghĩa của dsn yếu tố hoặc lâu hơn. Có ai đó có ý tưởng cách giải quyết vấn đề này không?

Cảm ơn trước


Với Alexander lời khuyên bây giờ tôi đã sửa đổi database.yml của tôi để:

development: 
    adapter: sqlserver 
    mode: odbc 
    dsn: Provider=SQLOLEDB;Data Source=SCADA\SQLEXPRESS;UID=guest;PWD=guest;Initial Catalog=test_dj;Application Name=test 

Nhưng bây giờ rake db: di chuyển trả tôi:

S1090 (0) [Microsoft][ODBC Driver Manager] Invalid string or buffer length 

Tôi có issing một cái gì đó?

Trả lời

1

đây là một DSN mẫu, kết nối với cơ sở dữ liệu bằng cách sử dụng tài khoản người dùng Windows (tốt nhất khi mạng công ty với đăng nhập miền)

Provider=SQLOLEDB;Data Source=MyServer\MyInstance;Integrated Security=SSPI;Initial Catalog=MyDatabase;Application Name=My Application Name that will show up in the trace

Vì vậy, đây sử dụng các nhà cung cấp OLEDB cho SQL Server. SQLNCLI cũng có thể được sử dụng, chưa thử với ODBC. Trên thực tế DSN này không được kiểm tra khá nhiều (phải chờ quản trị viên của tôi cung cấp cho tôi các quyền cần thiết), nhưng nó đã được sao chép từ một tập lệnh làm việc, sử dụng SQLNCLI làm nhà cung cấp. Nguồn dữ liệu là máy chủ và nếu nó có một phiên bản được đặt tên, nó phải được chỉ định, vì vậy nó chỉ là Server hoặc Server\Instance. Integrated Security=SSPI cho biết bạn muốn sử dụng Xác thực Windows. Nếu không, bạn chỉ định người dùng và mật khẩu để sử dụng bằng cách sử dụng UID=MyUser;PWD=MyPassword. UID, User, Username, Password - Tôi nghĩ tất cả các tham số này hoạt động.

Có một trang web tuyệt vời trên internet cung cấp tất cả các loại mẫu DSN, chỉ không thể tìm thấy ở bất cứ đâu. Nếu tôi tìm thấy nó, tôi sẽ cho bạn biết.

Nếu bạn chưa có bất kỳ nhà cung cấp nào trong Rails, hãy kiểm tra xem Rails có hỗ trợ Mô hình đối tượng thành phần Windows (COM) hay không. Và nếu có, bạn thậm chí có thể khởi tạo lớp COM ADODB.Connection, làm việc với ADO.

Ah, đây là trang web mà tôi đã nói về: http://www.connectionstrings.com/

+0

Cảm ơn Alexander cho câu trả lời của bạn. Theo mẹo của bạn tôi đã sửa đổi database.yml của tôi như trong bài chỉnh sửa, nhưng bây giờ có "chuỗi không hợp lệ hoặc chiều dài đệm" –

+0

Điều này trông giống như một lỗi trong các truy vấn SQL đã có, không phải là lỗi kết nối. Nó cũng hữu ích để cung cấp mã lỗi, nó có thể nói rất nhiều. Dù sao, tôi thấy bài viết này có thể giúp bạn: http://tutorials.aspfaq.com/8000xxxxx-errors/why-do-i-get-80040e57/80040e07-errors.html tất nhiên, nó phụ thuộc vào quy mô các truy vấn SQL của bạn được tự động hóa và cách bạn có thể sửa đổi chúng. Cũng nên nhớ rằng CHAR và VARCHAR trong MSSQL có độ dài tối đa là 8000. – AlexanderMP

+0

Tôi có cùng vấn đề với Enrico. Đây là lỗi: ODBC :: Lỗi: S1090 (0) [Microsoft] [Trình quản lý trình điều khiển ODBC] Chuỗi hoặc chiều dài bộ đệm không hợp lệ Đây là việc thực hiện tất cả truy vấn trên mô hình (rất đơn giản) của tôi. –

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