Когда нам нужен запрос хранимых процедур, которые мы используем «sp_helptext ИмяПроцедуры»Эквивалент sp_helptext для таблиц в SQL Server
Может что-то подобное сделать для таблиц?
Когда нам нужен запрос хранимых процедур, которые мы используем «sp_helptext ИмяПроцедуры»Эквивалент sp_helptext для таблиц в SQL Server
Может что-то подобное сделать для таблиц?
Не существует прямого эквивалента sp_helptext, который будет работать со столами.
Два метода, которые кажутся распространены на различных досках объявлений являются:
Существует статья о втором методе here
Несколько примеров первого метода можно увидеть на http://social.msdn.microsoft.com/Forums/en/transactsql/thread/28eeb603-1607-4b56-9461-3c0502cbec9c - это довольно привлекательный SQL, хотя –
@Dan F lol - Я думаю, вы проверили первый результат для «sp_helptext table» в google также :) –
@David: Ха-ха, да, у меня было подозрение, что это будет простой google :-) –
Пожалуйста, используйте followig запрос
выберите * из INFORMATION_SCHEMA.COLUMNS где table_name = 'TableName'
Используйте Alt + F1, в то время как имя таблицы выбрано в окне запроса.
Попробуйте с этим SP. Он не имеет всех обозначений, необходимых для таблицы, таких как первичные ключи и внешние ключи, но является началом.
CREATE PROCEDURE [dbo].[GeneradorTablas]
@Tabla AS VARCHAR(100)
AS
BEGIN
DECLARE @Script AS VARCHAR(MAX) ='CREATE TABLE [dbo].[' + @Tabla + '](' + CHAR(13)
DECLARE @Columnas As TABLE(indice INT, Columna VARCHAR(1000))
INSERT INTO @Columnas
SELECT
ROW_NUMBER()OVER(ORDER BY C.column_id),
' [' + C.name + '] [' + TY.name + ']' +
CASE WHEN
TY.name='nvarchar' OR
TY.name='nchar' OR
TY.name='char' OR
TY.name='varbinary' OR
TY.name='varchar' OR
TY.name='text' THEN
'(' + CASE WHEN C.max_length>0 THEN CAST(C.max_length AS VARCHAR(10)) ELSE 'MAX' END + ')' ELSE ''
END +
CASE WHEN C.is_identity=1 THEN ' IDENTITY(1,1)' ELSE '' END +
' ' + CASE WHEN C.is_nullable=1 THEN 'NULL' ELSE 'NOT NULL' END + ','
FROM SYS.COLUMNS AS C
INNER JOIN SYS.TYPES AS TY ON C.system_type_id=TY.system_type_id
INNER JOIN SYS.TABLES AS T ON C.object_id=T.object_id
WHERE [email protected]
DECLARE @i AS INT
SELECT @i=MIN(indice) FROM @Columnas
WHILE @i IS NOT NULL
BEGIN
SELECT @Script+=Columna+CHAR(13) FROM @Columnas WHERE [email protected]
SELECT @i=MIN(indice) FROM @Columnas WHERE indice>@i
END
SET @Script=SUBSTRING(@Script,0,LEN(@Script)-1) + CHAR(13) + ')'
PRINT @Script
END
GO
Довольно просто:
sp_help YourTable
@Biswo - я довольно много должен был догадаться, что ваш вопрос, это было очень трудно читать. Пожалуйста, подтвердите, что я правильно интерпретировал. –