在Linux下访问MS SQL Server数据库

server|访问|数据|数据库

---- Linux 作 为 一 个 免 费 的Unix 类 操 作 系 统, 以 其 开 放 性 源 代 码、 多 任 务、X window 等 特 点 为 众 多 的 用 户 所 采 用, 并 有 很 多 企 业 采 用Linux 来 作 为 其 内 部 网 的 全 功 能 服 务 器(WWW,FTP,Email、DNS)。 企 业 的 内 部 网 不 仅 要 提 供 文 本 信 息 的 访 问, 还 要 能 提 供 对 企 业 关 系 数 据 库 中 的 信 息 的 访 问。SQL Server 以 其 低 成 本、 性 能 高 以 及 与NT 的 有 效 集 成 等 特 性 为 许 多 企 业 所 采 用, 但Microsoft 不 提 供 其Unix 下 的 客 户 端, 为 这 类 应 用 带 来 了 困 难。 本 文 则 提 出 了 这 一 问 题 的 解 决 方 案。

安 装Sybase 客 户 端
---- 首 先 从Microsoft SQL Server 和Sybase SQL Server 的 关 系 说 起。 两 公 司 曾 共 同 开 发OS/2 上 的 数 据 库 SQL Server for OS/2, 此 后 两 公 司 又 独 立 开 发 升 级 系 统,Sybase 的 客 户 端 可 以 访 问Microsoft SQL Server。
---- 和 其 他 数 据 库 公 司 相 比, 可 以 说Sybase 公 司 对Linux 是 最 有 善 意 的, 它 虽 不 提 供Linux 下 的SQL Server, 但 提 供 了 免 费 的CT -LIB 的 客 户 端, 这 也 可 能 是 许 多IT 管 理 人 员 在 为 公 司 数 据 库 选 型 时 不 再 考 虑Oracle 或Informix 的 理 由 之 一。 当 然 现 在 情 况 有 所 改 变。

----Sybase 公 司 发 布 的OpenClient for Linux 是a.out 格 式 的, 在 互 联 网 上 有 人 将 其 转 化 为ELF 和 动 态 链 接 的ELF 格 式, 可 从 下 列 地 址 上 寻 找 下 载:http://www.mbay.net/ ~mpeppler。 最 好 同 时 下 载 两 个 版 本, 正 常 使 用 时 采 用 动 态 链 接 的 版 本, 但 有 的 程 序 在 编 译 时 可 能 需 要 一 个 库(libblk.a), 只 在ELF 里 面 包 含。

---- 下 载 以 后, 键 入 如 下 命 令 展 开( 假 设 当 前 目 录 是/usr/tmp):

----tar zxvf linux elf dynamic tar.gz

---- 然 后 将 其 移 至/usr/local 目 录:

----mv sybase /usr/local

---- 编 译 和 使 用Sybase 客 户 端 需 要 进 行 如 下 的 设 置:

----1 . Interface 文 件 举 例 如 下:

----MSSQL

----query tcp ether mysql 1433

---- 其 中:

MSSQL 是 客 户 端 使 用 的 服 务 器 名, 以 后 引 用MSSQL 即 可;

mysql 是 服 务 器 的 地 址 或 名 字, 如 果 是 名 字, 则 系 统 能 够 查 到 其IP 地 址;

1433 是SQL Server 的 端 口 号,Microsoft SQL Server 的 缺 省 值 是1433,Sybase 是5000。
----2 . SYBASE 环 境 变 量, 内 容 是Sybase 客 户 端 所 在 的 目 录:

----Export SYBASE=/usr/local/sybase

----3 . 如 果 编 译Sybase 客 户 端 中 的 例 子, 则 还 要 设 置 环 境 变 量SYBPLATFORM:

----export SYBPLATFORM=Linux

---- 并 且 修 改 其 头 文 件 中 关 于 服 务 器 名 称 及 用 户 名 和 口 令 的 描 述。

使 用SQSH 界 面 访 问SQL Server
----Sybase 客 户 端 提 供 了xisql 工 具, 但 更 多 的 人 使 用 的 是SQSH,SQSH 是SQshell 的 缩 写, 是 改 进 了 的isql, 可 从 下 列 地 址 下 载:http://www.voicenet.com/ ~gray/。 当 前 的 最 新 版 本 是1.6.0。 假 设 下 载 后 的 文 件 放 在/usr/tmp 目 录 下:
----tar zxvf sqsq 1.6.0 tar.gz

----cd sqsh 1.6.0

----./configure

----make;make install

---- 然 后, 将 生 成 的 可 执 行 文 件sqsh 安 装 到/usr/local/bin/ 目 录 下。

----Sqsh 的 使 用 如 下:

---- # sqsh - -Uusername - -Ppassword - -Sservername

---- 其 中username 和password 是 用 户 名 和 口 令,servername 是 在interface 文 件 中 定 义 的 服 务 器 名( 如 例 子 中 的MSSQL)。

----Sqsh 是 交 互 式 的 命 令 行 界 面, 命 令 用 输 入go 来 执 行, 命 令 如 果 较 长 可 直 接 分 成 几 行 书 写, 以 回 车 换 行 即 可。

---- 如 下 是 一 个 例 子:

----1> use pubs

----2> go

----1> select * from authors

----2> go 采 用CT -LIB 编 写 应 用 程 序

---- 由 于Sybase 的Linux 客 户 端 不 提 供DB -Library, 所 以 应 采 用CT -Library 来 编 写 应 用 程 序, 采 用CT -Library 编 写 应 用 程 序 可 参 考 例 子, 详 细 的 编 程 说 明 可 以 参 考Sybase 的 说 明。 利 用Sybperl 编 写 应 用 程 序

----Sybperl 是Sybase 的Perl 扩 展, 可 利 用Perl 语 言 来 访 问SQL Server, 或 者 编 写CGI 程 序。

----Sybperl 可 从 下 列 地 址 取 得http://www.mbay.net/ ~mpeppler。 当 前 的 最 新 版 本 是2.9.5。

---- 取 得Sybperl 的 源 代 码 展 开 以 后, 需 要 修 改 一 下CONFIG 文 件, 以 下 是 几 个 参 数:

---- 下 一 个 要 修 改 的 文 件 是PWD, 这 是 用 来 进 行 测 试 的, 将 其 中 的 服 务 器 名、 用 户 名、 用 户 口 令 设 置 成 自 己 的 配 置 即 可。 然 后 进 行 编 译:

----perl Makefile.PL

----make; make test; make install

---- 安 装 成 功 以 后, 即 可 使 用Sybperl 进 行 编 程。 下 面 是 一 个 简 单 的 例 子。

    #!/usr/bin/perl
   use Sybase::CTlib;
    $dbh=new Sybase::CTlib 'sa','','MSSQL';
    $dbh ->ct_execute("select au_id, au_lname,
au_fname from pubs.dbo.authors");
   while( $dbh ->ct_results( $restype) == CS_SUCCEED) {
    next unless $dbh ->ct_fetchable( $restype);
while(( $au_id, $au_lname, $au_fname) = $dbh ->ct_fetch){
    print " $au_id - $au_lname au_fname\n";
    }
   }
----可 以 看 出, 短 短 几 行 语 句, 就 可 以 完 成 对 数 据 库 的 操 作。

----以 上 从 几 个 方 面 对 在Linux 下 访 问MS SQL Server 数 据 库 进 行 了 说 明, 介 绍 了 基 本 的API 编 程、SQSH 命 令 行 访 问、Perl 访 问。 其 实, 在Linux 下 还 可 采 用 其 他 方 式 进 行 访 问, 如 采 用 第 四 级 的JDBC 进 行 访 问, 这 时 除 了Java 和JDBC 外, 并 不 需 要 其 他 软 件( 具 体 信 息 可 访 问http://www.connectsw.com)。

时间: 2024-10-29 09:20:35

在Linux下访问MS SQL Server数据库的相关文章

在Linux下访问MS SQL Server数据库(转)

server|访问|数据|数据库 在Linux下访问MS SQL Server数据库 ---- Linux 作 为 一 个 免 费 的Unix 类 操 作 系 统, 以 其 开 放 性 源 代 码. 多 任 务.X window 等 特 点 为 众 多 的 用 户 所 采 用, 并 有 很 多 企 业 采 用Linux 来 作 为 其 内 部 网 的 全 功 能 服 务 器(WWW,FTP,Email.DNS). 企 业 的 内 部 网 不 仅 要 提 供 文 本 信 息 的 访 问, 还 要

在JSP中访问MS SQL Server数据库_JSP编程

下面介绍如何用SQL Server实现一个动态FAQ(常见问题及答案)网站.首先建立一个数据库faq,其中的表faqs有字段id(int,自动增量,并设为主关键字).subject(varchar,200).answers(text).这个表中可以存放一些编程知识的常见问题及答案.然后,在Control Panel(控制面板)的ODBC Datasource模块中加入System DSN,取名faq,并指向faq数据库.创建一个JavaBean,名为faq.java,并保存在C:\JBuilde

Dotnet总结(2)--访问ms sql server 数据库基类--2

server|访问|数据|数据库 // 测试数据库链接         public static bool TestDBConnect(string strDSN)         {             bool bReturn = true;             SqlConnection oSqlConnection = new SqlConnection(strDSN);             int iTmp = oSqlConnection.ConnectionTimeo

使用unidac 在linux 上无驱动直接访问MS SQL SERVER

随着delphi 10.2 开始了对Linux 的重新支持.devart 也迅速的发布了unidac 7.0, 最大的特性就是支持linux和MongoDB. 并有了其他更新: In this release we added such significant features as: The new UniDAC version includes a new MongoDB provider which allows you to work with a cross-platform docu

MS SQL Server数据库查询优化及分页算法

server|分页|数据|数据库|算法|优化 探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页.以下代码说明了我们实例中数据库的"红头文件"一表的部分数据结构:CREATE TABLE [dbo].[TGongwen] (    --TGongwen是红头文件表名    [Gid] [int] IDENTITY (1, 1) NOT NULL ,--本表的id号,也是主键    [title] [varchar] (80) COLLATE

探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页

探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页.以下代码说明了我们实例中数据库的一表的部分数据结构: CREATE TABLE [dbo].[TGongwen] (    --TGongwen是红头文件表名    [Gid] [int] IDENTITY (1, 1) NOT NULL ,--本表的id号,也是主键    [title] [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,  --红头文件的

sql server-C# 程序访问本地SQL SERVER数据库 没有问题,但无法访问远程SQL SERVER数据库

问题描述 C# 程序访问本地SQL SERVER数据库 没有问题,但无法访问远程SQL SERVER数据库 C# 程序访问本地SQL SERVER 没有问题,但无法访问远程SQL SERVER 报错 (Failed to load resource: the server responded with a status of 404 (Not Found))未能加载资源:服务器回应状态404(未找到) ----之前都能远程连接SQL SERVER 但不知为什么突然就报这样的错,这是什么异常原因导

php 如何连接MS SQL Server 数据库

php教程 如何连接MS SQL Server 数据库教程 下面是连接到MSSQL服务器数据库代码. <?php $myServer = "localhost"; $myUser = "your_name"; $myPass = "your_password"; $myDB = "examples"; //connection to the database $dbhandle = mssql_connect($mySe

Windows和Linux系统下perl连接SQL Server数据库的方法_perl

本文将提供一些perl连接Microsoft SQL Server数据库的实例.perl脚本运行在Windows和Linux平台. Windows平台 如果在Windows平台下运行perl脚本,建议使用依赖DBI的两个模块包,提供标准的数据库接口模块. DBD::ODBC DBD::ADO 使用DBD::ODBC 如果选用DBD::ODBC,下面的实例代码将展示如何连接到SQL Server数据库: 复制代码 代码如下: use DBI;   # DBD::ODBC   my $dsn = '