在Linux下訪問MS SQL 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下的SQLServer,但提供了免費的CT-LIB的客戶端,這也可能是許多IT管理人員在為公司數據庫選型時不再考慮Oracle或Informix的理由之一。當然現在情況有所改變。?


Sybase公司發布的OpenClientforLinux是a.out格式的,在互聯網上有人將其轉化為ELF和動態鏈接的ELF格式,可從下列地址上尋找下載:http://www.mbay.net/~mpeppler。最好同時下載兩個版本,正常使用時采用動態鏈接的版本,但有的程序在編譯時可能需要一個庫(libblk.a),只在ELF里面包含。?

? ? ? ? ? ?   下載以后,鍵入如下命令展開(假設當前目錄是/usr/tmp):?

? ? ? ? ? ?   tarzxvflinuxelfdynamictar.gz?

? ? ? ? ? ?   然后將其移至/usr/local目錄:?

? ? ? ? ? ?   mvsybase/usr/local?

? ? ? ? ? ?   編譯和使用Sybase客戶端需要進行如下的設置:?

? ? ? ? ? ?   1.Interface文件舉例如下:?

? ? ? ? ? ?   MSSQL?

? ? ? ? ? ?   querytcpethermysql1433?

? ? ? ? ? ?   其中: MSSQL是客戶端使用的服務器名,以后引用MSSQL即可;?
mysql是服務器的地址或名字,如果是名字,則系統能夠查到其IP地址;?
1433是SQLServer的端口號,MicrosoftSQLServer的缺省值是1433,Sybase是5000。?

? ? ? ? ? ?   2.SYBASE環境變量,內容是Sybase客戶端所在的目錄:?

? ? ? ? ? ?   ExportSYBASE=/usr/local/sybase?

? ? ? ? ? ?   3.如果編譯Sybase客戶端中的例子,則還要設置環境變量SYBPLATFORM:?

? ? ? ? ? ?   exportSYBPLATFORM=Linux?

? ? ? ? ? ?   并且修改其頭文件中關于服務器名稱及用戶名和口令的描述。?

? ? ? ? ? ?   使用SQSH界面訪問SQLServer?

? ? ? ? ? ?   Sybase客戶端提供了xisql工具,但更多的人使用的是SQSH,SQSH是SQshell的縮寫,是改進了的isql,可從下列地址下載:http://www.voicenet.com/~gray/。當前的最新版本是1.6.0。假設下載后的文件放在/usr/tmp目錄下:?

? ? ? ? ? ? ? ?然后,將生成的可執行文件sqsh安裝到/usr/local/bin/目錄下。?

  Sqsh的使用如下:?

  #sqsh--Uusername--Ppassword--Sservername?
其中username和password是用戶名和口令,servername是在interface文件中定義的服務器名(如例子中的MSSQL)。?

  Sqsh是交互式的命令行界面,命令用輸入go來執行,命令如果較長可直接分成幾行書寫,以回車換行即可。?

  如下是一個例子:?

  1>usepubs?
2>go?
1>select*fromauthors?
2>go采用CT-LIB編寫應用程序?

  由于Sybase的Linux客戶端不提供DB-Library,所以應采用CT-Library來編寫應用程序,采用CT-Library編寫應用程序可參考例子,詳細的編程說明可以參考Sybase的說明。?

  利用Sybperl編寫應用程序?

  Sybperl是Sybase的Perl擴展,可利用Perl語言來訪問SQLServer,或者編寫CGI程序。?

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

  取得Sybperl的源代碼展開以后,需要修改一下CONFIG文件,以下是幾個參數:?

  下一個要修改的文件是PWD,這是用來進行測試的,將其中的服務器名、用戶名、用戶口令設置成自己的配置即可。然后進行編譯:?

perlMakefile.PL?
make;maketest;makeinstall ?

  安裝成功以后,即可使用Sybperl進行編程。下面是一個簡單的例子。?

#!/usr/bin/perl?
useSybase::CTlib; $dbh=newSybase::CTlib'sa','','MSSQL'; $dbh->ct_execute("selectau_id,au_lname, au_fnamefrompubs.dbo.authors");?
while($dbh->ct_results($restype)==CS_SUCCEED){?
nextunless$dbh->ct_fetchable($restype);?
while(($au_id,$au_lname,$au_fname)=$dbh->ct_fetch){?
print"$au_id-$au_lnameau_fname\n";?
}?
} ?

  可以看出,短短幾行語句,就可以完成對數據庫的操作。?

  以上從幾個方面對在Linux下訪問MSSQLServer數據庫進行了說明,介紹了基本的API編程、SQSH命令行訪問、Perl訪問。其實,在Linux下還可采用其他方式進行訪問,如采用第四級的JDBC進行訪問,這時除了Java和JDBC外,并不需要其他軟件。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92418.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92418.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92418.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機視覺-OpenCV

一下載第三方庫opencv-python3.4.18.65opencv-contrib-python3.4.18.65import cv2 # 讀取的格式是BGR numpy import numpy as np# 讀取圖片 a cv2.imread(generated_image.jpg) # 讀取圖片 print(a) # NumPy數組,其中存儲了讀取的圖像文件的像素值。cv2.imshow…

解決GitHub無法打開

找到下圖文件,用記事本打開 在最下方粘貼如下代碼140.82.113.4 github.com 20.205.243.166 github.com 140.82.112.4 github.com 151.101.1.6 github.global.ssl.fastly.net 185.199.108.153 assets-cdn.github.com 185.199.109.153 assets-cdn.github.com 185.199.…

AWS VPC Transit Gateway 可觀測最佳實踐

AWS VPC Transit Gateway 介紹 Amazon VPC Transit Gateway 是一個網絡傳輸中心,用于互連虛擬私有云 (VPCs) 和本地網絡。隨著您的云基礎設施在全球擴展,區域間對等互連使用 AWS 全球基礎設施將中轉網關連接在一起。 AWS 數據中心之間的所有網絡流量都在…

WeakRef的作用和使用

文章目錄WeakRef的作用和使用使用 WeakRef 避免強引用:原理與實踐一、WeakRef 的核心特性二、WeakRef 與強引用的對比三、WeakRef 的使用場景與示例1. 非關鍵數據緩存(避免緩存導致內存泄漏)2. 跟蹤對象生命周期(不干擾回收&#…

【華為機試】332. 重新安排行程

文章目錄332. 重新安排行程題目描述示例 1:示例 2:提示:解題思路核心思路算法流程圖歐拉路徑原理DFS回溯機制字典序優化策略復雜度分析算法實現要點完整題解代碼332. 重新安排行程 題目描述 給你一份航線列表 tickets ,其中 tic…

通信算法之300:CRC表生成方式-CRC8、CRC16、CRC32-輸入字節

"CRC表的MATLAB生成代碼"生成的查找表可以用于快速計算 CRC 值,通過查表法可以顯著提高 CRC 計算效率,尤其適用于需要處理大量數據的場景。下面是一個生成 CRC 查找表(CRC Table)的 MATLAB 代碼,該代碼可以根…

國內使用 npm 時配置鏡像源

在國內使用 npm 時,由于網絡限制可能會遇到下載速度慢或連接超時的問題。通過設置國內鏡像源,可以顯著提升下載速度和穩定性。以下是常用的國內 npm 鏡像源及其配置方法。 查詢當前使用的鏡像源 npm get registry 設置為淘寶鏡像源 npm config set reg…

一篇文章入門TCP與UDP(保姆級別)

🐳第一部分:什么是TCP和UDP? 先給結論:TCP 和 UDP 都是傳輸層協議,負責把數據從一臺電腦 “搬” 到另一臺電腦,但它們的 “搬運風格” 完全不同 📦 比喻:TCP 像 "打電話"&#xff…

2024年測繪程序設計比賽--空間探索性分析(數據為2025年第三次模擬數據)

想要在2026年參加這個比賽的&#xff0c;可以加入小編和其它大佬所建的群242845175一起來備賽&#xff0c;為2026年的比賽打基礎&#xff0c;也可以私信小編&#xff0c;為你答疑解惑一、讀寫文件 internal class Read {public static List<Point> pts new List<Poin…

力扣 hot100 Day68

84. 柱狀圖中最大的矩形 給定 n 個非負整數&#xff0c;用來表示柱狀圖中各個柱子的高度。每個柱子彼此相鄰&#xff0c;且寬度為 1 。 求在該柱狀圖中&#xff0c;能夠勾勒出來的矩形的最大面積。 class Solution { public:int largestRectangleArea(vector<int>&…

生成式AI時代,Data+AI下一代數智平臺建設指南

DataAI下一代數智平臺建設指南一、生成式AI時代的五大數據挑戰二、驅動DataAI平臺建設的核心要素主動選擇&#xff1a;構建競爭壁壘被動應對&#xff1a;解決現有痛點三、DataAI平臺的六大關鍵能力四、騰訊云DataAI產品方案與實踐1. 數據與AI協同層2. 開發與治理層3. 存儲與計算…

FPGA學習筆記——SPI通訊協議簡介

目錄 一、SPI通訊協議簡介 二、SPI物理層 三、SPI協議層 1.通訊模式 &#xff08;一&#xff09;模式零 &#xff08;二&#xff09;模式一 &#xff08;三&#xff09;模式二 &#xff08;四&#xff09;模式三 2.通訊流程 一、SPI通訊協議簡介 SPI&#xff08;Seria…

JavaScript核心概念解析:從基礎語法到對象應用

導語&#xff1a;本文系統梳理JavaScript的核心知識框架&#xff0c;適用于編程入門學習者。內容涵蓋基礎語法、數據類型、函數應用及內置對象&#xff0c;幫助讀者構建清晰的JS知識體系。一、語言基礎與執行原理瀏覽器執行機制渲染引擎&#xff1a;解析HTML/CSS&#xff08;如…

在 Kotlin 中使用函數類型和 lambda 表達式

參考官方文檔: https://developer.android.google.cn/codelabs/basic-android-kotlin-compose-function-types-and-lambda?hl=zh-cn#0 1、 將函數存儲在變量中 作為一種一級結構,函數也屬于數據類型,因此,可以將函數存儲在變量中、將函數傳遞到函數,以及從函數返回函數…

計算機硬件組成原理

&#x1f9e0; 一、計算機的硬件組成&#xff1a;五大核心部件 根據“馮諾依曼體系結構”&#xff0c;現代計算機主要由這 5大部分組成&#xff1a;部件作用通俗解釋1?? 運算器&#xff08;ALU&#xff09;負責算術和邏輯運算會加減乘除和做判斷的“計算工廠”2?? 控制器&a…

告別 window.open,擁抱全新浮窗體驗!

深入了解 Document Picture-in-Picture API&#xff0c;并對比 Modal 的最佳使用場景在前端開發中&#xff0c;我們經常會遇到這樣的需求&#xff1a;彈出一個浮動窗口來顯示一些實時信息、工具欄或視頻內容。過去我們會用 window.open()&#xff0c;后來越來越多的開發者傾向于…

Python爬蟲實戰:研究weiboSpider技術,構建新浪微博數據采集系統

1. 引言 1.1 研究背景 在信息時代,社交媒體已成為人們獲取信息、表達觀點的重要渠道。微博作為其中的典型代表,擁有龐大的用戶群體和活躍的內容生態。截至 2023 年底,微博月活躍用戶數已超過 5.8 億,日均發博量達數千萬條,數據涵蓋社會熱點、公眾情緒、消費偏好等多維度…

HashMap初始化容量為10,還未添加數據時,它的實際容量是多少?

在Java中&#xff0c;當使用 new HashMap<>(10) 初始化一個容量為10的 HashMap 但尚未添加任何數據時&#xff0c;其實際容量&#xff08;底層數組的長度&#xff09;不是10&#xff0c;而是16。原因如下&#xff1a;關鍵機制解析&#xff1a;容量必須是2的冪HashMap要求…

前端開發:CSS(2)—— 選擇器

前面我們初步學習了CSS&#xff0c;對其有了基本的認識。下面我們來具體學習CSS中的選擇器。 目錄 選擇器的種類 1.基礎選擇器 &#xff08;1&#xff09;標簽選擇器 &#xff08;2&#xff09;類選擇器 &#xff08;3&#xff09;id選擇器 &#xff08;4&#xff09;通…

人工智能2.0時代的人才培養和通識教育

目錄引言&#xff1a;從"機器模仿"到"智能協同"的時代跨越一、人工智能2.0的技術演進&#xff1a;從規則到大模型的三次躍遷1. 人工智能0.0&#xff08;1956-2006&#xff09;&#xff1a;規則驅動的"專家系統時代"2. 人工智能1.0&#xff08;20…