INT128, wide NUMERIC / DECIMAL |
INT128 becomes DECIMAL(38,0). NUMERIC / DECIMAL retain their family and scale; precision is based on Firebird storage capacity and capped at 38. |
A 39-digit value will not fit. Resolve the capacity warning before loading; values outside the target range are refused, not silently truncated. |
CHAR, VARCHAR, text BLOBs |
Within target length limits, CHAR becomes NCHAR and VARCHAR becomes NVARCHAR. Text BLOBs become NVARCHAR(MAX); wider CHAR columns also use NVARCHAR(MAX), while wider VARCHAR columns use NTEXT. |
Lengths account for UTF-16 storage; the bounded Unicode types stop at 4,000 units. Choose the correct source connection character set and test target collation and sorting. |
TIMESTAMP, TIMESTAMP WITH TIME ZONE |
DATETIME2(4) and DATETIMEOFFSET(4), respectively. |
An offset is not a named time zone. Check application logic that depends on zone names or daylight-saving rules. |
DECFLOAT, TIME WITH TIME ZONE |
DECFLOAT(16) becomes VARCHAR(24), DECFLOAT(34) becomes VARCHAR(42), and TIME WITH TIME ZONE becomes VARCHAR(19). |
SQL Server has no matching native types. The application must parse these values if it needs arithmetic or time comparisons. |
| Generators and trigger-assigned keys |
The table's key values are transferred; Firebird trigger logic is not translated into T-SQL. |
Plan SQL Server identity or sequence generation separately and verify the next generated value before inserts resume. |