Column definition for a SQL Server equivalent to Access BOOLEAN type
To address your concerns about BIT:


You can set your BIT column to NOT NULL.
You can use -1 when setting a BIT column to "true".
You can create a view that translates to -1, but +1 should be fine anyway unless your application explicitly checks for the numeric -1 (anything but zero should yield true in your client language).


CREATE TABLE dbo.foo(bar BIT NOT NULL, blat BIT NOT NULL);

INSERT dbo.foo SELECT -1, 0;

SELECT bar, blat, -CONVERT(SMALLINT, bar), -CONVERT(SMALLINT, blat) FROM dbo.foo;


Results:

bar   blat   
----  ----  ----  ----
1     0     -1    0


The nice thing about BIT over TINYINT/SMALLINT is that if you have between 1-8 BIT columns, they can fit into a single byte.

In all of these cases, you still aren't going to be able to say 

WHERE NOT BooleanColumn
-- or
WHERE !BooleanColumn


You will still have to say

WHERE BooleanColumn = 0