SSMA 4.2 emulates an Oracle sequence as a table containing an IDENTITY column. Each sequence gets its own table, prefaced by the literal “$SSMA_seq_”. Thus, an Oracle sequence named SUPPLIER_SEQ would be migrated to a table in the target SQL Server database named “$SSMA_seq_SUPPLIER_SEQ”, defined as
CREATE TABLE [dbo].[$SSMA_seq_SUPPLIER_SEQ](
[id] [numeric](38, 0) IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
SSMA provides a scalar function used to emulate Oracle’s NEXTVAL:
The root cause and a fix for this issue are still under investigation. However, in the interim, we have identified the following workaround.
1) In SQL Server Management Studio, navigate to sysdb, Programmability, Scalar-valued Functions.
2) Right-click the function ssma_oracle.db_get_next_sequence_value and select ‘Modify.’
3) Alter the function to add the highlighted line (shown in context):
ALTER function [ssma_oracle].[db_get_next_sequence_value](@dbname sysname,
@name sysname) RETURNS integer
declare @fullname nvarchar(386)
set @fullname = ssma_oracle.db_get_full_name(@dbname,@schema,ssma_oracle.db_get_sequence_table(@name))