Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Звездочки в сообщении об ошибке / 25 сообщений из 25, страница 1 из 1
19.06.2020, 15:53
    #39970968
Nick74
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
С удивлением обнаружил, что при попытке вставить в числовое поле вьюшки текст вместо нормального сообщения

Код: sql
1.
-- Conversion failed when converting the varchar value '08:12' to data type int


пользователи без прав администратора получают сообщение вида
Код: sql
1.
-- Conversion failed when converting the ****** value '******' to data type ******


Подозреваю, что обычным пользователям не хватает доступа к каким-то метаданным по вьюшкам.
В каком направлении копать подскажите, пожалуйста.

MS SQL 2017
...
Рейтинг: 0 / 0
19.06.2020, 16:22
    #39970991
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
Nick74,

Я одно приложение, которое выдавали юзерам сообщение вида:

'Не удалось соединиться по строке соединения "Server=myServerAddress;Database=myDataBase;..."'

Вы случайно не хотите последовать их примеру?
...
Рейтинг: 0 / 0
19.06.2020, 16:28
    #39970996
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
Nick74
С удивлением обнаружил, что при попытке вставить в числовое поле вьюшки текст вместо нормального сообщения

Код: sql
1.
-- Conversion failed when converting the varchar value '08:12' to data type int



пользователи без прав администратора получают сообщение вида
Код: sql
1.
-- Conversion failed when converting the ****** value '******' to data type ******



Подозреваю, что обычным пользователям не хватает доступа к каким-то метаданным по вьюшкам.
В каком направлении копать подскажите, пожалуйста.

MS SQL 2017


Не знаю, что там за вью, но "*" наводят на мысль о

Код: sql
1.
select cast(10 as char(1))
...
Рейтинг: 0 / 0
19.06.2020, 16:52
    #39971007
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
...
Рейтинг: 0 / 0
19.06.2020, 17:15
    #39971016
Nick74
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
a_voronin
Не очень понял ваш вопрос, если честно.

msLex
Хм. Интересная мысль. Я думал это для всех вьюшек беда, оказалось что нет. Вот минимальный работающий вариант.
Логика сильно порезана, так что не ищите большого физического смысла в объектах.
Вьюшка TestUid используется в оригинале для построчной проверки прав пользователя и делает выборку из другой таблички, тут я немножко упростил все...
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
create table dbo.Test114 (ID int not null)
GO
create VIEW dbo.TestUid with VIEW_METADATA, SCHEMABINDING
AS
  SELECT ID
  FROM   dbo.Test114
  WHERE  ID = SUSER_ID()
GO
create view dbo.TestView114 with VIEW_METADATA
as
  select Test114.ID, TestUid.ID as TST
  from dbo.Test114
       left join dbo.TestUid on TestUid.id>0
GO
grant all on dbo.TestView114 to public 
GO
BEGIN TRY
  insert into dbo.TestView114(ID) values ('4:23')
END TRY
BEGIN CATCH
  print ERROR_MESSAGE();
END CATCH;
exec as user='some_not_admin_user'; -- Заменить на любого пользователя без прав администратора, но с доступом к базе
  BEGIN TRY
      insert into dbo.TestView114(ID) values ('4:23')
  END TRY
  BEGIN CATCH
    print ERROR_MESSAGE();
  END CATCH;
revert

drop view TestView114
drop view TestUid
drop table Test114



Результат
Код: html
1.
2.
3.
4.
5.
(0 rows affected)
Conversion failed when converting the varchar value '4:23' to data type int.

(0 rows affected)
Conversion failed when converting the ****** value '******' to data type ******.
...
Рейтинг: 0 / 0
19.06.2020, 17:17
    #39971018
Nick74
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
invm
- Мать мать мать, привычно отозвалось это....

Спасибо! ))) Осталось только понять что именно режется и в каких случаях и не опасно ли этот флажок включать

UPD: Походу SUSER_ID не при чем, замена на звездочки происходит при использовании вьюшек, которые обращаются к более чем одной таблице...
...
Рейтинг: 0 / 0
19.06.2020, 17:39
    #39971033
Nick74
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
UPD2: Уточню - замена идет, если вьюшка использует другую вьюшку. Пусть даже и на ту же таблицу.
...
Рейтинг: 0 / 0
19.06.2020, 19:33
    #39971064
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
Nick74
и не опасно ли этот флажок включать
Он у вас уже включен.
Выясняйте зачем его включили.
...
Рейтинг: 0 / 0
19.06.2020, 21:56
    #39971102
Nick74
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
invm
Не, не включал. И не включен.

Код: html
1.
2.
3.
4.
5.
dbcc tracestatus (3625)

TraceFlag  Status   Global  Session
----------  --------  -------  -------
3625        0	      0        0


попробовал включить проверить, говорит "извините, при рестарте сервера только"
...
Рейтинг: 0 / 0
19.06.2020, 22:09
    #39971104
Nick74
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
Проверил на тестовом сервере - включение/отключение флага 3625 не влияет на текст ошибки... Это не он :(
...
Рейтинг: 0 / 0
20.06.2020, 01:38
    #39971150
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
В порядке бреда - никакого маскирования данных не включено ?
...
Рейтинг: 0 / 0
20.06.2020, 06:23
    #39971156
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
PizzaPizza
В порядке бреда - никакого маскирования данных не включено ?
Да, я тоже про Dynamic Data Masking подумал. Очень уж похоже.
...
Рейтинг: 0 / 0
29.06.2020, 17:48
    #39974247
Nick74
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
PizzaPizza
неа, ничего такого не юзал.
Да и как включить маскирование на имена столбцов и их типы?
...
Рейтинг: 0 / 0
29.06.2020, 18:18
    #39974254
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
Nick74,

а где у вас такое?
в SSMS или в своем клиенте?
...
Рейтинг: 0 / 0
29.06.2020, 18:57
    #39974260
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
Почему именно value заполнено звездочками? Ладно, если нет доступа к таблице типов...
...
Рейтинг: 0 / 0
30.06.2020, 10:37
    #39974440
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
Nick74,

Сами поставили VIEW_METADATA и теперь возмущаетесь
...
Рейтинг: 0 / 0
03.07.2020, 18:39
    #39976030
Nick74
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
Критик ,
и там и там
...
Рейтинг: 0 / 0
03.07.2020, 18:40
    #39976031
Nick74
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
TaPaK,

В варианте без VIEW_METADATA и SCHEMABINDING ничего не меняется, та же проблема
...
Рейтинг: 0 / 0
03.07.2020, 18:59
    #39976037
Nick74
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
Ок, вот полный скрипт с созданием простого пользователя. Убрал все смущающие моменты, проще уже некуда. Выполнять можно на пустой базе.
Может кто-нибудь протестировать у себя?
У меня выдает следующее (На MS SQL 2017):

Код: html
1.
2.
3.
4.
5.
(0 rows affected)
Conversion failed when converting the varchar value '4:23' to data type int.

(0 rows affected)
Conversion failed when converting the ****** value '******' to data type ******.



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
create table dbo.Test114 (ID int not null)
GO
create VIEW dbo.TestUid
AS
  SELECT ID
  FROM   dbo.Test114
  WHERE  ID = 1
GO
create view dbo.TestView114
as
  select Test114.ID, TestUid.ID as TST
  from dbo.Test114
       left join dbo.TestUid on TestUid.id>0
GO
grant all on dbo.TestView114 to public 
GO
CREATE LOGIN TestUser123 WITH PASSWORD = 'TestPassword!123';  
CREATE USER TestUser123 FOR LOGIN TestUser123; 
-- ----------------------------------------------------------------------------
BEGIN TRY
  insert into dbo.TestView114(ID) values ('4:23')
END TRY
BEGIN CATCH
  print ERROR_MESSAGE();
END CATCH;
exec as user='TestUser123';
  BEGIN TRY
      insert into dbo.TestView114(ID) values ('4:23')
  END TRY
  BEGIN CATCH
    print ERROR_MESSAGE();
  END CATCH;
revert

drop view TestView114
drop view TestUid
drop table Test114
drop user TestUser123
drop login TestUser123
...
Рейтинг: 0 / 0
03.07.2020, 19:15
    #39976042
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
Nick74,

да, у меня то же самое.
...
Рейтинг: 0 / 0
03.07.2020, 19:46
    #39976052
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
Не хватает
Код: sql
1.
GRANT UNMASK TO [TestUser123]
...
Рейтинг: 0 / 0
03.07.2020, 23:48
    #39976106
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
На тестовой машинке

(0 rows affected)
Conversion failed when converting the varchar value '4:23' to data type int.
(0 rows affected)
Conversion failed when converting the varchar value '4:23' to data type int.


Microsoft SQL Server 2019 (RTM-CU4) (KB4548597) - 15.0.4033.1 (X64) Mar 14 2020 16:10:35 Copyright (C) 2019 Microsoft Corporation Developer Edition (64-bit) on Linux (Ubuntu 16.04.6 LTS) <X64>

Похоже либо глюк либо что то у вас включено на уровне базы и выше.
...
Рейтинг: 0 / 0
04.07.2020, 08:09
    #39976126
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
PizzaPizza
Похоже либо глюк либо что то у вас включено на уровне базы и выше.
А у меня тоже репро звёздочки выдаёт. Сиквел установлен по дефолту, на домашней машине, ничего не менял.
После GRANT UNMASK исчезло.
...
Рейтинг: 0 / 0
04.07.2020, 09:32
    #39976134
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
На Microsoft SQL Server 2017 (RTM-CU17) (KB4515579) - воспроизводится
На Microsoft SQL Server 2019 (RTM-CU5) (KB4552255) - нет

Видимо, пофикшенная бага.
...
Рейтинг: 0 / 0
04.07.2020, 11:01
    #39976144
Nick74
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Звездочки в сообщении об ошибке
Владислав Колосов
Не хватает
Код: sql
1.
GRANT UNMASK TO [TestUser123]


Да, это решает проблему, спасибо.
Видимо в 2019 до них дошло, что маскировать сообщения об ошибке не лучшая идея )))
Вопрос закрыт.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Звездочки в сообщении об ошибке / 25 сообщений из 25, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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