@Phil: ¿No quiere decir que su tabla tiene dos (2) columnas, la columna PK de aumento automático y una columna AdminName? Si solo tiene una columna donde va el AdminName, el AdminName es el PK y, por supuesto, no puede aumentar automáticamente una cadena. ¿Esperan las reglas de negocio que establezca un nombre de usuario de Windows totalmente calificado como clave principal? Eso sería viable y tendría sentido, porque entonces no necesitaría un índice único alternativo en la columna AdminName.
Pero si su tabla tiene dos columnas, no una:
En SQLServer, el autoincremento es parte de la definición de tabla / columna. Usted define la columna como un número entero y luego también la convierte en una columna de identidad, especificando el incremento, generalmente 1, pero podría ser 2 o 5 o 10 o lo que sea. Para insertar una fila, simplemente inserte los valores de las otras columnas y no haga nada con la columna PK:
insert into T
(foo)
values('bar')
Su proceso almacenado que realiza la inserción puede hacer que SCOPE_IDENTITY sea un valor RETURN o SCOPE_IDENTITY se puede devolver al cliente como un parámetro OUT.
PS SCOPE_IDENTITY () devuelve el valor de identidad autoincrementado generado más recientemente en el ámbito actual; no genera el siguiente valor de identidad.
EDITAR:
Presumiblemente, su tabla Administradores contiene un conjunto de administradores. Pero si no tiene ninguna columna que no sea la columna de clave primaria entera, no hay forma de identificar a los administradores; lo único que puede hacer es distinguirlos entre sí. Eso no te lleva muy lejos. Pero si su tabla de administrador tenía alguna de las siguientes estructuras:
ID INTEGER PRIMARY KEY AUTOINCREMENT
windowsusername varchar(50) (unique index)
O
windowsusername varchar(50) primary key
podría hacer referencia a la tabla del administrador desde otras tablas, y las claves externas serían SIGNIFICATIVAS. Y eso es precisamente lo que le falta a una tabla que consta de una sola columna de números enteros: significado.
Al tener dos columnas, puede hacer que un procedimiento almacenado haga esto:
insert into Administrators
(windowsusername)
values('mydomain\someusername');
return SCOPE_IDENTITY();
y su programa-cliente recuperaría como valor de retorno el ID autoincrementado que se había generado automáticamente y asignado a la fila recién insertada. Este enfoque es la práctica habitual y me atrevería a decir que se considera una "mejor práctica".
PD: Mencionas que no sabías cómo "insertar un valor" si "no tenías nada que insertar". Hay una contradicción ahí. Si no tiene nada que insertar, ¿por qué hacerlo? ¿Por qué crearía, digamos, un nuevo registro de CLIENTE si no sabe absolutamente nada sobre el cliente? ¿No es su nombre, su ciudad, su número de teléfono, nada?