2015-06-24 7 views
2

Я пытаюсь подключиться к локальному экземпляру SQL Server, работающему на моей машине. Я могу подключиться к локальному экземпляру с этим кодом с нашего сервера, но он не работает на моей локальной машине.Подключение к локальному экземпляру SQL Server

Я включил именованные каналы и все ips в конфигурации SQL Server.

код я использую выглядит следующим образом:

from pymssql import connect 
server = r'.\SQLEXPRESS2014' # I've also tried MORGANT-PC\SQLEXPRESS and SQLEXPRESS2014 
username = 'MyUserName' 
password = 'MyPassword' 
master_database_name = 'SuperSecretDatabase' 
port = 5000 
server_args = {'host': server, 'user': username, 'password': password, 
       'database': master_database_name, 'port': port} # I've tried having the first key be both host and server, because pymssql's docs are unclear on the difference. 
master_database = connect(**server_args) 

Если я использую имя экземпляра, я получаю эту ошибку:

pymssql.InterfaceError: Connection to the database failed for an unknown reason. 

Я установил порт 5000, так что я мог попробуйте подключиться к нему с

server = 127.0.0.1 
port = 5000 

который терпит неудачу с немного другим сообщением об ошибке:

pymssql.OperationalError: (20009, b'DB-Lib error message 20009, severity 9:\nUnable to connect: Adaptive Server is unavailable or does not exist\nNet-Lib error during Unknown error (10035)\n') 

Я прочитал кучу ответов здесь на SO, и большинство из них, кажется, указывают, что это проблема с FreeTDS, но я на ОС Windows 8.1, так что я не FreeTDS.

Я пытался соединиться с sqlcmd с именем экземпляра host \, и это прекрасно работает. Он также работает в SSMS.

Я попытался прохождения .\SQLEXPRESS2014 как для параметра host и server в pymssql.connect() и оба они не в состоянии с той же вышеупомянутой ошибкой.

Я кратко попытался использовать adodbapi, но я получаю точно такие же сообщения об ошибках.

+0

Ваш локальный хост именованный экземпляр? Ваше соединение подключается к именованному экземпляру. –

+0

Да, это так. Я не уверен, что вы даже можете установить сервер 2014 как неименованный экземпляр. Если вы посмотрите в вопросе, я также попытался подключиться к ip/port. –

ответ

0

Решение оказалось комбинацией вещей.

  1. Мне нужно было отключить все IP-адреса, кроме 127.0.0.1.
  2. мне нужно создать C: \ freetds.conf со следующим текстом:

    [global] port = 1433 tds version = 7.0

  3. мне нужно изменить учетную запись SQL мой экземпляр входит в систему с к LocalSystem.

0

Попробуйте подключиться к порту сервера SQL по умолчанию, равному 1433, а не 5000. И проверьте, что вы можете подключиться к правильному экземпляру, используя студию SQL mgmt.

+0

Я пробовал оба из них, и он отлично работает. SSMS работает даже с портом 5000. –

1

Да, 1433 с по умолчанию.

Это прекрасно работает для меня:

library(RODBC) 
dbconnection <- odbcDriverConnect("Driver=ODBC Driver 11 for SQL Server;Server=server_name; Database=db_name;Uid=; Pwd=; trusted_connection=yes") 
initdata <- sqlQuery(dbconnection,paste("select * from MyTable;")) 
odbcClose(channel) 
0

У меня была аналогичная проблема, со следующей ошибкой:

_mssql.MSSQLDatabaseException: (18456, b"Login failed for user 
'script_svc'.DB-Lib error message 20018, severity 14:\nGeneral SQL Server 
error: Check messages from the SQL Server\nDB-Lib error message 20002, 
severity 9:\nAdaptive Server connection failed\n") 

Пользователь Я установил был локальным пользователем на компьютере.

Решение для меня было положить ".\»Перед именем пользователя и затем признали его в качестве локального пользователя и позволил запрос работать.

Ваши результаты могут отличаться .. но я думал, что я хотел бы упомянуть его.

0

Вы пробовали использовать pyodbc вместо

import pyodbc 
cnxn = pyodbc.connect('DRIVER={ODBC Driver 13 for SQL Server};SERVER=SERVERNAME;DATABASE=testdb;UID=me;PWD=pass') 
cursor = cnxn.cursor() 
cursor.execute("select user_id, user_name from users") 
rows = cursor.fetchall() 
for row in rows: 
    print row.user_id, row.user_name 

не забудьте добавить драйвер ODBC для вашей ОС Windows Перейти к:. Панель управления> системы и безопасности> Администрирование> Источники данных ODBC

либо 32-разрядная или 64- в зависимости от вашего компьютера.

Затем вы нажимаете на системный DNS-файл. Если вы не видите какой-либо драйвер MySQL, вам нужно нажать ADD. Он отображает список, из этого списка выбирает драйвер MySQL.

Для меня это было ODBC Driver 13 for SQL Server. Нажмите «Готово». Как только вы это сделаете, вы должны изменить свою строку подключения в своем коде на соответствующий драйвер, который вы только что заполнили.

Источник: pyodbc + MySQL + Windows: Data source name not found and no default driver specified

Смежные вопросы