Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Почему так и что происходит. Объясните.  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 2326
Добрый день!
Проясните ситуацию.
Есть 2 SQL сервера в домене, дефолтные инстансы запущены от имени доменного пользователя.
Оба сервера в mixed auth, но пароли для sa разные.
srv1 sa pa$$1
srv2 sa pa$$2

соединяюсь c srv1
выполняю след запрос:
select * from OpenRowset('SQLOLEDB', 'DATASOURCE=srv2;Initial Catalog=master;uid=sa;pwd=pa$$2', 'select getdate()')
получаю
Login failed for user 'sa'.
меняю пароль на пароль sa сервера к которому подключен - все отлично!
и наоборот.
неважно как и кем подключен (виндовая авторизация в т.ч.)
естественно к srv1 sa с паролем pa$$2 подключиться невозможно, ровно как и наоборот.
что происходит голову сломал уже!
22 мар 18, 17:44    [21278524]     Ответить | Цитировать Сообщить модератору
 Re: Почему так и что происходит. Объясните.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7663
ShIgor,

select * from OpenRowset('SQLOLEDB', 'DATASOURCE=srv2;Initial Catalog=master;uid=sa;pwd=pa$$2', 'select @@SERVERNAME')?
22 мар 18, 18:45    [21278714]     Ответить | Цитировать Сообщить модератору
 Re: Почему так и что происходит. Объясните.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31331
Владислав Колосов
ShIgor,

select * from OpenRowset('SQLOLEDB', 'DATASOURCE=srv2;Initial Catalog=master;uid=sa;pwd=pa$$2', 'select @@SERVERNAME')?
+1
наверняка попутаны имена.
22 мар 18, 20:29    [21278843]     Ответить | Цитировать Сообщить модератору
 Re: Почему так и что происходит. Объясните.  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 2326
alexeyvg,

Ну, во-первых, спутать трудно, имена и близко не похожи. Во-вторых, не один раз, и не с одного места проверено прежде чем сюда писать.
22 мар 18, 21:14    [21278901]     Ответить | Цитировать Сообщить модератору
 Re: Почему так и что происходит. Объясните.  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 2326
А вот в такой нотации все норм:
select * from OpenRowset('SQLOLEDB', 'srv2';'sa';'pa$$2', 'select getdate()')
23 мар 18, 00:48    [21279202]     Ответить | Цитировать Сообщить модератору
 Re: Почему так и что происходит. Объясните.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31331
ShIgor
А вот в такой нотации все норм:
select * from OpenRowset('SQLOLEDB', 'srv2';'sa';'pa$$2', 'select getdate()')
То есть, сводя всё в одно место:
-- Нормально
select * from OpenRowset('SQLOLEDB', 'srv2';'sa';'pa$$2', 'select getdate()')

-- Ошибка
select * from OpenRowset('SQLOLEDB', 'DATASOURCE=srv2;Initial Catalog=master;uid=sa;pwd=pa$$2', 'select getdate()')

-- Нормально
select * from OpenRowset('SQLOLEDB', 'DATASOURCE=srv2;Initial Catalog=master;uid=sa;pwd=pa$$1', 'select getdate()')

Правильно?
23 мар 18, 10:00    [21279672]     Ответить | Цитировать Сообщить модератору
 Re: Почему так и что происходит. Объясните.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31331
То есть, сводя всё в одно место:

Запускаем следующие 3 скрипта с srv1:

-- Нормально
select * from OpenRowset('SQLOLEDB', 'srv2';'sa';'pa$$2', 'select getdate()')

-- Ошибка
select * from OpenRowset('SQLOLEDB', 'DATASOURCE=srv2;Initial Catalog=master;uid=sa;pwd=pa$$2', 'select getdate()')

-- Нормально
select * from OpenRowset('SQLOLEDB', 'DATASOURCE=srv2;Initial Catalog=master;uid=sa;pwd=pa$$1', 'select getdate()')

Правильно?

И ещё, замените select getdate() на select @@SERVERNAME
Хуже не будет, а дополнительно от ошибок застрахует.
23 мар 18, 10:03    [21279678]     Ответить | Цитировать Сообщить модератору
 Re: Почему так и что происходит. Объясните.  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 2326
alexeyvg,

да,
да,
да,

select * from OpenRowset('SQLOLEDB', 'DATASOURCE=srv2;Initial Catalog=master;uid=sa;pwd=pa$$1', 'select @@servername')
ответ srv1
select * from OpenRowset('SQLOLEDB', 'srv2';'sa';'pa$$2', 'select @@servername')
ответ srv2

и более того, есть srv3 у которого пароль sa совпадает с паролем sa srv1
select * from OpenRowset('SQLOLEDB', 'DATASOURCE=srv3;Initial Catalog=master;uid=sa;pwd=pa$$1', 'select @@servername')
ответ srv1
select * from OpenRowset('SQLOLEDB', 'srv3';'sa';'pa$$1', 'select @@servername')
ответ srv3
23 мар 18, 11:32    [21280077]     Ответить | Цитировать Сообщить модератору
 Re: Почему так и что происходит. Объясните.  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 2326
alexeyvg,

И... ТА-ДА!!!!

select * from OpenRowset('SQLOLEDB', 'SERVER=srv2;Initial Catalog=master;uid=sa;pwd=pa$$2', 'select @@servername')
ответ srv2
select * from OpenRowset('SQLOLEDB', 'srv2';'sa';'pa$$2', 'select @@servername')
ответ srv2

DATASOURCE (или DATA SOURCE) перестал понимать имя сервера!!!! интересно, с какого момента.
23 мар 18, 11:36    [21280098]     Ответить | Цитировать Сообщить модератору
 Re: Почему так и что происходит. Объясните.  [new]
так,
Guest
ShIgor,

кхе !

... ващета - Data Source - с "пробелом", т.е. ...
23 мар 18, 11:54    [21280186]     Ответить | Цитировать Сообщить модератору
 Re: Почему так и что происходит. Объясните.  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 2326
так,,

кхе, ващета
DATA SOURCE
DATASOURCE
SERVER
ADDRESS
ADDR
это синонимы
23 мар 18, 12:54    [21280434]     Ответить | Цитировать Сообщить модератору
 Re: Почему так и что происходит. Объясните.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7663
ShIgor,

у вас там кто-то в сорсах покопался или в hosts.
23 мар 18, 13:53    [21280760]     Ответить | Цитировать Сообщить модератору
 Re: Почему так и что происходит. Объясните.  [new]
так,
Guest
ShIgor
так,,

кхе, ващета
DATA SOURCE
DATASOURCE
SERVER
ADDRESS
ADDR
это синонимы

дык, как раз твоя ситуация показывает, что "не совсем" синонимы :)

Вот сделай всё "по нОуке"
автор
select * from OpenRowset('SQLOLEDB', 'DATASOURCE=srv2;Initial Catalog=master;uid=sa;pwd=pa$$1', 'select @@servername')

не DATASOURCE , а DATA SOURCE
не uid , а User Id
не pwd , а Password

что будет ?
23 мар 18, 13:58    [21280777]     Ответить | Цитировать Сообщить модератору
 Re: Почему так и что происходит. Объясните.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31331
ShIgor
это синонимы
Да там не разберёшь, как работает.
Лучше из connectionstring брать по ссылке выше.

Оно ещё при этом может игнорировать параметры, не говоря, что они некорректные
Поэтому правильно, что у вас сделаны разные пароли, а то можно что нибудь не там обновить :-)
23 мар 18, 14:10    [21280829]     Ответить | Цитировать Сообщить модератору
 Re: Почему так и что происходит. Объясните.  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 2326
так,,

не поверишь! все то же самое.
Если не Server или Address то, что DATASOURCE, что DATA SOURCE в любой комбинации с uid, User Id и т.п. все выполняется локально.
23 мар 18, 15:10    [21281102]     Ответить | Цитировать Сообщить модератору
 Re: Почему так и что происходит. Объясните.  [new]
так,
Guest
ShIgor
так,,

не поверишь! все то же самое.
Если не Server или Address то, что DATASOURCE, что DATA SOURCE в любой комбинации с uid, User Id и т.п. все выполняется локально.
нуу, хрень какая-то, значит :)

пс
но всё равно, "слитный" DATASOURCE нигде не упоминается ...
https://msdn.microsoft.com/en-gb/library/system.data.sqlclient.sqlconnection.connectionstring.aspx
Data Source
-or-
Server
-or-
Address
-or-
Addr
-or-
Network Address
23 мар 18, 16:13    [21281311]     Ответить | Цитировать Сообщить модератору
 Re: Почему так и что происходит. Объясните.  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 2326
так,,

слитный упоминается в ADOMD.NET

даже из документации получается, что у SQLOLEDB свойства DATA SOURCE не существует, так же как и Initial Catalog, User ID и Password. Это все свойства ADO.

для SQLOLEDB нужно использовать ADDRESS и/или SERVER, DATABASE, UID и PWD - тогда все как и ожидалось.
23 мар 18, 16:27    [21281355]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить