SQL Server 2012: set a column to only use a single case? Is there a way to tell SQL Server 2012 to store both A and a as A (or both A and a as a) for some given column such that every insert statement does not need to have UPPER() in it?
You can do this silently using an INSTEAD OF trigger:

CREATE TRIGGER dbo.tr_table_name
  ON dbo.table_name
  INSTEAD OF INSERT
AS
BEGIN
  SET NOCOUNT ON;
  INSERT dbo.table_name(col1, col2, col_you_care_about)
    SELECT col1, col2, UPPER(col_you_care_about)
    FROM inserted;
END
GO


If you want to raise an error, you can use a CHECK constraint:

CREATE TABLE dbo.blart(a VARCHAR(32));

ALTER TABLE dbo.blart ADD CONSTRAINT ck_col
  CHECK (CONVERT(VARBINARY(32), a) = CONVERT(VARBINARY(32),UPPER(a)));
GO

INSERT dbo.blart(a) VALUES('A'); -- succeeds
GO

INSERT dbo.blart(a) VALUES('a'); -- fails


Result:


  Msg 547, Level 16, State 0
  The INSERT statement conflicted with the CHECK constraint "ck_col". The conflict occurred in database "dba", table "dbo.blart", column 'a'.


But I have to agree with @swasheck above - what difference does it make how it's stored? If you just want it displayed in upper case, do that at rendering time, not storage time.