Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others


0 votes
in Technique[技术] by (71.8m points)

sql server - Issue with RobotFramwork Connect To Database Using Custom Params

Getting Below Error OperationalError: ('08001', '[08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server does not exist or access denied. (17) (SQLDriverConnect); [08001] [Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()). (53)'

    *** Settings ***
Documentation     Simple example using DBLibrary.
Library           SeleniumLibrary
Library           DatabaseLibrary 
*** Variables ***
${DBHost_ConnectionString}  'DRIVER={SQL Server};SERVER="hostname";UID="uname";PWD="******";DATABASE="dbname"'   

*** Test Cases ***

Connect Database
    Connect To Database Using Custom Params    pyodbc    ${DBHost_ConnectionString}

I tried all the solutions over internet, like adding port to connection string, appending tcp before servername, e.t.c, Followed the implementation mentioned in the source code of dbapi https://github.com/franz-see/Robotframework-Database-Library/blob/master/src/DatabaseLibrary/connection_manager.py

 elif dbapiModuleName in ["pyodbc", "pypyodbc"]:
            dbPort = dbPort or 1433
            logger.info('Connecting using : %s.connect(DRIVER={SQL Server};SERVER=%s,%s;DATABASE=%s;UID=%s;PWD=%s)' % (dbapiModuleName, dbHost, dbPort, dbName, dbUsername, dbPassword))
            self._dbconnection = db_api_2.connect('DRIVER={SQL Server};SERVER=%s,%s;DATABASE=%s;UID=%s;PWD=%s' % (dbHost, dbPort, dbName, dbUsername, dbPassword))

Any help should be appreciated.

Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

As a guess, you shouldn't surround your connection string with single quotes, as they become part of the connection string. Robot is not python, and robot is not the shell, so you don't normally need to quote strings.

*** Variables ***
${DBHost_ConnectionString}  DRIVER={SQL Server};SERVER="hostname";UID="uname";PWD="******";DATABASE="dbname"

It's not clear if you're literally using the string hostname and uname, etc., or if that's just boilerplate for the purpose of the question. You need to be passing the actual hostname and actual username and password.

You may not need the quotes around the other values, in which case it would look like this:

*** Variables ***
${DBHost_ConnectionString}  DRIVER={SQL Server};SERVER=hostname;UID=uname;PWD=******;DATABASE=dbname

Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share