Ciao ragazzi, ho 1 dubbio che spero mi possiate risolvere. Ho 1 stupidissima stored procedure:

codice:
ALTER PROCEDURE spCreaReferenteDaAliasEsistente
(
		@IDAlias int,
		@IDReferente int OUTPUT,
		@IDAzienda int		
)

 AS	
	 Begin transaction
		INSERT INTO rAziendePersoneReferenti (IDPersona,IDAzienda) VALUES (@IDAlias,@IDAzienda)
		SET @IDReferente =SCOPE_IDENTITY()
	
	Commit transaction
che viene richiamata così:

codice:
Dim myConnectionString As String
        myConnectionString = "xxxxxxxxxxxxxxxxxxxxxxx"
        Dim myConnection As System.Data.SqlClient.SqlConnection = New Data.SqlClient.SqlConnection(myConnectionString)

        Dim cmd As New Data.SqlClient.SqlCommand("spCreaReferenteDaAliasEsistente", myConnection)
        cmd.CommandType = Data.CommandType.StoredProcedure
        cmd.Parameters.AddWithValue("@IDAzienda", Request.Params("IDAlias"))
        cmd.Parameters.AddWithValue("@IDAlias", Me.HiddenFieldIDPersona.Value)


        Dim workParam As Data.SqlClient.SqlParameter
        workParam = cmd.Parameters.Add("@IDReferente", Data.SqlDbType.Int, 32)
        workParam.Direction = Data.ParameterDirection.Output


        myConnection.Open()
        cmd.ExecuteNonQuery()
        myConnection.Close()

    Dim IDReferente As Integer = cmd.Parameters("@IDReferente").Value
Posso accedere tranquillamente al valore di IDReferente creato (la chiave primaria autoincrementale della tabella rAziendePersoneReferenti è IDReferente), ma purtroppo nella tabella mi vengono creati due record successivi con uguale IDAzienda e IDAlias).

La causa penso stia nella riga
codice:
SET @IDReferente =SCOPE_IDENTITY()
perchè togliendola mi viene creato solo 1 record, ma purtroppo a me serve il parametro di output IDReferente per ulteriori elaborazioni. Perchè si verifica questo problema e come posso correggerlo? Grazie!