Without a transaction you will acquire and release locks multiple times on the table. Better to start a transaction, get an exclusive lock on the table, then do all the work.
set xact_abort on
begin transaction
UPDATE client with (tablockx)
SET ns1_sign = coalesce(ns1_sign,0),
ns2_sign = coalesce(ns2_sign,0)
where ns1_sign is null or ns2_sign is null
ALTER TABLE [client] ALTER COLUMN [ns1_sign] BIT NOT NULL
ALTER TABLE [client] ALTER COLUMN [ns2_sign] BIT NOT NULL
ALTER TABLE [dbo].[client] ADD CONSTRAINT [DF_Client_NS1_sign] DEFAULT ((0)) FOR [ns1_sign]
ALTER TABLE [dbo].[client] ADD CONSTRAINT [DF_Client_NS2_sign] DEFAULT ((0)) FOR [ns2_sign]
commit transaction