Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / metadata visibility / 18 сообщений из 18, страница 1 из 1
28.06.2018, 12:59
    #39667107
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
metadata visibility
господа сейчас нашел какое то странное поведение sp_help

у когонибудь она работает по sp_hexadecimal?

репро

Код: 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.
use master;
go
if object_id('[dbo].[sp_hexadecimal]', N'P') is not null drop procedure [dbo].[sp_hexadecimal];
go
CREATE OR ALTER PROCEDURE [dbo].[sp_hexadecimal]
    @binvalue varbinary(256),
    @hexvalue varchar (514) OUTPUT
AS
DECLARE @charvalue varchar (514)
DECLARE @i int
DECLARE @length int
DECLARE @hexstring char(16)
SELECT @charvalue = '0x'
SELECT @i = 1
SELECT @length = DATALENGTH (@binvalue)
SELECT @hexstring = '0123456789ABCDEF'
WHILE (@i <= @length)
BEGIN
  DECLARE @tempint int
  DECLARE @firstint int
  DECLARE @secondint int
  SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))
  SELECT @firstint = FLOOR(@tempint/16)
  SELECT @secondint = @tempint - (@firstint*16)
  SELECT @charvalue = @charvalue +
    SUBSTRING(@hexstring, @firstint+1, 1) +
    SUBSTRING(@hexstring, @secondint+1, 1)
  SELECT @i = @i + 1
END

SELECT @hexvalue = @charvalue
go

sp_help N'sp_hexadecimal'





и я чето не понимаю по sp_help_revlogin ну или любой другой пользовательской процедурку в мастере оно работает. а тут возникает
Код: sql
1.
2.
сообщение: 15009, уровень: 16, состояние: 1, процедура: sp_help, строка: 79 [строка начала пакета: 1]
The object 'sp_hexadecimal' does not exist in database 'master' or is invalid for this operation.



под sysadmin!
...
Рейтинг: 0 / 0
28.06.2018, 13:05
    #39667113
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
metadata visibility
felix_ff,

авторCREATE OR ALTER

Вы большой фантазёр.
...
Рейтинг: 0 / 0
28.06.2018, 13:06
    #39667115
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
metadata visibility
Владислав Колосов,

Microsoft SQL Server 2016 (SP2) (KB4052908) - 13.0.5026.0 (X64)
Mar 18 2018 09:11:49
Copyright (c) Microsoft Corporation
Enterprise Edition: Core-based Licensing (64-bit) on Windows Server 2012 R2 Standard 6.3 <X64> (Build 9600: ) (Hypervisor)
...
Рейтинг: 0 / 0
28.06.2018, 13:11
    #39667116
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
metadata visibility
Владислав КолосовВы большой фантазёр.
вы просто отстали от жизни
...
Рейтинг: 0 / 0
28.06.2018, 13:18
    #39667128
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
metadata visibility
msLex,

Вах! Сижу в своем болоте SQL2012...
...
Рейтинг: 0 / 0
28.06.2018, 13:31
    #39667141
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
metadata visibility
Владислав Колосов,

так не суть важно как создать процедурку.

на версиях ниже sp_help тоже вываливается в ошибку по sp_hexadecimal? у меня сейчас просто под рукой только 16 интансы
...
Рейтинг: 0 / 0
28.06.2018, 13:36
    #39667147
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
metadata visibility
sp_help вашу процедуру не знает, т.к. она не системная
...
Рейтинг: 0 / 0
28.06.2018, 13:37
    #39667149
Eleanor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
metadata visibility
felix_ff,

Дело не в sp_help, а в sp_hexadecimal - мне даже не удается её переименовать, выдается ошибка
Either the parameter @objname is ambiguous or the claimed @objtype (OBJECT) is wrong. (Microsoft SQL Server, Error: 15248)
...
Рейтинг: 0 / 0
28.06.2018, 13:45
    #39667154
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
metadata visibility
Eleanor,

такое впечатление что где то жестких хардкод в функции object_id
потому что в sp_help используется инструкция
select @objid = object_id, @sysobj_type = type from sys.all_objects where object_id = object_id(@objname)

но я никак понять не могу, потому что просто если выполнять отдельную инструкцию строка возвращается, а по профайлеру смотреть в процедурке он строку не возвращает.
...
Рейтинг: 0 / 0
28.06.2018, 13:52
    #39667162
Eleanor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
metadata visibility
felix_ffтакое впечатление что где то жестких хардкод
Хардкод по имени sp_hexadecimal?
Если создать такую же процедуру hexadecimal_2, то с ней всё работает - sp_help, переименование.
А sp_hexadecimal - особенная в любой БД.
...
Рейтинг: 0 / 0
28.06.2018, 14:03
    #39667166
Eleanor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
metadata visibility
felix_ff,

Кстати, если посмотреть в системную базу Resource, то там есть процедура sp_hexadecimal.
Возможно, поэтому и возникает ошибка "the parameter @objname is ambiguous"
...
Рейтинг: 0 / 0
28.06.2018, 14:44
    #39667189
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
metadata visibility
Что тут скажешь, MS не зря предупреждали не создавать пользовательские процедуры с названием sp_.
...
Рейтинг: 0 / 0
28.06.2018, 16:28
    #39667247
Eleanor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
metadata visibility
felix_ff,

Из той же серии конфликта с системными ХП:

Если создать процедуру dbo.sp_db_ebcdic277_2, то при выполнении EXEC или sp_help будет находиться не она, а системная sys.sp_db_ebcdic277_2.
Sp_rename находит обе процедуры и не понимает, какую из них выбрать.
И это несмотря на то, что вы явно указываете схему dbo в имени процедуры.

Если создавать ХП в другой схеме, не в dbo, то конфликта с системными ХП нет.
...
Рейтинг: 0 / 0
28.06.2018, 16:36
    #39667252
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
metadata visibility
Eleanorfelix_ff,

Кстати, если посмотреть в системную базу Resource, то там есть процедура sp_hexadecimal.
Возможно, поэтому и возникает ошибка "the parameter @objname is ambiguous"

странно подцепил mssqlsystemresource и не нашел там этой процедурки
...
Рейтинг: 0 / 0
28.06.2018, 16:40
    #39667253
Eleanor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
metadata visibility
felix_ff,

select * from sys.procedures where name = 'sp_hexadecimal' - нечего нет?
В SSMS она в секции Stored Procedures -> System Stored Procedures
...
Рейтинг: 0 / 0
28.06.2018, 16:47
    #39667261
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
metadata visibility
Eleanor,

имя базы изменено, иначе он не дает подцепить.
...
Рейтинг: 0 / 0
28.06.2018, 16:57
    #39667272
Eleanor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
metadata visibility
felix_ff,

У меня все эти запросы находят нужную ХП, не находит только object_id('sp_hexadecimal').
Возможно, дело в версии… У меня Resource взят из Microsoft SQL Server 2008 R2. Кто их знает, удалили, например, эту процедуру в новых версия, а где-то в метаданных упоминание sp_hexadecimal осталось.
...
Рейтинг: 0 / 0
29.06.2018, 09:50
    #39667495
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
metadata visibility
Eleanor,

Мой косяк походу, аттачил на инстанс sqllocaldb там видимо что то с ограничениями редакции.
сейчас примапил resource на полноценный инстанс там действительно есть процедурка в схеме.

вообщем приблизительно тогда картина вырисовывается.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / metadata visibility / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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