2011-02-05 15 views
10

मेरे पास एक उपयोगकर्ता आईडी, पासवर्ड, डेटाबेस नाम और डेटासोर्स विवरण है। मैं पर्ल से एक एमएसएसक्यूएल सर्वर से कनेक्ट करना चाहता हूं। मैंने अभी निम्न स्निपेट का उपयोग किया है, लेकिन मुझे एक त्रुटि मिल रही है।मैं पर्ल से SQL सर्वर से कैसे कनेक्ट करूं?

#!/usr/bin/perl -w 
use strict; 

use DBI; 

my $data_source = q/dbi:ODBC:192.168.3.137/; 
my $user = q/bharani/; 
my $password = q/123456/; 

# Connect to the data source and get a handle for that connection. 
my $dbh = DBI->connect($data_source, $user, $password) 
    or die "Can't connect to $data_source: $DBI::errstr"; 

मेरे त्रुटि है:

DBI connect('192.168.3.137','bharani',...) failed: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (SQL-IM002) at my sqlconnect.pl line 14 
Can't connect to dbi:ODBC:192.168.3.137: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (SQL-IM002) at mysqlconnect.pl line 14. 

एसक्यूएल सर्वर एक और सिस्टम पर चलता, मैं सिर्फ उपरोक्त विवरण के साथ कनेक्ट करने की कोशिश कर रहा हूँ। कृपया मुझे बताएं, क्या मुझे अपने सिस्टम में डीएसएन बनाना चाहिए, या मेरे कार्यक्रम में कुछ भी गायब है?

उत्तर

17

आपकी कनेक्शन स्ट्रिंग में 'dbi:ODBC:' के बाद सब कुछ ओडीबीसी ड्राइवर को पास किया जाता है। सलाह के लिए

DBI->connect("dbi:ODBC:Driver={SQL Server};Server=192.168.3.137;UID=$user;PWD=$password") 

आप पर connectionstrings.com

+0

मैं सिर्फ अपने स्थानीय में DSN बनाया कुछ और विकल्प मिल सकता है THX, और यह लगता है काम किया,, इस साइट में नहीं मिल रहा हूँ: MSSQL के लिए, यह कनेक्शन स्ट्रिंग की कोशिश perl + mssql snippet, या तो .NET और db – Bharanikumar

+1

से संबंधित पाते हैं सबसे पहले यह 'डीबीआई: ओडीबीसी' नहीं होना चाहिए 'डीबीआई: ओडीबीसी'। दूसरा, 'डीबीआई: ओडीबीसी' ड्राइवर के पास पास होने के बाद सबकुछ कहने के लिए बिल्कुल सही नहीं है और निश्चित रूप से डेटाबेस नहीं है। यदि आप 'डीबीआई: ओडीबीसी: mydsn' का उपयोग करते हैं और एक ड्राइवर = या डीएसएन = तो डीबीडी :: ओडीबीसी पहले शामिल नहीं करते हैं तो पहले पुराने SQLConnect API को mydsn, उपयोगकर्ता नाम, पासवर्ड (ऐतिहासिक कारणों से) के साथ कॉल करता है। यदि आप 'डीबीआई: ओडीबीसी' डीबीडी :: ओडीबीसी के बाद कनेक्ट स्ट्रिंग में DRIVER = या DSN = डालते हैं तो एसक्यूएलकनेक्ट को अनदेखा करता है और यूडीआई/पीडब्ल्यूडी विशेषताओं को जोड़ने के बाद 'डीबीआई: ओडीबीसी' को SQLDriverConnect के बाद स्ट्रिंग पास करता है। – bohica

+0

@ बोहिका ने आपके सुझावों के उत्तर को अपडेट किया। उम्मीद है कि यह अब और अधिक सही है। – bvr

संबंधित मुद्दे