RE: Storing in SQL, Procedure call
I tried both suggestions and still no luck. Any other suggestion on how to get a Stored Procedure to work with FreeRadius, unixODBC/FreeTDS and Microsoft SQL Server 2000? For some reason when trying to call a Stored Procedure rlm_sql module is trying to perform a query rather then the procedure call. Thanks! -----Original Message----- From: Marko Dinic [mailto:marko@yu.net] Sent: Tuesday, June 06, 2006 4:16 AM To: freeradius-users@lists.freeradius.org Cc: Jackie Lau Subject: Re: Storing in SQL, Procedure call Im using the same setup for access to some ancient Sybase and it works fine. However, the query doesn't use EXEC ... it's plain : accounting_stop_query = "sp_my_stored_procedure_name '%{SQL-User-Name}','%{Realm}', ...." I did have problems with freetds 0.62.3, tho, so I installed 0.63 and had no problems with Sybase access since then. On the other hand, Oracle setup (using rlm_sql_oracle) with "EXEC SP_NAME(...)" didn't work either, so I had to change it to "BEGIN SP_NAME(...); END;" Maybe that would work for your unixODBC/freetds setup too. -- Best regards, Marko Dinic, System Engineer ----- YUnet International http://www.eunet.yu Dubrovacka 35/III, 11000 Belgrade Tel: +381 11 311 9901; Fax: + 381 11 311 9901 ----- This e-mail is confidential and intended only for the recipient. Unauthorized distribution, modification or disclosure of its contents is prohibited. If you have received this e-mail in error, please notify the sender by telephone +381 11 311 9901. -----
Hi,
I'm using freeradius with freetds and unixodbc. I am having an issue using a procedure call to insert to a Microsoft SQL Server. When I try to use the procedure call 'exec', I see the following errors:
radius_xlat: 'exec *** rlm_sql (sql): Reserving sql socket id: 8 query: exec *** rlm_sql_unixodbc: '00000 ' rlm_sql (sql): Couldn't update SQL accounting ALIVE record - 00000
But if I don't use a procedure call and use an insert command in its place, it works just find.
radius_xlat: 'INSERT **** rlm_sql (sql): Reserving sql socket id: 3 rlm_sql (sql): Released sql socket id: 3 modcall[accounting]: module "sql" returns ok for request 6
My question is why can't I use a procedure call 'exec'?
Thanks!
I never actually worked with MS SQL, so I'm suggesting methods that do work with other SQL servers. Try the PostgreSQL style : - If the function returns only a return code: "SELECT sp_name(....)" - If the function returns rows: "SELECT * FROM sp_name(...)" -- Best regards, Marko Dinic, System Engineer ----- YUnet International http://www.eunet.yu Dubrovacka 35/III, 11000 Belgrade Tel: +381 11 311 9901; Fax: + 381 11 311 9901 ----- This e-mail is confidential and intended only for the recipient. Unauthorized distribution, modification or disclosure of its contents is prohibited. If you have received this e-mail in error, please notify the sender by telephone +381 11 311 9901. -----
I tried both suggestions and still no luck. Any other suggestion on how to get a Stored Procedure to work with FreeRadius, unixODBC/FreeTDS and Microsoft SQL Server 2000? For some reason when trying to call a Stored Procedure rlm_sql module is trying to perform a query rather then the procedure call. Thanks!
-----Original Message----- From: Marko Dinic [mailto:marko@yu.net] Sent: Tuesday, June 06, 2006 4:16 AM To: freeradius-users@lists.freeradius.org Cc: Jackie Lau Subject: Re: Storing in SQL, Procedure call
Im using the same setup for access to some ancient Sybase and it works fine. However, the query doesn't use EXEC ... it's plain :
accounting_stop_query = "sp_my_stored_procedure_name '%{SQL-User-Name}','%{Realm}', ...."
I did have problems with freetds 0.62.3, tho, so I installed 0.63 and had no problems with Sybase access since then.
On the other hand, Oracle setup (using rlm_sql_oracle) with "EXEC SP_NAME(...)" didn't work either, so I had to change it to "BEGIN SP_NAME(...); END;" Maybe that would work for your unixODBC/freetds setup too.
-- Best regards,
Marko Dinic, System Engineer ----- YUnet International http://www.eunet.yu Dubrovacka 35/III, 11000 Belgrade Tel: +381 11 311 9901; Fax: + 381 11 311 9901 ----- This e-mail is confidential and intended only for the recipient. Unauthorized distribution, modification or disclosure of its contents is prohibited. If you have received this e-mail in error, please notify the sender by telephone +381 11 311 9901. -----
Hi,
I'm using freeradius with freetds and unixodbc. I am having an issue using a procedure call to insert to a Microsoft SQL Server. When I try to use the procedure call 'exec', I see the following errors:
radius_xlat: 'exec *** rlm_sql (sql): Reserving sql socket id: 8 query: exec *** rlm_sql_unixodbc: '00000 ' rlm_sql (sql): Couldn't update SQL accounting ALIVE record - 00000
But if I don't use a procedure call and use an insert command in its place, it works just find.
radius_xlat: 'INSERT **** rlm_sql (sql): Reserving sql socket id: 3 rlm_sql (sql): Released sql socket id: 3 modcall[accounting]: module "sql" returns ok for request 6
My question is why can't I use a procedure call 'exec'?
Thanks!
Jackie Lau wrote:
I tried both suggestions and still no luck. Any other suggestion on how to get a Stored Procedure to work with FreeRadius, unixODBC/FreeTDS and Microsoft SQL Server 2000? For some reason when trying to call a Stored Procedure rlm_sql module is trying to perform a query rather then the procedure call. Thanks!
What are you needing to do with the stored procedure that you can't do with an insert or update? If you need to perform tasks on the data, look at putting a trigger on the table. You can also work with the raw data by creating views that would allow you to bring in other information. FWIW, I'm just doing straight inserts/updates keyed on Acct-Unique-Id, which is used as a unique index on the radacct table. I then have several views that use radacct, including radwho (list of active logins) and radiusdat (which transforms the data for use by my billing system). -- Troy Settle Pulaski Networks http://www.psknet.com 866.477.5638
participants (3)
-
Jackie Lau -
Marko Dinic -
Troy Settle