powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / NULL SQLCMD
18 сообщений из 43, страница 2 из 2
NULL SQLCMD
    #40044549
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested,

В ssms
Код: sql
1.
2.
3.
4.
create table #tmp (s nvarchar(10) collate cyrillic_general_cs_as);
insert into #tmp(s) values (N'Abc'), (N'abc'); 
select * from #tmp where s like N'%ab%'; 
select * from #tmp where s like N'%ab%' collate cyrillic_general_ci_as;



В sqlcmd
Код: sql
1.
2.
3.
select serverproperty('Collation') as server_collation;
select databasepropertyex(db_name(), 'Collation') as db_collation;
select db_name() as db_name;


Мне не важно знать, как база называется. Главное, чтобы совпадало в ssms и sqlcmd.
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044724
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И также в ssms и sqlcmd к скрипту с табличкой #tmp добавьте запрос
Код: sql
1.
select * from #tmp where (s collate cyrillic_general_ci_as) like N'%ab%';


, что он вернёт
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044744
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

SQLCMD:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
server_collation
----------------
Cyrillic_General_CI_AS

(1 rows affected)
db_collation
------------
Cyrillic_General_CI_AS

(1 rows affected)
db_name
-------
ИМЯ_БД

(1 rows affected)
Msg 208, Level 16, State 1, Server АДРЕС_СЕРВЕРА, Line 1
Invalid object name '#tmp'.



MSSMS:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
(2 rows affected)
s
----------
abc

(1 row affected)

s
----------
Abc
abc

(2 rows affected)

s
----------
Abc
abc

(2 rows affected)



Плохо понимаю, что происходит и как Вы диагностируете проблему (но не сомневаюсь, что получится)
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044751
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested
Код: sql
1.
Invalid object name '#tmp'.


Понятно. Надо как с детьми...

Фраза
env
к скрипту с табличкой #tmp добавьте запрос

означает - добавьте в скрипт
Код: sql
1.
2.
3.
4.
create table #tmp (s nvarchar(10) collate cyrillic_general_cs_as);
insert into #tmp(s) values (N'Abc'), (N'abc'); 
select * from #tmp where s like N'%ab%'; 
select * from #tmp where s like N'%ab%' collate cyrillic_general_ci_as;


запрос
Код: sql
1.
select * from #tmp where (s collate cyrillic_general_ci_as) like N'%ab%';


и выполните скрипт целиком в sqlcmd
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044753
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested
Код: sql
1.
2.
3.
db_name
-------
ИМЯ_БД


совпадает с аналогичным вызовом через ssms?
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044765
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env, Я вас неправильно понял. Вот полный отчет

на этот скрипт
Код: sql
1.
2.
3.
4.
5.
create table #tmp (s nvarchar(10) collate cyrillic_general_cs_as);
insert into #tmp(s) values (N'Abc'), (N'abc'); 
select * from #tmp where s like N'%ab%'; 
select * from #tmp where s like N'%ab%' collate cyrillic_general_ci_as;
select * from #tmp where (s collate cyrillic_general_ci_as) like N'%ab%';


Результат в MSSMS:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
(2 rows affected)
s
----------
abc

(1 row affected)

s
----------
Abc
abc

(2 rows affected)

s
----------
Abc
abc

(2 rows affected)



Результат в SQLCMD:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
(2 rows affected)
s
-

(0 rows affected)
s
-

(0 rows affected)
s
-

(0 rows affected)



На этот скрипт
Код: sql
1.
2.
3.
select serverproperty('Collation') as server_collation;
select databasepropertyex(db_name(), 'Collation') as db_collation;
select db_name() as db_name;



Результат в MSSMS:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
server_collation
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Cyrillic_General_CI_AS

(1 row affected)

db_collation
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Cyrillic_General_CI_AS

(1 row affected)

db_name
--------------------------------------------------------------------------------------------------------------------------------
МОЯ_БД

(1 row affected)



Результат в SQLCMD:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
server_collation
----------------
Cyrillic_General_CI_AS

(1 rows affected)
db_collation
------------
Cyrillic_General_CI_AS

(1 rows affected)
db_name
-------
МОЯ_БД

(1 rows affected)



Да, результаты совпадают
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044778
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested,

Кажется у меня кончаются идеи. Попробуйте добавить в параметры вызова sqlcmd
Код: sql
1.
-f 65001
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044786
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

Если ставить в самое начало-выходной файл пустой, если ставить в конец, то:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
server_collation
----------------
Cyrillic_General_CI_AS

(1 rows affected)
db_collation
------------
Cyrillic_General_CI_AS

(1 rows affected)
db_name
-------
SAS_LTL

(1 rows affected)
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044816
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested,

Меня больше результат скрипта с #tmp табличкой интересует с этим параметром утилиты
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044827
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env, На скрипт с параметром
Код: sql
1.
-f 65001


Код: sql
1.
2.
3.
4.
5.
create table #tmp (s nvarchar(10) collate cyrillic_general_cs_as);
insert into #tmp(s) values (N'Abc'), (N'abc'); 
select * from #tmp where s like N'%ab%'; 
select * from #tmp where s like N'%ab%' collate cyrillic_general_ci_as;
select * from #tmp where (s collate cyrillic_general_ci_as) like N'%ab%';


Таков результат:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
(2 rows affected)
s
-

(0 rows affected)
s
-

(0 rows affected)
s
-

(0 rows affected)
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044831
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested,

Чтобы не было недопонимания. Это результат запуска
Код: sql
1.
2.
3.
4.
5.
6.
sqlcmd -S адрес_сервера -d моя_БД -E -W -Q -f 65001
"create table #tmp (s nvarchar(10) collate cyrillic_general_cs_as);
insert into #tmp(s) values (N'Abc'), (N'abc'); 
select * from #tmp where s like N'%ab%'; 
select * from #tmp where s like N'%ab%' collate cyrillic_general_ci_as;
select * from #tmp where (s collate cyrillic_general_ci_as) like N'%ab%';"> file.txt


?
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044834
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

Код: sql
1.
2.
3.
4.
5.
6.
sqlcmd -S адрес_сервера -f 65001 -d моя_бд -E -s',' -W -Q 
"create table #tmp (s nvarchar(10) collate cyrillic_general_cs_as);
insert into #tmp(s) values (N'Abc'), (N'abc'); 
select * from #tmp where s like N'%ab%';
 select * from #tmp where s like N'%ab%' collate cyrillic_general_ci_as;
select * from #tmp where (s collate cyrillic_general_ci_as) like N'%ab%';" > file.txt


Вот свежак скопировал-вставил, добавил только переносы на новую строку для читабельности
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044837
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
Nevillested,
Код: sql
1.
2.
3.
4.
5.
6.
sqlcmd -S адрес_сервера -d моя_БД -E -W -Q -f 65001
"create table #tmp (s nvarchar(10) collate cyrillic_general_cs_as);
insert into #tmp(s) values (N'Abc'), (N'abc'); 
select * from #tmp where s like N'%ab%'; 
select * from #tmp where s like N'%ab%' collate cyrillic_general_ci_as;
select * from #tmp where (s collate cyrillic_general_ci_as) like N'%ab%';"> file.txt



Если ставить параметр -Q не непосредственно перед самим текстом моего запроса, то он дает пустой файл, т.е. как Вы показали.
Скопировал Ваш код, вставил, поправил свой адрес сервера, поправил БД, поменял местами -Q и -f 65001 такой же результат:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
(2 rows affected)
s
-

(0 rows affected)
s
-

(0 rows affected)
s
-

(0 rows affected)
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044896
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nevillested
Вот прямо-таки полный со всеми фильтрами
Жуть.

1. Облегчите жизнь себе и серверу и упростите запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
declare @a DATE set @a=cast(getdate() as date); 

SELECT top (1)   
 a.min_run,
 convert(varchar,(cast((a.max_run - a.min_run) as time)), 20) as work,
 a.max_run,
 t.statik 
FROM
 [table] t cross apply
 (
  select
   min(time_run), max(time_end)
  from
   [table]
  where
   cast(time_run as date) = @a and name like '%olga%' and name not like '%ivanova%'
 ) a(min_run, max_run);



2. Есть возможность получить планы выполнения?
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044920
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm
Nevillested
Вот прямо-таки полный со всеми фильтрами
Жуть.

1. Облегчите жизнь себе и серверу и упростите запрос
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
declare @a DATE set @a=cast(getdate() as date); 

SELECT top (1)   
 a.min_run,
 convert(varchar,(cast((a.max_run - a.min_run) as time)), 20) as work,
 a.max_run,
 t.statik 
FROM
 [table] t cross apply
 (
  select
   min(time_run), max(time_end)
  from
   [table]
  where
   cast(time_run as date) = @a and name like '%olga%' and name not like '%ivanova%'
 ) a(min_run, max_run);



2. Есть возможность получить планы выполнения?


Колдовство!
Я не понял нихрена с Вашего кода, надо сидеть прям разбираться как это вообще произошло.
Заменил на свои данные, ни шагу влево/вправо
Проверил в MSSQL-супер, данные такие же, как у меня
Проверил в sqlcmd-снова нулы...

UPD
Проверил опытным путем, косяк в where:
если я уберу
Код: sql
1.
name like '%olga%'


и все остальное оставлю-отрабатывает.

или если я уберу
Код: sql
1.
name not like '%ivanova%'


и все остальное оставлю-также отрабатывает.
пачиму...
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40044921
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm
Nevillested
Вот прямо-таки полный со всеми фильтрами
Жуть.

1. Облегчите жизнь себе и серверу и упростите запрос

Вот это я понимаю руки откуда надо)
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40045390
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал фильтр IN и перечислил конкретно нужные statik через запятую
Результат уже лучше:
Код: sql
1.
2.
3.
4.
5.
min_run'work'max_run'statik
---------'------------------'---------'-------------
Дата_время'Время'NULL'NICE!

(1 rows affected)


Теперь надо понять, почему даёт null в третьем столбце, хотя в mssql никакого нула на этот же запрос нету.
...
Рейтинг: 0 / 0
NULL SQLCMD
    #40045522
Nevillested
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nevillested
Попробовал фильтр IN и перечислил конкретно нужные statik через запятую
Результат уже лучше:
Код: sql
1.
2.
3.
4.
5.
min_run'work'max_run'statik
---------'------------------'---------'-------------
Дата_время'Время'NULL'NICE!

(1 rows affected)


Теперь надо понять, почему даёт null в третьем столбце, хотя в mssql никакого нула на этот же запрос нету.


Короче я немного ошибся, и все-таки работает и третий столбец.
Решение конечно через костыль, но всё же...решение
...
Рейтинг: 0 / 0
18 сообщений из 43, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / NULL SQLCMD
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]