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

Откуда: Москва
Сообщений: 2022
Я в принципе знаю как. И делаю это таким запросом:
select OBJECT_DEFINITION(Object_ID)
from sys.procedures

Но есть одно НО.
На сервере есть пара МЕГА-процедур: их исходный текст около 80кб(!)
Какое счастье, что их писал не я :)

По непонятным для меня причинам, текст обрезается на первых 43 679 байтах (если скопировать в .txt)
Хотя select LEN(OBJECT_DEFINITION(MEGA_OBJECT))  = 80кб

Кто нибудь может объяснить - что это ?
SMSS нормально же их вытаскивает...
26 янв 16, 19:39    [18732508]     Ответить | Цитировать Сообщить модератору
 Re: Как запросом получить полный исходный текст Сторед Процедуры ?  [new]
komrad
Member

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

use master 
go
select text 
from sys.syscomments 
where id=object_id('sp_helptext')
order by colid
go
26 янв 16, 19:43    [18732527]     Ответить | Цитировать Сообщить модератору
 Re: Как запросом получить полный исходный текст Сторед Процедуры ?  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Valery_B
если скопировать в .txt
Скопировать чем?
SELECT OBJECT_DEFINITION(OBJECT_ID(N'MEGA_OBJECT','P'));
Результат - NVARCHAR(MAX) - это больше гигабайта.
26 янв 16, 20:50    [18732796]     Ответить | Цитировать Сообщить модератору
 Re: Как запросом получить полный исходный текст Сторед Процедуры ?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31446
Valery_B
Я в принципе знаю как. И делаю это таким запросом:
select OBJECT_DEFINITION(Object_ID)
from sys.procedures
Так и надо.

Valery_B
По непонятным для меня причинам, текст обрезается на первых 43 679 байтах (если скопировать в .txt)
Ошибка в программе копирования. Нужно найти другую.
27 янв 16, 02:30    [18733748]     Ответить | Цитировать Сообщить модератору
 Re: Как запросом получить полный исходный текст Сторед Процедуры ?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
sqlcmd .....q 'SELECT OBJECT_DEFINITION(OBJECT_ID(N'MEGA_OBJECT','P'))' -o'c:\\1.txt' 
?
27 янв 16, 11:01    [18734548]     Ответить | Цитировать Сообщить модератору
 Re: Как запросом получить полный исходный текст Сторед Процедуры ?  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Maxx
sqlcmd .....q 'SELECT OBJECT_DEFINITION(OBJECT_ID(N'MEGA_OBJECT','P'))' -o'c:\\1.txt' 

?
А кавычки удвоить?
27 янв 16, 11:02    [18734551]     Ответить | Цитировать Сообщить модератору
 Re: Как запросом получить полный исходный текст Сторед Процедуры ?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
iap
А кавычки удвоить?

да сиеж на коленке так сказать.... думаю ТС сам умеет кавычки удваивать
27 янв 16, 11:04    [18734558]     Ответить | Цитировать Сообщить модератору
 Re: Как запросом получить полный исходный текст Сторед Процедуры ?  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
Valery_B,

Результат в SSMS в грид выводите? Тогда 80 Кб не получить - максимум 64. Если в текст, то максимум 8 Кб
И настройки свои проверьте: Tools --> Options --> Query Results --> Results to Grid и Results to Text.
27 янв 16, 11:26    [18734692]     Ответить | Цитировать Сообщить модератору
 Re: Как запросом получить полный исходный текст Сторед Процедуры ?  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
invm
Valery_B,

Результат в SSMS в грид выводите? Тогда 80 Кб не получить - максимум 64. Если в текст, то максимум 8 Кб
И настройки свои проверьте: Tools --> Options --> Query Results --> Results to Grid и Results to Text.
Однако:
Valery_B
SMSS нормально же их вытаскивает...
27 янв 16, 11:28    [18734705]     Ответить | Цитировать Сообщить модератору
 Re: Как запросом получить полный исходный текст Сторед Процедуры ?  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
iap
invm
Valery_B,

Результат в SSMS в грид выводите? Тогда 80 Кб не получить - максимум 64. Если в текст, то максимум 8 Кб
И настройки свои проверьте: Tools --> Options --> Query Results --> Results to Grid и Results to Text.
Однако:
Valery_B
SMSS нормально же их вытаскивает...

Автор, наверное, имеет в виду, что SSMS нормально их вытаскивает через интерфейс - всплывающее меню "Script as CREATE", а через запрос - не вытаскивает. Тогда рекомендация посмотреть в настройки для Query Results имеет смысл.

Со своей стороны добавлю - данные больше определенных размеров я вывожу, приводя к XML (даже если там не XML) - в результатах грида для поля типа XML размер сильно выше и проблем обычно не возникает.
27 янв 16, 11:30    [18734723]     Ответить | Цитировать Сообщить модератору
 Re: Как запросом получить полный исходный текст Сторед Процедуры ?  [new]
o-o
Guest
iap
invm
Valery_B,

Результат в SSMS в грид выводите? Тогда 80 Кб не получить - максимум 64. Если в текст, то максимум 8 Кб
И настройки свои проверьте: Tools --> Options --> Query Results --> Results to Grid и Results to Text.
Однако:
Valery_B
SMSS нормально же их вытаскивает...

это он не про *результат запроса*
а про SCRIPT PROCEDURE AS...,
к-ое не в окно результата выводится, а в окно запроса/файл/clipboard
27 янв 16, 11:31    [18734724]     Ответить | Цитировать Сообщить модератору
 Re: Как запросом получить полный исходный текст Сторед Процедуры ?  [new]
Valery_B
Member

Откуда: Москва
Сообщений: 2022
Спасибо всем кто ответил!

alexeyvg
Ошибка в программе копирования. Нужно найти другую.

Даже не знаю что сказать... Я нажимаю пункт "Copy" в сплывающем меню SMSS. Хоткей - CTRL+C
invm
Результат в SSMS в грид выводите? Тогда 80 Кб не получить - максимум 64.

Да в грид. Т.е. это ограничение грида ?
Minamoto
Автор, наверное, имеет в виду, что SSMS нормально их вытаскивает через интерфейс - всплывающее меню "Script as CREATE", а через запрос - не вытаскивает.

Да, именно это я и имел ввиду.

Я пытался скопировать из грида строчки, длинна некоторых из них была более 64кб.
Если я правильно понял, то это ограничение грида SMSS ? И если выводить всё нарямую в файл, то должно быть ОК ?
Вчера на часах уже было 22:00 с копейками, я просто дропнул эти ХП(Они всё равно на тестовом сервере) и пошёл домой...
27 янв 16, 14:46    [18735941]     Ответить | Цитировать Сообщить модератору
 Re: Как запросом получить полный исходный текст Сторед Процедуры ?  [new]
Valery_B
Member

Откуда: Москва
Сообщений: 2022
Maxx
думаю ТС сам умеет кавычки удваивать

Нее, это могут делать только бородатые разработчики, от 80 лвл и выше:))
27 янв 16, 14:48    [18735955]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить