Sql Server 2008 - development

Witam, mam problem.
Opiszę cała sytuację, ponieważ jestem dopiero początkujący i nie wiem jak się za to zabrać.
Stworzyłem bazę danych w Microsoft SQL Serverze 2008 (prawy na Databases -> new database).
Wyskakuje okienko ‘New Database’, wpisuję databasename: sql_test, wybieram owner’a: W4der_PC/wader. Zatwierdzam wszystko.
Baza zostaje utworzona. Tworzę tam tabele i uzupełniam.

wchodzę w konsolę i wpisuję:
rails sql_test

Teraz mam problem żeby połączyć tą bazę danych z Railsami. Znalazłem podobny wątek na tym forum, ale jest już on mało aktualny i linki w nim wygasły.
Znalazłem na stronę: http://rubyrailsandwindows.blogspot.com/2008/03/rails-2-and-sql-server-2008-on-windows_24.html
Gdzie pisze żeby w pliku ‘database.yml’, sekcję ‘development’ zmienić na:

adapter: sqlserver
mode: odbc
dsn: sqlserverapp
username: user
password: secret
host: mycomputer

Więc w moim przypadku to będzie:
development:
adapter: sqlserver
mode: odbc
dsn: sqlserverapp
username: wader <- może powinno być W4der_PC/wader ?
password: <-Znalazłem gdzieś, że jest to standardowe hasło jakim się loguje do systemu, takie też wpisałem. Ponieważ w SQL serwerze podczas zakładania BD nie podawałem żadnego hasła. Jakby ktoś mógł mi powiedzieć jak je ustawić w SQL serwerze, krok po kroku - byłbym bardzo wdzięczny.
host: localhost

Zatwierdzam zmiany. Otwieram wiersz poleceń i wpisuję:

rake db:create

i wyskakuje mi błąd:
rake aborted! undefined method ‘[]’ for nil:NilClass

Znowu na innej stronie znalazłem że ‘database.yml’ w wypadku MS SQL Server 2008 powinien zawierać takie dane:

development:
adapter: sqlserver
database: sql_test
host: localhost
username: wader
password: <- znowu nie wiem jakie hasło konkretnie.

Zatwierdzam zmiany w database.yml. Otwieram wiersz poleceń i wpisuję:
rake db:create

i wyskakuje mi błąd:
rake aborted! no such file to load – odbc

Wpisywałem w wierszu poleceń aby zainstalował jakiś specjalny gem do tego, ale nawet po jego zainstalowaniu wyskakują te same błędy.
gem install activerecord-sqlserver-adapter

Mógłby ktoś mi pomóc w rozwiązaniu tego problemu? Męczę się już drugi dzień i nie radzę sobie.

chyba potrzebujesz gema ruby-odbc

gem install ruby-odbc

To też może być pomocne:

Dziękuję za szybką odpowiedź ;).

Po wpisaniu ‘gem install ruby-odbc’:

[code]H:\strony_internetowe\sql_test>gem install ruby-odbc
Building native extensions. This could take a while…
ERROR: Error installing ruby-odbc:
ERROR: Failed to build gem native extension.

D:/Ruby19/bin/ruby.exe extconf.rb
checking for version.h… *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.

Provided configuration options:
–with-opt-dir
–without-opt-dir
–with-opt-include
–without-opt-include=${opt-dir}/include
–with-opt-lib
–without-opt-lib=${opt-dir}/lib
–with-make-prog
–without-make-prog
–srcdir=.
–curdir
–ruby=D:/Ruby19/bin/ruby
–with-odbc-dir
–without-odbc-dir
–with-odbc-include
–without-odbc-include=${odbc-dir}/include
–with-odbc-lib
–without-odbc-lib=${odbc-dir}/lib
D:/Ruby19/lib/ruby/1.9.1/mkmf.rb:362:in try_do': The complier failed to generat e an executable file. (RuntimeError) You have to install development tools first. from D:/Ruby19/lib/ruby/1.9.1/mkmf.rb:431:intry_cpp’
from D:/Ruby19/lib/ruby/1.9.1/mkmf.rb:809:in block in have_header' from D:/Ruby19/lib/ruby/1.9.1/mkmf.rb:668:inblock in checking_for’
from D:/Ruby19/lib/ruby/1.9.1/mkmf.rb:274:in block (2 levels) in postpo ne' from D:/Ruby19/lib/ruby/1.9.1/mkmf.rb:248:inopen’
from D:/Ruby19/lib/ruby/1.9.1/mkmf.rb:274:in block in postpone' from D:/Ruby19/lib/ruby/1.9.1/mkmf.rb:248:inopen’
from D:/Ruby19/lib/ruby/1.9.1/mkmf.rb:270:in postpone' from D:/Ruby19/lib/ruby/1.9.1/mkmf.rb:667:inchecking_for’
from D:/Ruby19/lib/ruby/1.9.1/mkmf.rb:808:in have_header' from extconf.rb:22:in

Gem files will remain installed in D:/Ruby19/lib/ruby/gems/1.9.1/gems/ruby-odbc-
0.9999 for inspection.
Results logged to D:/Ruby19/lib/ruby/gems/1.9.1/gems/ruby-odbc-0.9999/ext/gem_ma
ke.out[/code]
wpisałem także: ‘gem install activerecord-sqlserver-adapter’
i bez problemów się zainstalowało. Natomiast poprzednia operacja się nie udała.

H:\strony_internetowe\sql_test>gem install activerecord-sqlserver-adapter Successfully installed activerecord-sqlserver-adapter-2.3.4 1 gem installed Installing ri documentation for activerecord-sqlserver-adapter-2.3.4... Updating class cache with 1053 classes... Installing RDoc documentation for activerecord-sqlserver-adapter-2.3.4...
Jakieś propozycje co do błędu?

stąd:
http://rubyinstaller.org/download.html

hubertlepicki i Yax dziękuję bardzo za pomoc! Zadziałało!

po zainstalowaniu Development tools z linku http://rubyinstaller.org/download.html, mogłem bez problemu wykonać gem install ruby-odbc i wykonać rake db:create.

Pozdrawiam wszystkich :wink:

Kolejny błąd.

[code]H:\strony_internetowe\music_library>rake db:migrate
(in H:/strony_internetowe/music_library)
rake aborted!
IM002 (0) [Microsoft][Mened┐er sterownikˇw ODBC] Nie mo┐na odnalečŠ nazwy črˇd│a
danych, a nie ma podanego sterownika domyťlnego

(See full trace by running task with --trace)[/code]
Ma ktoś jakiś teraz pomysł?

Naprawdę, jeśli nie musisz to zostaw tą tak zwaną bazę danych, jak to mówią: life is too short to use… MSSQL

[quote=Wader]Więc w moim przypadku to będzie:

development: adapter: sqlserver mode: odbc dsn: sqlserverapp username: wader <- może powinno być W4der_PC/wader ? password: <-Znalazłem gdzieś, że jest to standardowe hasło jakim się loguje do systemu, takie też wpisałem. Ponieważ w SQL serwerze podczas zakładania BD nie podawałem żadnego hasła. Jakby ktoś mógł mi powiedzieć jak je ustawić w SQL serwerze, krok po kroku - byłbym bardzo wdzięczny. host: localhost
[/quote]
Tak raczej nie powinno być w twoim przypadku.
Raczej

dsn: sql_test host: HOSTNAME\SQLEXPRESS
lub bardziej prawdopodobnie

adapter: sqlserver mode: odbc dns: Provider=SQLOLEDB;Data Source=HOSTNAME\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=sql_test;Application Name=Nazwa app
HOSTNAME to nazwa twojej maszyny, SQLEXPRESS to nazwa instalacji serwera (podawana podczas instalacji, ta jest domyślna przez wersji EXPRESS)
Może być jeszcze potrzebne jeszcze UID=wader;PWD=haslo;

Możesz zobaczyć dokładnie jak budować takiego stringa tu:
http://www.connectionstrings.com/

to powinno pomóc, ale naprawdę, jeśli to nie przymus to nie komplikuj sobie życia.

pozdrawiam

[quote=Wader]Kolejny błąd.

[code]H:\strony_internetowe\music_library>rake db:migrate
(in H:/strony_internetowe/music_library)
rake aborted!
IM002 (0) [Microsoft][Mened┐er sterownikˇw ODBC] Nie mo┐na odnalečŠ nazwy črˇd│a
danych, a nie ma podanego sterownika domyťlnego

(See full trace by running task with --trace)[/code]
Ma ktoś jakiś teraz pomysł?[/quote]
Jaki system? 32/64?

Jesli 64 to musisz ustawic łącze danych dla 32 bitów

%windir%\syswow64\odbcad32.exe

Miałem ten sam komunikat własnie dlatego.

Łojezu, robiliśmy kiedyś aplikację, która gadała z bazami MSSQL (tak, dwiema). Odgrzebię kod (konfiguracja, używane gemy, dokumentacja) jakoś jutro w przerwie na drugie śniadanie :slight_smile: