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

Откуда: Чебаркуль
Сообщений: 3708
Хочу запросить текст вью:

SELECT OBJECT_DEFINITION (OBJECT_ID(N'dbo.v_ps_value')) AS [Definition]; 


Возвращает только часть текста, т.е.

create  VIEW [dbo].[v_ps_value]
AS
SELECT	property.id,
		property.descriptor_id,
		property.owner_id,
		property_value.value as value
FROM	dbo.property INNER JOIN	 dbo.property_value 


там еще есть on ...=.. и т.д.

Что не так?
8 май 18, 13:55    [21395865]     Ответить | Цитировать Сообщить модератору
 Re: OBJECT_DEFINITION возвращает только часть кода  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
смотрите в ssms в гриде?
8 май 18, 14:09    [21395910]     Ответить | Цитировать Сообщить модератору
 Re: OBJECT_DEFINITION возвращает только часть кода  [new]
Eleanor
Member

Откуда:
Сообщений: 2875
Увеличение длины вывода в опциях ssms не помогает?
Tools -> Options... -> Query Results -> SQL Server -> Results to... -> Maximum Characters...
8 май 18, 14:14    [21395922]     Ответить | Цитировать Сообщить модератору
 Re: OBJECT_DEFINITION возвращает только часть кода  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
Дедушка
смотрите в ssms в гриде?


и в гриде, и в тексте.
Там и длина <200 символов
8 май 18, 14:16    [21395926]     Ответить | Цитировать Сообщить модератору
 Re: OBJECT_DEFINITION возвращает только часть кода  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
Ролг Хупин,

если знаете, что вам хватит 64к измените дефолтное значение в настройках редактора
если нужно больше стандартный способ конвертить в xml
8 май 18, 14:19    [21395935]     Ответить | Цитировать Сообщить модератору
 Re: OBJECT_DEFINITION возвращает только часть кода  [new]
iap
Member

Откуда: Москва
Сообщений: 46981
Что возвращает
SELECT LEN(OBJECT_DEFINITION (OBJECT_ID(N'dbo.v_ps_value')) AS [Definition]);
?
8 май 18, 14:19    [21395938]     Ответить | Цитировать Сообщить модератору
 Re: OBJECT_DEFINITION возвращает только часть кода  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
iap
Что возвращает
SELECT LEN(OBJECT_DEFINITION (OBJECT_ID(N'dbo.v_ps_value')) AS [Definition]);
?


299
8 май 18, 14:31    [21395973]     Ответить | Цитировать Сообщить модератору
 Re: OBJECT_DEFINITION возвращает только часть кода  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Дедушка
Ролг Хупин,

если знаете, что вам хватит 64к измените дефолтное значение в настройках редактора
если нужно больше стандартный способ конвертить в xml

Поддерживаю мнение кошерной ссылкой.
8 май 18, 15:00    [21396056]     Ответить | Цитировать Сообщить модератору
 Re: OBJECT_DEFINITION возвращает только часть кода  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
Andy_OLAP
Дедушка
Ролг Хупин,

если знаете, что вам хватит 64к измените дефолтное значение в настройках редактора
если нужно больше стандартный способ конвертить в xml

Поддерживаю мнение кошерной ссылкой.



по "кошерной" ссылке копипастнул пример
---------
DECLARE @procdefn varchar(MAX); 
SET @procdefn =  'CREATE PROCEDURE dbo.prc_LongStringLength
AS
BEGIN
                                SELECT LEN(''' + REPLICATE ( CAST('<' AS varchar(MAX)), 65535) + ''');
END' ; 
EXEC ( @procdefn ); 
SELECT OBJECT_DEFINITION(OBJECT_ID('dbo.prc_LongStringLength')) AS [XML_F52E2B61-18A1-11d1-B105-00805F49916B];
------------
CREATE PROCEDURE dbo.prc_LongStringLength
AS
BEGIN
                                SELECT LEN('<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<<<<<<<<<<<<



Тоже криво.
Что не так?
9 май 18, 11:07    [21397589]     Ответить | Цитировать Сообщить модератору
 Re: OBJECT_DEFINITION возвращает только часть кода  [new]
_human
Member

Откуда:
Сообщений: 560
Ролг Хупин,

Results to Text(Ctrl-T)
exec sp_helptext 'dbo.View'

?
9 май 18, 12:35    [21397702]     Ответить | Цитировать Сообщить модератору
 Re: OBJECT_DEFINITION возвращает только часть кода  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
_human
Ролг Хупин,

Results to Text(Ctrl-T)
exec sp_helptext 'dbo.View'

?


всунул ту тестовую процедуру (из пред. поста) - выдала полностью, нормально.


Но мне надо в переменную, затем заменить CREATE на ALTER, нашел такое, но снова выдает только кусок процедуры

DECLARE
   @objName nvarchar(256);
SET @objName = N'dbo.prc_LongStringLength';
/* Script out objects if they exist*/
IF  EXISTS (SELECT *
              FROM sys.objects
              WHERE object_id
                    =
                    OBJECT_ID(@objName)
                AND type IN (N'FN', N'IF', N'TF', N'FS', N'FT',N'P'))
    BEGIN
        DECLARE
           @t TABLE(line nvarchar(max))
    END;
INSERT INTO @t
EXEC sp_helptext @objName;
DECLARE
   @ddl nvarchar(max);
SELECT @ddl = '';
/* Change CREATE to ALTER because this object all ready exists */
SELECT @ddl = @ddl + REPLACE(line, 'CREATE procedure', 'ALTER PROCEDURE')
  FROM @t;
PRINT @ddl;
GO
9 май 18, 13:01    [21397735]     Ответить | Цитировать Сообщить модератору
 Re: OBJECT_DEFINITION возвращает только часть кода  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
Но что интересно:
PRINT len(@ddl);--65640
9 май 18, 13:08    [21397746]     Ответить | Цитировать Сообщить модератору
 Re: OBJECT_DEFINITION возвращает только часть кода  [new]
_human
Member

Откуда:
Сообщений: 560
Ролг Хупин,

если у вас есть исходнІье файлІь с обьектами бд
возможно будет проще сделать ето в PowerShell/C#
9 май 18, 13:31    [21397811]     Ответить | Цитировать Сообщить модератору
 Re: OBJECT_DEFINITION возвращает только часть кода  [new]
_human
Member

Откуда:
Сообщений: 560
_human,

+
select definition from sys.sql_modules
where object_id = object_id(dbo.View')
9 май 18, 13:33    [21397817]     Ответить | Цитировать Сообщить модератору
 Re: OBJECT_DEFINITION возвращает только часть кода  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
_human
Ролг Хупин,

если у вас есть исходнІье файлІь с обьектами бд
возможно будет проще сделать ето в PowerShell/C#


не, это не проходит, надо по живой базе, тем более, их может быть несколько
9 май 18, 17:56    [21398133]     Ответить | Цитировать Сообщить модератору
 Re: OBJECT_DEFINITION возвращает только часть кода  [new]
iii2
Member

Откуда:
Сообщений: 202
Может там есть какие-то непечатные символы, типа bs или ff?
9 май 18, 22:04    [21398615]     Ответить | Цитировать Сообщить модератору
 Re: OBJECT_DEFINITION возвращает только часть кода  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3708
iii2
Может там есть какие-то непечатные символы, типа bs или ff?


В примере выше (prc_LongStringLength) нету каких-то стремных символов
10 май 18, 12:12    [21399539]     Ответить | Цитировать Сообщить модератору
 Re: OBJECT_DEFINITION возвращает только часть кода  [new]
Andy_OLAP
Member

Откуда: я знаю, что Хапоэль Беэр-Шева - чемпион
Сообщений: 3151
Ролг Хупин
Andy_OLAP
пропущено...

Поддерживаю мнение кошерной ссылкой.



по "кошерной" ссылке копипастнул пример
---------
DECLARE @procdefn varchar(MAX); 
SET @procdefn =  'CREATE PROCEDURE dbo.prc_LongStringLength
AS
BEGIN
                                SELECT LEN(''' + REPLICATE ( CAST('<' AS varchar(MAX)), 65535) + ''');
END' ; 
EXEC ( @procdefn ); 
SELECT OBJECT_DEFINITION(OBJECT_ID('dbo.prc_LongStringLength')) AS [XML_F52E2B61-18A1-11d1-B105-00805F49916B];
------------
CREATE PROCEDURE dbo.prc_LongStringLength
AS
BEGIN
                                SELECT LEN('<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
<<<<<<<<<<<<<<<<



Тоже криво.
Что не так?


Попробуйте волшебным образом.
DECLARE @procdefn varchar(MAX); 
SET @procdefn = '' -- таки да, пусть будет пустым
SET @procdefn  = @procdefn + convert(nvarchar(MAX),'CREATE PROCEDURE dbo.prc_LongStringLength
AS
BEGIN
                                SELECT LEN(''' + REPLICATE ( CAST('<' AS varchar(MAX)), 65535) + ''');
END') ; 
-- а вот теперь усекаться не должно
EXEC ( @procdefn ); 
-- ну и проверить можно
SELECT OBJECT_DEFINITION(OBJECT_ID('dbo.prc_LongStringLength')) AS [XML_F52E2B61-18A1-11d1-B105-00805F49916B];
10 май 18, 16:57    [21400594]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить