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

Откуда:
Сообщений: 17
Подключаюсь к удаленному инстансу SQL под SQL-аккаунтом и выполняю такой запрос:
select * from [TESTdb]..[REPRO]
where itemgroupid = 'Материалы'
Выдает 37 строчек.

Подключаюсь туда же Windows-авторизацией доменной учеткой и запрос выдает 0 строчек.


Если пишу:
select * from [TESTdb]..[REPRO]
where itemgroupid <> 'Материалы'


то выдает и строки Материалы, и строки не Материалы, всю таблицу.
Никаких начальных и концевых пробелов в столбце нет.

Подскажите, в чем проблема?
19 окт 17, 14:42    [20882636]     Ответить | Цитировать Сообщить модератору
 Re: Запрос выдает лишние строки при SQL авторизации, и нормально при Windows-авторизации  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
collation укажи в сравнении
19 окт 17, 14:45    [20882654]     Ответить | Цитировать Сообщить модератору
 Re: Запрос выдает лишние строки при SQL авторизации, и нормально при Windows-авторизации  [new]
newbie876454
Member

Откуда:
Сообщений: 17
SELECT DATABASEPROPERTYEX('TESTdb', 'Collation') --взял название отсюда

select * from [REPRO]
where itemgroupid = 'Материалы' collate SQL_Latin1_General_CP1_CI_AS

select * from [REPRO]
where itemgroupid collate SQL_Latin1_General_CP1_CI_AS = 'Материалы'  collate SQL_Latin1_General_CP1_CI_AS


Не помогло.
19 окт 17, 14:56    [20882719]     Ответить | Цитировать Сообщить модератору
 Re: Запрос выдает лишние строки при SQL авторизации, и нормально при Windows-авторизации  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
N'.....'
19 окт 17, 15:03    [20882767]     Ответить | Цитировать Сообщить модератору
 Re: Запрос выдает лишние строки при SQL авторизации, и нормально при Windows-авторизации  [new]
newbie876454
Member

Откуда:
Сообщений: 17
Спасибо, помогло.
Впервые столкнулся с необходиомстью указывать unicode-строку в явном виде.
19 окт 17, 15:08    [20882791]     Ответить | Цитировать Сообщить модератору
 Re: Запрос выдает лишние строки при SQL авторизации, и нормально при Windows-авторизации  [new]
o-o
Guest
newbie876454
Подключаюсь к удаленному инстансу SQL под SQL-аккаунтом и выполняю такой запрос:
select * from [TESTdb]..[REPRO]
where itemgroupid = 'Материалы'
Выдает 37 строчек.

Подключаюсь туда же Windows-авторизацией доменной учеткой и запрос выдает 0 строчек.


Если пишу:
select * from [TESTdb]..[REPRO]
where itemgroupid <> 'Материалы'


то выдает и строки Материалы, и строки не Материалы, всю таблицу.
Никаких начальных и концевых пробелов в столбце нет.

Подскажите, в чем проблема?


дефолтные базы у этих логинов разные?
когда запрос вернул 37 строк, он был выполнен в контексте базы,
имеющей кириллический коллэйшен.
а вот когда 0 строк, в той базе, откуда выполнялся, коллэйшен был явно не тот.
в результате ваша кириллица в студии была еще кириллицей,
но на сервер пришла в виде вопросительных знаков.

мораль:
надо было просто сменить контекст базы.
но не на TESTdb, где латиница, а на ту базу, в которой вы выполнили запрос и получили 37 строк
19 окт 17, 15:26    [20882893]     Ответить | Цитировать Сообщить модератору
 Re: Запрос выдает лишние строки при SQL авторизации, и нормально при Windows-авторизации  [new]
newbie876454
Member

Откуда:
Сообщений: 17
Да, все так и есть.
Контекст влияет.
Не заметил это сперва.
25 окт 17, 18:28    [20900122]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить