powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Звездочки в сообщении об ошибке
25 сообщений из 25, страница 1 из 1
Звездочки в сообщении об ошибке
    #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
Звездочки в сообщении об ошибке
    #39970991
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick74,

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

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

Вы случайно не хотите последовать их примеру?
...
Рейтинг: 0 / 0
Звездочки в сообщении об ошибке
    #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
Звездочки в сообщении об ошибке
    #39971007
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Звездочки в сообщении об ошибке
    #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
Звездочки в сообщении об ошибке
    #39971018
Фотография Nick74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm
- Мать мать мать, привычно отозвалось это....

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

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

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

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


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

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

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

В варианте без VIEW_METADATA и SCHEMABINDING ничего не меняется, та же проблема
...
Рейтинг: 0 / 0
Звездочки в сообщении об ошибке
    #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
Звездочки в сообщении об ошибке
    #39976042
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nick74,

да, у меня то же самое.
...
Рейтинг: 0 / 0
Звездочки в сообщении об ошибке
    #39976052
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не хватает
Код: sql
1.
GRANT UNMASK TO [TestUser123]
...
Рейтинг: 0 / 0
Звездочки в сообщении об ошибке
    #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
Звездочки в сообщении об ошибке
    #39976126
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PizzaPizza
Похоже либо глюк либо что то у вас включено на уровне базы и выше.
А у меня тоже репро звёздочки выдаёт. Сиквел установлен по дефолту, на домашней машине, ничего не менял.
После GRANT UNMASK исчезло.
...
Рейтинг: 0 / 0
Звездочки в сообщении об ошибке
    #39976134
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На Microsoft SQL Server 2017 (RTM-CU17) (KB4515579) - воспроизводится
На Microsoft SQL Server 2019 (RTM-CU5) (KB4552255) - нет

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


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


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