Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SMSS: переделать SELECT * в список полей разделённых #13 WITH (NOLOCK) ?  [new]
Valery_B
Member

Откуда: Москва
Сообщений: 2018
Хочу что бы SMSS сам передел запрос
SELECT *
FROM Products

на
SELECT      ProductsID, 
            Description,
            Amount,
            ADate
            и т.д.

FROM        Products WITH (NOLOCK)

И ещё желательно, что бы сам WITH (NOLOCK) дописал)

Я пока знаю только способ через "Design in query", но для него надо за мышкой тянутся и потом много раз Enter жать.
Может есть какой хоткей ?
17 май 17, 13:32    [20489538]     Ответить | Цитировать Сообщить модератору
 Re: SMSS: переделать SELECT * в список полей разделённых #13 WITH (NOLOCK) ?  [new]
Владислав Колосов
Member

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

NOLOCK какбэ устарел.
Читайте про SET TRANSACTION ISOLATION LEVEL.

Столбцы можно перетянуть мышью все из обозревателя объектов или Ctrl-Shoft-Q OK.
17 май 17, 13:53    [20489660]     Ответить | Цитировать Сообщить модератору
 Re: SMSS: переделать SELECT * в список полей разделённых #13 WITH (NOLOCK) ?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Владислав Колосов
Valery_B,

NOLOCK какбэ устарел.
Читайте про SET TRANSACTION ISOLATION LEVEL.

ой, а TABLOCK хоть не устарел?
17 май 17, 13:59    [20489700]     Ответить | Цитировать Сообщить модератору
 Re: SMSS: переделать SELECT * в список полей разделённых #13 WITH (NOLOCK) ?  [new]
a_voronin
Member

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


А таблиц сколько? Ручками лень?
17 май 17, 14:12    [20489775]     Ответить | Цитировать Сообщить модератору
 Re: SMSS: переделать SELECT * в список полей разделённых #13 WITH (NOLOCK) ?  [new]
buven
Member

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

Правой кнопкой мыши на таблице -> "Select top 1000 rows" - выдаст вам полный список полей в селекте.
Дальше можно макросом в Notepad++.
17 май 17, 14:18    [20489803]     Ответить | Цитировать Сообщить модератору
 Re: SMSS: переделать SELECT * в список полей разделённых #13 WITH (NOLOCK) ?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7780
TaPaK
Владислав Колосов
Valery_B,

NOLOCK какбэ устарел.
Читайте про SET TRANSACTION ISOLATION LEVEL.

ой, а TABLOCK хоть не устарел?


Ирония? Или тоже "мануал не читал, но осуждаю"? :)
17 май 17, 14:38    [20489905]     Ответить | Цитировать Сообщить модератору
 Re: SMSS: переделать SELECT * в список полей разделённых #13 WITH (NOLOCK) ?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Владислав Колосов
TaPaK
пропущено...

ой, а TABLOCK хоть не устарел?


Ирония? Или тоже "мануал не читал, но осуждаю"? :)
мне не повезло вашу бредятину прочитать
17 май 17, 14:39    [20489910]     Ответить | Цитировать Сообщить модератору
 Re: SMSS: переделать SELECT * в список полей разделённых #13 WITH (NOLOCK) ?  [new]
a_voronin
Member

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

NOLOCK какбэ устарел.
Читайте про SET TRANSACTION ISOLATION LEVEL.

Столбцы можно перетянуть мышью все из обозревателя объектов или Ctrl-Shoft-Q OK.


Если вы пишите запрос где-то в Analysys Services, то не сможете воспользоваться SET TRANSACTION ISOLATION LEVEL
17 май 17, 14:44    [20489931]     Ответить | Цитировать Сообщить модератору
 Re: SMSS: переделать SELECT * в список полей разделённых #13 WITH (NOLOCK) ?  [new]
invm
Member

Откуда: Москва
Сообщений: 9351
Владислав Колосов
NOLOCK какбэ устарел.
Читайте про SET TRANSACTION ISOLATION LEVEL.
Т.е. ситуация, когда, например, только одну таблицу в запросе нужно "грязно" читать - априори говнокод и ошибка проектирования?
17 май 17, 15:18    [20490117]     Ответить | Цитировать Сообщить модератору
 Re: SMSS: переделать SELECT * в список полей разделённых #13 WITH (NOLOCK) ?  [new]
Valery_B
Member

Откуда: Москва
Сообщений: 2018
Владислав Колосов
Valery_B,
Ctrl-Shoft-Q OK.


Да, это и есть Design in query или как его там по имени.
Можно разделить текст так, что бы по полю на каждой строке было?
17 май 17, 15:46    [20490244]     Ответить | Цитировать Сообщить модератору
 Re: SMSS: переделать SELECT * в список полей разделённых #13 WITH (NOLOCK) ?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Valery_B
Владислав Колосов
Valery_B,
Ctrl-Shoft-Q OK.


Да, это и есть Design in query или как его там по имени.
Можно разделить текст так, что бы по полю на каждой строке было?

смотрите в сторону надстроек на SSMS, может какие и умеют например SSMSBoost и подобные штуки. Родного функционала нет, и за всю сознательную практику не понадобился
17 май 17, 15:48    [20490247]     Ответить | Цитировать Сообщить модератору
 Re: SMSS: переделать SELECT * в список полей разделённых #13 WITH (NOLOCK) ?  [new]
Valery_B
Member

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

Правой кнопкой мыши на таблице -> "Select top 1000 rows" - выдаст вам полный список полей в селекте.
Дальше можно макросом в Notepad++.

Да, так тоже можно, но не удобно - таблицу надо ещё найти, и попасть мышом)
И в таком случае, запятые стоят не стой стороны.
17 май 17, 15:51    [20490257]     Ответить | Цитировать Сообщить модератору
 Re: SMSS: переделать SELECT * в список полей разделённых #13 WITH (NOLOCK) ?  [new]
invm
Member

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

Напишите процедуру или функцию, которая по метаданным таблицы будет генерировать запрос нужной вам формы со всеми шашечками и рюшечками.
17 май 17, 16:13    [20490389]     Ответить | Цитировать Сообщить модератору
 Re: SMSS: переделать SELECT * в список полей разделённых #13 WITH (NOLOCK) ?  [new]
buven
Member

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

Напишите процедуру или функцию, которая по метаданным таблицы будет генерировать запрос нужной вам формы со всеми шашечками и рюшечками.


Такое наверно сойдет

DECLARE @tableName VARCHAR (64)
DECLARE @columnList VARCHAR (MAX)

SET @TableName = 'TBL'
SET @columnList = ''

SELECT
  @columnList = @columnList  + CASE WHEN @columnList <> '' THEN ', ' + char(13) + Char(10) ELSE '' END + name 
 FROM dbo.syscolumns
WHERE id IN (SELECT id FROM dbo.sysobjects WHERE name = @tableName AND xtype = 'U' )

DECLARE @s VARCHAR(MAX)
SET @s='SELECT ''SELECT ' + @columnList + ' FROM  '+ @TableName + ' WITH(nolock) where FIELD in (10,13) '''
EXEC(@s)
17 май 17, 17:36    [20490791]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить