# Win32::SqlServer 2.008

This is Win32::SqlServer, a module for calling Microsoft SQL Server from Perl through OLE DB.

Copyright © 2004-2012 Erland Sommarskog. All rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

### Brief Overview

Win32::SqlServer is a module that permits you to access SQL Server from Perl, by using any of the OLE DB providers SQLOLEDB or SQL Server Native Client. Win32::SqlServer exposes two levels of interface, a high-level interface and a mid-level interface. The high-level interface is a developed version of the interface of my older module MSSQL::Sqllib, and largely backwards compatible with this interface. The mid-level interface exposes a few more knobs at the price of somewhat more verbose code. A special feature of Win32::SqlServer is that you get fine-grained control for error handling.

There is no support for DBI. This module does not run on Unix – or any other non-Windows OS for that matter.

### What's in This Kit

The zip file includes x86 and AMD64 binaries for ActivePerl builds 8xx (from build 809 and up),10xx (build 1007 and up), 12xx (build 1202 and up), 14xx (build 1401 and up) and 16xx (build 1600 and up). The kit also includes source code and test scripts. For information how to build from sources, see below.

The binaries were built on Windows 7 with the Visual Studio 2005 C++ compiler.

### Prerequisites

- Perl 5.8.3 or later. (That is ActivePerl build 809 or later.)
- Windows 2000 or later versions of Windows.
- SQL Server 6.5 or later.
- MDAC 2.6 or SQL Server Native Client.

For details, see the Prerequisites section in the Win32::SqlServer manual.

Notes:

- The binaries are not likely to run with other binary distributions of Perl for Win32, such as Strawberry Perl.
- While Win32::SqlServer may run against SQL Azure (or Windows Azure SQL Database as it is currently called), I don't really claim to supported, since I don't have any account on Azure myself.
- Win32::SqlServer 2.008 will be the last version to support SQL Server 6.5.

### How to Install the Binary

- Extract the zip file anywhere you like.
- Open a Command Prompt, and change directory to where you extracted the files.
- Run the script activeperl-copy.pl. This script inspects your PATH to determine where your Perl installation is, and installs the files according to the structure used by ActivePerl.
- You can prevent the script from searching by giving the top directory for your Perl installation yourself. E.g.:

          perl activeperl-copy.pl C:\Perl

To test that the installation is OK, either run any of the test scripts that comes with Win32::SqlServer and which are detailed in tests.html, or run any of the sample scripts in the manual.

### Manual

The manual is in Win32-SqlServer.html. activeperl-copy.pl also installs it as html/site/lib/Win32/SqlServer.html There is a POD file as well, but there is no real contents in it, only a pointer to the HTML file.

### Reporting Bugs or Problems

Please mail bug reports and suggestions to esquel@sommarskog.se. Try to make your reports as specific as possible. Particularly do not forget to include which versions of Perl, Windows, SQL Server etc you are using.

I usually try to respond within 24-48 hours, but if I am on holiday I am.

## Building from Sources

### Prerequisites

To build Win32::SqlServer you need:

- The Platform SDK for Windows, more precisely, the Core SDK and the MDAC SDK. The Platform SDK comes with Visual Studio. You can also download the Windows SDK for Windows Server 2008 and .NET Framework 3.5. (The link is the current as of this writing. Microsoft often twitches things around, so you have to search for it.)
- The SDK (header files and link libraries) for SQL Server Native client that comes with SQL 2012. (The SDK for SQL 2008 or earlier will not do.)
- Perl 5.8.3 or later.
- A C++ compiler, preferably Visual C++ 8.0 or later. (The C++ compiler that comes with Visual Studio 6 will not work.) If you don't have Visual Studio, the Windows SDK (see above), comes with one.
- A make facility. Microsoft's NMAKE also comes with the Windows SDK.

Note that if you build Win32::SqlServer for another binary distribution of Perl than ActivePerl, you should use the C compiler and MAKE facility that distribution was built with. For instance, if you have Strawberry Perl you should use DMAKE and GNU-C. If you try to use NMAKE, you will get strange error messages due to that DMAKE requires special tweaks to the syntax of Perl code embedded into the Makefile. (And whether Win32::SqlServer actually builds with Strawberry Perl I don't know, and it is not likely that I will try to find out.)

### How to Build and Install

Text in `this type face` indicates command you run from the command prompt.

1. Extract the zip file anywhere you like.
2. Edit makefile.pl so that `$SQLDIR` points to where sqlncli.h is located.
3. If you use a different compiler from Visual C++, you need to review makefile.pl more closely as makefile.pl may include options that are specific to Visual C++.
4. Note that makefile.pl explicitly lists which libraries to link with, and specifies the MT flag for the C compiler. This is to force use of the static C run-time library for Visual C++, which is what I want for the binary distribution. Change this if you like.
5. Open a Command Prompt, and change directory to where you extracted the files.
6. `Perl makefile.pl`.
7. `MAKE`
   Or `NMAKE`, `DMAKE` or whatever your MAKE utility you use.
8. `MAKE test`
   Before you run the tests, please read tests.html so that you understand what impact the test scripts have on your server. This document also describes how to set the environment variable OLLEDBTEST, from which the test scripts get information how to log into SQL Server.
9. `MAKE install`

### Known Issues

#### ActivePerl

Win32::SqlServer does not build for x86 with ActivePerl builds 1004 and 1005, because of a bug in ExtUtils::MM_Win32. I've reported the bug, and it was closed as fixed well before build 1005 came out, but 1005 does not include the fix. To build Win32::SqlServer for x86 with ActivePerl, you need build 1002 or build 1007 or later. (Maybe builds 1003 and 1006 are OK too, I have not tested those builds.)

The bug does not affect building Win32::SqlServer for the x64 architecture.

#### Other Compilers than Visual C++

To be honest, I have no idea if that will work. I have certainly not tested, and nor do I plan to.

Last updated 12-09-23 23:47