You don't list the column names in your INSERT command:
INSERT INTO MyTable VALUES ( ... )
So it expects a value for every column., which means that the engine tries to insert values in the column order of the CREATE or ALTER table that was last executed.
That's a bad idea, because subsequent ALTER TABLE statements can change that and your database integrity gets compromised.
In this case, it's even worse, since the first column is an IDENTITY column, and you can't write to that at all.
List your columns in the order that your parameters will be supplied, and it'll work, and be more future proof:
INSERT INTO MyTable (Column1, Column2, ... ) VALUES ( ... )
After new code supplied:
If I try your code in SSMS:
CREATE TABLE [dbo].[Table] (
[AssetNumber] INT NOT NULL IDENTITY,
[Utilizador] VARCHAR(50) NULL,
[Nome] VARCHAR(50) NULL,
[Disco] VARCHAR(50) NULL,
[Processador] VARCHAR(50) NULL,
[Memória] VARCHAR(50) NULL,
[Tipo] VARCHAR(50) NULL,
[Localização] VARCHAR(50) NULL,
CONSTRAINT [PK_Table] PRIMARY KEY ([AssetNumber])
insert into dbo.[Table] ([Utilizador], [Nome], [Disco], [Processador], [Memória], [Tipo], [Localização]) values ('@Utilizador', '@Nome', '@Disco', '@Processador', '@Memória', '@Tipo', '@Localização')
Then it inserts perfectly, and I get exactly what I expect when I query the table afterwards:
1 @Utilizador @Nome @Disco @Processador @Memória @Tipo @Localização
So ... start with SSMS, and check that you are using the right DB, the right table, and that the columns match with the CREATE statement you showed us.