Cześć mam taki mały problem na studiach musze zrobic projekt aplikacji bazodanowej i musze korzystać z sqlserver na Azure. Udało mi sie połączyć aplikacje i Activerecord z Azurem poprzez: 'tiny_tds' i 'activerecord-sqlserver-adapter'
Poprzez eksplorator na Azurze widzę że aplikacja zmienia moją bazę danych itd. Jednak mam taki problem, że muszę tez napisać proste wywołąnia SQL-owe do samej bazy. Zacząłem od wzorowania się na oficjalnych materiałach https://www.microsoft.com/en-us/sql-server/developer-get-started/ruby/ubuntu/step/2.html
Napisałem sobie proste zapytanie plik (zapytanie.rb) :
require 'tiny_tds'
@client = TinyTds::Client.new username: ...... # Tu mam swopje dane na 100% prawidłowe
puts 'Connecting to SQL Server'
if @client.active? == true then puts 'Done' end
@client.execute("SELECT * FROM high_scores").each do |row|
print row
end
@client.close
Wiem, że takie zapytanie jest poprawne: https://ibb.co/kwRGXc – screen z Azure
Gdy wywołuję: ruby zapytanie.rb
dostaję:
Connecting to SQL Server
Done
active.rb:10:in `each': Invalid object name 'high_scores'. (TinyTds::Error)
from active.rb:10:in `<main>'
Wklej proszę pełen stacktrace błędu. Ogólnie raczej mała szansa żeby ktoś w Ruby używał takiego setupu jak Ty. Idealnie byłoby jakbyś prywatnie się odezwał i dał dostęp do kodu + tej bazy danych żeby zdiagnozować problem.
Przerabiałem ostatnio tiny_tds do łączenia się z SQL Server na którym postawiona jest baza WF-MAGa no i miałem podobny problem dopóki do “from XXX” nie dodałem nazwy bazy danych. Przykładowo takie zapytanie:
"select sum(NETTO) as netto, sum(VAT) as vat from INTER_DOKH_VAT where ID_DOKUMENTU_HANDLOWEGO = #{id_dok};"
Musiałem zmeinić na takie:
"select sum(NETTO) as netto, sum(VAT) as vat from WAPRO.dbo.INTER_DOKH_VAT where ID_DOKUMENTU_HANDLOWEGO = #{id_dok};"
Mimo, iż to pierwsze gdy łączyłem się do bazy klientem windowsowym było prawidłowe i zwracało wyniki.
Z drugiej strony, patrzę, że poza railsami mam skrypt, w którym nie mam tego “WAPRO.dbo.” i działa prawidłowo.