Mac OS X + cakephp + SqlServer - sql-server

I am using Mac OS X, I am trying to connect to SqlServer from Cakephp2.0 application but it says "Cake is NOT able to connect to the database."
When I looked into the Cakephp datasource classes, In Sqlserver.php, it was checking for the the available drivers using PDO::getAvailableDrivers(), it was not returning the sqlsrv driver.
Is anyone tried connecting to Sql Server using sqlsrv (Provides access to Microsoft SQL Server database servers. developed, supported by Microsoft) using cakephp2.0 on Mac OS X.
Thanks in advance. Any help will be appreciated.

Just to clarify, Microsoft's sqlsrv Database Extension only works on Windows.
Also, the PDO_SQLSRV PDO driver that datasource uses only works on Windows:
The PDO_SQLSRV extension is only compatible with PHP running on Windows. For Linux, see ODBC and » Microsoft's SQL Server ODBC Driver for Linux.
There are the alternatives above, but I believe you will probably want to compile FreeTDS to get up and running (potentially following this guide):
PDO_DBLIB is a driver that implements the PHP Data Objects (PDO) interface to enable access from PHP to Microsoft SQL Server and Sybase databases through the FreeTDS libary.
Install Xcode (comes with headers and compiling tools such as gcc, make, etc.)
Install a package manager (homebrew, fink, macports)
(optional) Install UnixODBC
Install FreeTDS (configured to use your built in iODBC or UnixODBC)
Configure ODBC settings.
But first of all I would follow this ticket as it seems to offer some advice specifically about CakePHP and what datasource changes may need required.

Related

Can we connect to any version of oracle using cx_oracle library python?

I am trying to write a script to connect to all version's of oracle database starting from the latest to the oldest version of database.
I tried myself with cx_oracle library found like it needs a client library in the local to connect to remote database like if I download the latest version then it will work up to latest few versions not all.
Also tried with Sqlalchemy connection which is also using cx_oracle libraries.
Please do guide me if am doing anything wrong? I would also like to hear if there are any other ways to connect to the database using PYTHON
cx_Oracle 6 and higher already support connecting to any Oracle database from 9i all the way up to 18c depending on the client that you are using. cx_Oracle requires Oracle Client libraries at least at 11.2. You can see the interoperability notes here. Since anything earlier than 11.2 is no longer supported anyway, that should be adequate in almost all circumstances.
You can also use ODBC to connect to the database but that won't perform as well as cx_Oracle does.
I have an 11.2 Oracle database client on my corporate Windows 7 laptop and use cx_Oracle to connect to databases from version 9.2 to 12.2 without any difficulty.
The other way I connect to databases of all versions is to wrap Python around the Linux version of Oracle's sqlplus utility. This way I do not need to install cx_Oracle and can run with an older Oracle client and the version of Python that comes with the Linux distribution. In my case I am running on Redhat 6 which comes with Python 2.6. I connect to databases from version 8.1 to 12.2 in this way.
I have a blog post about how I run sqlplus from Python on Linux: https://www.bobbydurrettdba.com/2016/11/04/running-sqlplus-from-a-python-script/
Bobby

How to figure out ODBC Driver name based on SQL Server Version installed in machine?

I am a Database Developer and currently working in SQL Server Technology. I am trying to find out the ODBC driver name based on the installed SQL Server Version. Here is what I mean - Example,
We are using SQLCMD.exe to execute some scripts through our custom MSI. SQLCMD fails if it doesn't find the correct ODBC driver. Hence we need to be able to identify the correct ODBC version based on the SQL version installed, so that we can check this before installation and prompt the user to install the correct ODBC version as a prerequisite.
I have already explored the below -
Windows Registry - I did not get a clear cut idea of how to identify ODBC drivers based on versions. ODBC drivers and SQL Server versions are mentioned at multiple places and either they do not match amongst themselves or with the installed SQL Server Version.
Admistrative Tools -> ODBC Admistrator -> Drivers Tab
SQL Server Version here do give some idea but we are unable to decode odbcad32.exe. Link - https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/check-the-odbc-sql-server-driver-version-windows?view=sql-server-2017
If anyone knows anything then please render help. We need a solution using C# ( recommended ), however, if any other technology then we can have a look for its feasibility.
Thanks in advance.
Windows registry is the best way to go, I'm not sure why you're seeing inconsistencies. There are two main places to look:
For 64bit: HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers
For 32bit: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ODBC\ODBCINST.INI\ODBC Drivers
If you want the specific version, you will need to go up a level into the registry keys that have the same name as those listed in ODBC Drivers. For exmaple, under ODBC Drivers you have the key "ODBC Driver 17 for SQL Server" listed as installed, under ODBCINST.INI you will have a entry called "ODBC Driver 17 for SQL Server" where you can find further details.
ODBC driver versions aren't intrinsically linked to the version of SQL installed. It's absolutely possible the ODBC driver has been updated separately, and/or multiple versions are installed.

How do I install Oracle Enterprise Repository 12c on Macbook?

I am trying to install the Oracle SOA stack of products on my MacBook but I am stuck at one very crucial point. Need a database on my machine for OER but cannot figure out what to do?
Here is what I have already done:
Successfully installed Oracle SOA Suite 12c
I have downloaded OER
I have tried installing Oracle Database 12c, with Linux version even though as there is no download choice for Mac. I faced following error : ./runInstaller: line 252: /Users/madhu/Oracle/product/18.0.0/dbhome_1/install/.oui: cannot execute binary file
I checked supported database for OER but did not find MySQL or SQLlite or any other product than Oracle and Microsoft SQL server.
Microsoft SQL server is obviously not supported in MacOS
So at the as for OER a database is essential and I cannot install any supported database on MacBook.
Can you please help me?
Even if the installer script doesn't instantly fail, that doesn't mean that the Linux version of ODB 12c will magically work on OS X.
Install ODB or SQL Server on something else and configure OER to connect to it. That "something else" can be a virtual machine running on your Mac.
Install VirtualBox (or your preferred hypervisor);
Install Linux or Windows on a virtual machine;
Install and configure Oracle Database or SQL Server on that VM;
Consult the manual to configure networking for your virtual machine so the database is accessible from your host machine.
WebLogic will run on the Mac but FMW/SOA will not - at least not stable. Neither will the database.
& I know I teach/install/admin these products and am a certified Oracle trainer. I’ve tried...my time was worth more than it took to try and get it to work outside a vm-natively. I assume yours is too.
Unless you are actively trying to learn how to install them, then yes #backgammon is right, install them in a VM.
BUT, if you just want to use them and are not as interested in installation, then use one of the prebuilt -preconfigured FMW virtual box images here that will run on the Mac under virtual box.
Then Install OER in that image.
But, be advised OER is no longer sold by Oracle, even though it’s available for download.
It has been replaced by the API cloud service product.

Linux + Django + SQLServer

I am writing a Django application which needs to intereact with a SQLServer Database. I use the Django MSSQL Backend ADO.
I am trying to use it in a Linux machine (CentOS 6.4), but for the moment I am not able to establish the connection.
Anyone has suceeded on it or knows if it is possible to connect to django-mssql from a Linux environment?
Note: I've found this question but it is quite old. I am looking for an up-to-date answer.
Edit: The error I am receiving is the following. Remark that it is a Linux machine.
django.core.exceptions.ImproperlyConfigured: 'sqlserver_ado' isn't an available database backend.
Edit 2: PyWin32 is a requirement for the django-mssql package. But is possible any workaround for Linux?
Django-MSSQL only works on Windows, hence the pywin32 dependency (Actually, anything ADO is Windows dependent since it's built on Microsoft's ActiveX).
Try Django-SQLServer. It's based on Django-MSSQL but can pass info using python-tds which is not platform specific.
I will suggest to use django-pyodbc-azure instead of Django-MSSQL
Supports Django 2.0.3
Supports Microsoft SQL Server 2008/2008R2, 2012, 2014, 2016, 2017 and Azure SQL Database
Compatible with Micosoft ODBC Driver for SQL Server, SQL Server
Native Client, and FreeTDS ODBC drivers

What are some ways of accessing Microsoft SQL Server from Linux?

We have a Windows machine running SQL Server 2005, and we need to be able to run some database queries on it from a Linux box. What are some of the recommended ways of doing this? Ideally, we would want a command-line utility similar to sqlcmd on Windows.
FreeTDS + unixODBC or iODBC
Install first FreeTDS, then configure one of the two ODBC engines to use FreeTDS as its ODBC driver. Then use the commandline interface of the ODBC engine.
unixODBC has isql, iODBC has iodbctest
You can also use your favorite programming language (I've successfully used Perl, C, Python and Ruby to connect to MSSQL)
I'm personally using FreeTDS + iODBC:
$more /etc/freetds/freetds.conf
[10.0.1.251]
host = 10.0.1.251
port = 1433
tds version = 8.0
$ more /etc/odbc.ini
[ACCT]
Driver = /usr/local/freetds/lib/libtdsodbc.so
Description = ODBC to SQLServer via FreeTDS
Trace = No
Servername = 10.0.1.251
Database = accounts_ver8
sql-cli is a nodejs based cross platform command line interface for sql server. You can install it via npm https://www.npmjs.org/package/sql-cli
It can connect to both on-premise and sql azure instance.
sqsh + freetds.
sqsh was primarily an isql replacement for Sybase SQL Server (now ASE) but it works just fine for connecting to SQL Server (provided you use freetds).
To compile, simply point $SYBASE to freetds install and it should work from there. I use it on my Mac all day.
The best part of sqsh are the advanced features, such as dead simple server linking (no need to set up linked servers in SQL Server), flow control and looping (no more concatenating strings and executing dynamic SQL), and invisible bulk copy/load.
Anyone who uses any other command line tool is simply crazy! :)
pymssql is a DB-API Python module, based on FreeTDS. It worked for me. Create some helper functions, if you need, and use it from Python shell.
Mono contains an ADO.NET provider that should do this for you. I don't know if there is a command line utility for it, but you could definitely wrap up some C# to do the queries if there isn't.
Have a look at http://www.mono-project.com/TDS_Providers and http://www.mono-project.com/SQLClient
Since November 2011 Microsoft provides their own SQL Server ODBC Driver for Linux for Red Hat Enterprise Linux (RHEL) and SUSE Linux Enterprise Server (SLES).
Download Microsoft ODBC Driver 11 for SQL Server on Red Hat Linux
Download Microsoft ODBC Driver 11 for SQL Server on SUSE - CTP
ODBC Driver on Linux Documentation
It also includes sqlcmd for Linux.
If you are using Java, have a look at JDBC.
http://msdn.microsoft.com/en-us/library/ms378672(SQL.90).aspx
http://en.wikipedia.org/wiki/Jdbc
You don't say what you want to do with the resulting data, but if it's general queries for development/maintenance then I'd have thought Remote Desktop to the windows server and then using the actual SQL Server tools on their would always have been a more productive option over any hacked together solution on Linux itself.
There is an abstraction lib available for PHP. Not sure what your client's box will support but if its Linux then certainly should support building a PHP query interface with this:
http://adodb.sourceforge.net/ Hope that helps you.
I'd like to recommend Sqlectron. Besides being open source under MIT license it's multiplatform boosted by Electron. Its own definition is:
A simple and lightweight SQL client desktop with cross database and platform support
It currently supports PostgreSQL, MySQL, MS SQL Server, Cassandra and SQLite.
Surprised no one has mentioned that, contrary to what other answers seem to suggest, FreeTDS is all you need. No need for unixODBC, iODBC or anything else on top of it.
run some database queries [...] command-line utility similar to sqlcmd on Windows
tsql does this and is part of the FreeTDS package (as are freebcp and other utilities). tsql does not have fancy UI, but if you want a command-line utility that is light, functional and performant, it'll do just fine.
See e.g. How to run a SQL script in tsql
And by light, I mean under 500kb in size (maybe under 60k depending on how it's compiled) and, as far as I have seen, extremely efficient with memory and CPU.
I was not confortable with the freetds solution,
it's why i coded a class (command history, autocompletion on tables and fields, etc.)
http://www.phpclasses.org/package/8168-PHP-Use-ncurses-to-get-key-inputs-and-write-shell-text.html
valentina-db it has free version for sql server
.rpm and .deb
serial id will be sent by email after registration
https://www.valentina-db.com/en/
https://valentina-db.com/en/store/category/14-free-products
If you use eclipse you can install Data Tools Platform plugin on it and use it for every DB engines including MS SQLServer. It just needs to get JDBC driver for that DB engine.
There is a nice CLI based tool for accessing MSSQL databases now.
It's called mssql-cli and it's a bit similar to postgres' psql.
Gihub repository page
Install for example via pip (global installation, for a local one omit the sudo part):
sudo pip install mssql-cli

Resources