Microsoft.SqlServer.Management.Smo - как преобразовать тип данных столбца в представление sql - PullRequest
0 голосов
/ 05 марта 2020

Если я использую SQL объекты управления сервером, и у меня есть экземпляр объекта столбца, и я хочу сгенерировать из него скрипт T- SQL, как мне лучше всего преобразовать тип данных столбца в способ он должен быть представлен в SQL?

Класс Столбец имеет такие свойства, как:

  • SQL Тип данных сервера (VarChar, VarBinary, XML, et c)
  • Числовая точность
  • Числовая шкала
  • IsPrecise
  • Макс. Длина
  • IsNumericType
  • IsStringType

Мне немного сложно взглянуть на свойства и отобразить правильный текст для сценария T- SQL. DateTimeOffset, DateTime, Float и Int являются хорошими примерами. Все они имеют значения точности, масштаба и максимальной длины, но формат для визуализируемого типа данных совершенно другой.

Есть ли в библиотеке SMO функция для создания этой формы?

Примеры:

Type                IsNumericType   IsStringType    Precision   Scale   MaxLength   Rendered result
bigint              TRUE            FALSE           19          0       8           BigInt
bit                 FALSE           FALSE           1           0       1           Bit
char                FALSE           TRUE            0           0       10          Char(10)
datetime            FALSE           FALSE           23          3       8           DateTime
datetimeoffset      FALSE           FALSE           34          7       10          DateTimeOffset(7)
decimal             TRUE            FALSE           10          3       9           Decimal(10,3)
float               TRUE            FALSE           53          0       8           float
int                 TRUE            FALSE           10          0       4           int
uniqueidentifier    FALSE           FALSE           0           0       16          uniqueidentifier
varchar             FALSE           TRUE            0           0       10          VarChar(10)
varchar             FALSE           TRUE            0           0       -1          VarChar(MAX)
varbinary           FALSE           FALSE           0           0       10          VarBinary(10)
varbinary           FALSE           FALSE           0           0       -1          VarBinary(MAX)
xml                 FALSE           FALSE           0           0       -1          XML
...